Skip to main content

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.

  1. Member issues a credential
  2. Wallet holds the credential
  3. 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 siteIn the specsIn the codeRuns onWhat it does
User app (wallet)User App (wallet)apps/user-app, user-app-core, walletUser's phoneHolds the device secret, keys and credentials, builds proofs and answers member apps
Network member appNetwork Member Appapps/network-member-app, network-member-app-coreUser's phoneThe member's own app. Runs the member flows and asks the user app for signatures and proofs
Hardware keystoreHardware keystoreexpo-identity-keystoreUser's phoneHolds the non-exportable P-256 device key in the Android Keystore
Member serverNetwork Member Server and VC Issuer Serviceapps/issuer-serviceMember backendRegisters users, issues and revokes credentials, verifies presentations, delivers to stealth addresses and runs the member's governance
IndexerIndexerapps/indexerMember backendScans stealth announcements for the member's users
VerifierVC SDK verifiercredential (verifyZkPresentationProof), POST /v1/verifyAny backendVerifies a presentation off chain and checks its roots against the contracts
Identity registryIdentity Registry (Identity Mapping in spec 01)IdentityRegistryChainMaps each networkId to a stealth meta-address
Member registryNetwork Member RegistryNetworkMemberRegistryChainHolds each member's record and keys
Member groupNetwork Member GroupNetworkMemberGroupChainThe Semaphore group of approved members
GovernanceNetwork Member Governance, Governance SafeNetworkMemberGovernance, the governance SafeChainAdmits and removes members by majority
Approved-issuer setApproved-Issuer SetApprovedIssuerSet, issuer-setChainThe members' credential signing keys
Revocation registryRevocation RegistryCredentialRevocationRegistry on Revocation, revocation-registryChainThe revoked credentials' commitments
PaymasterSemaphore PaymasterSemaphorePaymasterChainPays gas for operations carrying a Semaphore membership proof
AnnouncerERC-5564 Announcerthe canonical ERC-5564 AnnouncerChainEmits the stealth-payment announcements the indexer scans

Continue to the integration guide or review privacy and security.