03InvestorsProving eligibility

Prove where you live.Reveal nothing else.

A hosted identity check, then a zero-knowledge proof of residence verified on Stellar.

To invest in a Reg S raise, an investor shows they live outside the United States, once, without putting their identity on a public ledger. They pass a hosted identity check; dvdnd turns the verified country into a private credential; their browser proves a fact about that credential with a zero-knowledge proof; and a Stellar contract verifies the proof.

Recorded on Stellar testnet
Sign in as an investor, say where you live, and start the identity check. US residents are sent to the accredited route instead. The check itself runs on Didit's own pages.
  1. 01
    Identity check at Didit
    ID document, a live selfie and a face match, tied to the investor's Stellar address. It works with any Stellar wallet, without a second wallet or an EVM account.
  2. 02
    Credential issued
    The browser picks a random secret and sends only its Poseidon hash. dvdnd's server reads Didit's decision, takes the country of residence, screens the wallet against OFAC's sanctions list, and adds the leaf Poseidon(country, expiry, Poseidon(secret)) to the gate contract's Merkle tree. One credential per ID document.
  3. 03
    Private proof in the browser
    A Groth16 proof that the leaf is in the tree, the country isn't the US or a sanctioned country, the credential hasn't expired, plus a nullifier so one credential registers only one wallet. The secret never leaves the device.
  4. 04
    Verified on Stellar
    The gate contract checks the proof with Stellar's BN254 host functions and marks the wallet eligible for 365 days. Didit's copy of the check is then deleted.
Recorded on Stellar testnet
From an issued credential to an eligible wallet: the browser builds the proof, then one transaction verifies it on-chain. The proving wait is shortened.
On-chain
  • gate.verify_and_register checks the root is one of the last 30, the time input is within ten minutes of the ledger, the nullifier is unused and the address hash matches the caller, then runs one pairing check.
  • The tree uses Stellar's Poseidon host function and has depth 16. A verification costs about 30M CPU instructions.
  • The proving key comes from a recorded ceremony: Perpetual Powers of Tau plus a phase 2 closed with a Stellar ledger hash as the beacon.
Legal
  • Reg S needs a reasonable basis to believe each buyer is outside the US. The identity check gives that basis; the proof carries it on-chain.
  • Any US document or US nationality counts as US residence.
  • dvdnd keeps only the country. Didit's session is erased once the proof is registered.