Protocol Architecture
# Protocol Architecture
Self Connect uses a federated architecture where multiple independent issuers can register attestations that map obfuscated identifiers to blockchain addresses.
## Core Components
```
┌─────────────────┐
│ User/Client │
└────────┬────────┘
│
├──────────────┐
│ │
v v
┌─────────────┐ ┌─────────────┐
│ ODIS │ │ Issuer │
│ (Privacy) │ │(Verification)│
└──────┬──────┘ └──────┬──────┘
│ │
└────────┬───────┘
│
v
┌──────────────────────┐
│ FederatedAttestations│
│ Smart Contract │
└──────────────────────┘
```
## FederatedAttestations Smart Contract
The `FederatedAttestations` contract is the on-chain registry for all attestation mappings. It stores attestations in a structure that allows:
* **Registration:** Issuers register mappings between obfuscated identifiers and addresses
* **Lookup:** Anyone can query attestations for a given obfuscated identifier
* **Multi-Issuer Support:** Attestations are organized by issuer, allowing trust-based filtering
* **Batch Operations:** Multiple attestations can be queried simultaneously
**Key Functions:**
```solidity
// Register an attestation as an issuer
function registerAttestationAsIssuer(
bytes32 identifier,
address account,
uint64 issuedOn
) external
// Lookup attestations for an identifier across multiple issuers
function lookupAttestations(
bytes32 identifier,
address[] calldata trustedIssuers
) external view returns (
uint256[] memory countsPerIssuer,
address[] memory accounts,
address[] memory signers,
uint64[] memory issuedOns,
uint64[] memory publishedOns
)
```
Deployed contract addresses for mainnet and Alfajores are listed in [Reference & Resources](/docs/self-connect/reference/#contract-addresses).
## Issuer Ecosystem
Issuers are independent entities that:
1. **Verify** user ownership of identifiers through their chosen method
2. **Request** obfuscated identifiers from ODIS
3. **Register** attestations to the FederatedAttestations contract
4. **Maintain** ODIS quota for continued operations
Applications choose which issuers to trust based on:
* Verification rigor
* Reputation
* Use case alignment
* Uptime and reliability
Self Connect uses a federated architecture where multiple independent issuers can register attestations that map obfuscated identifiers to blockchain addresses.
Core Components
┌─────────────────┐
│ User/Client │
└────────┬────────┘
│
├──────────────┐
│ │
v v
┌─────────────┐ ┌─────────────┐
│ ODIS │ │ Issuer │
│ (Privacy) │ │(Verification)│
└──────┬──────┘ └──────┬──────┘
│ │
└────────┬───────┘
│
v
┌──────────────────────┐
│ FederatedAttestations│
│ Smart Contract │
└──────────────────────┘
FederatedAttestations Smart Contract
The FederatedAttestations contract is the on-chain registry for all attestation mappings. It stores attestations in a structure that allows:
- Registration: Issuers register mappings between obfuscated identifiers and addresses
- Lookup: Anyone can query attestations for a given obfuscated identifier
- Multi-Issuer Support: Attestations are organized by issuer, allowing trust-based filtering
- Batch Operations: Multiple attestations can be queried simultaneously
Key Functions:
// Register an attestation as an issuer
function registerAttestationAsIssuer(
bytes32 identifier,
address account,
uint64 issuedOn
) external
// Lookup attestations for an identifier across multiple issuers
function lookupAttestations(
bytes32 identifier,
address[] calldata trustedIssuers
) external view returns (
uint256[] memory countsPerIssuer,
address[] memory accounts,
address[] memory signers,
uint64[] memory issuedOns,
uint64[] memory publishedOns
)
Deployed contract addresses for mainnet and Alfajores are listed in Reference & Resources.
Issuer Ecosystem
Issuers are independent entities that:
- Verify user ownership of identifiers through their chosen method
- Request obfuscated identifiers from ODIS
- Register attestations to the FederatedAttestations contract
- Maintain ODIS quota for continued operations
Applications choose which issuers to trust based on:
- Verification rigor
- Reputation
- Use case alignment
- Uptime and reliability
Was this page helpful?
Thanks for your feedback!