Architecture
Identity and registration
An organization may know whom it serves and retain the evidence needed for its own checks. The network needs a way to recognize that participant without placing their personal identity on Ethereum.
For someone using their own wallet, the network identity comes from cryptographic keys generated on their device. The wallet derives a network ID from those keys, not from a name, document number, or biometric. Ethereum records that ID and public receiving information. The private keys stay on the person's device.
Registration checks recognize reuse of the same wallet identity, not every possible identity belonging to one person.
Holding your own keys is the self sovereign part of this flow. Keeping personal records off chain also does not make the participant anonymous to the organization that enrolled them.
Credentials
The organization can then issue a credential, a signed record of approval, to the wallet.
- Member issues a credential
- Wallet holds the credential
- Holder proves eligibility
A zero knowledge proof lets the person demonstrate that approval without sharing the credential or identifying its issuer. The programme and country requested by the verifier remain visible.
Revocation
Members decide eligibility and can revoke approvals. Wallets refresh the shared revocation state before presenting, and verifiers check that the proof uses an accepted root.
Future capabilities
The stack is designed to support private payments in the future. Payment distribution, spending, redemption, and settlement are outside Phase 1.
Component names
The site, the specs and the code name the same components differently. This table maps them. The spec names come from the Phase 1 full architecture, and the glossary defines the other terms.
| On this site | In the specs | In the code | Runs on | What it does |
|---|---|---|---|---|
| User app (wallet) | User App (wallet) | apps/user-app, user-app-core, wallet | User's phone | Holds the device secret, keys and credentials, builds proofs and answers member apps |
| Network member app | Network Member App | apps/network-member-app, network-member-app-core | User's phone | The member's own app. Runs the member flows and asks the user app for signatures and proofs |
| Hardware keystore | Hardware keystore | expo-identity-keystore | User's phone | Holds the non-exportable P-256 device key in the Android Keystore |
| Member server | Network Member Server and VC Issuer Service | apps/issuer-service | Member backend | Registers users, issues and revokes credentials, verifies presentations, delivers to stealth addresses and runs the member's governance |
| Indexer | Indexer | apps/indexer | Member backend | Scans stealth announcements for the member's users |
| Verifier | VC SDK verifier | credential (verifyZkPresentationProof), POST /v1/verify | Any backend | Verifies a presentation off chain and checks its roots against the contracts |
| Identity registry | Identity Registry (Identity Mapping in spec 01) | IdentityRegistry | Chain | Maps each networkId to a stealth meta-address |
| Member registry | Network Member Registry | NetworkMemberRegistry | Chain | Holds each member's record and keys |
| Member group | Network Member Group | NetworkMemberGroup | Chain | The Semaphore group of approved members |
| Governance | Network Member Governance, Governance Safe | NetworkMemberGovernance, the governance Safe | Chain | Admits and removes members by majority |
| Approved-issuer set | Approved-Issuer Set | ApprovedIssuerSet, issuer-set | Chain | The members' credential signing keys |
| Revocation registry | Revocation Registry | CredentialRevocationRegistry on Revocation, revocation-registry | Chain | The revoked credentials' commitments |
| Paymaster | Semaphore Paymaster | SemaphorePaymaster | Chain | Pays gas for operations carrying a Semaphore membership proof |
| Announcer | ERC-5564 Announcer | the canonical ERC-5564 Announcer | Chain | Emits the stealth-payment announcements the indexer scans |
Continue to the integration guide or review privacy and security.