Privacy-preserving payment infrastructure on Stellar.
We build Corridor — a portable, zero-knowledge proof of eligibility for cross-border payments.
Live demo · Architecture · Roadmap · Contribute (Stellar Drips Wave)
Every time someone opens an account with a remittance provider, anchor, wallet, or aid-disbursement program, they upload the same passport scan and liveness selfie again. Each provider becomes a custodian of that identity data — and a target. The person, meanwhile, has no reusable proof that they already passed KYC.
A person completes KYC/AML once with a regulated issuer and receives a signed credential. From then on they prove "I am cleared to use this payment corridor" to any number of providers with a zero-knowledge proof — no documents, no identity, nothing linkable across providers.
Issuer (KYC, once) Holder's device Stellar / Soroban
────────────────── ─────────────── ─────────────────
signs a short-lived ──▶ Noir → UltraHonk proof ──▶ corridor_attestation.enter()
statement with a of "I hold a valid binds proof ↔ policy, verifies,
Grumpkin key issuer signature that burns a per-corridor nullifier,
{tier, expiry, epoch} meets this policy" records a pass
│
operator's payout ── is_cleared()? ──▶ pay
- A Stellar observer sees: a pass was granted on corridor C, a tag, a burned nullifier. Not who, not their tier, not their other corridors.
- A warranted auditor sees: only
{tier, issuer}for the specific passes in their warrant. - Nobody sees: the holder's identity, documents, or the issuer↔holder link.
| Repo | What it is | CI |
|---|---|---|
| corridor | Hub — architecture, docs, the Midnight issuer-registry contract, and the web app | |
| corridor-contracts | Soroban contracts (Rust) — corridor policy, on-chain proof verification, nullifier ledger, payout gating. Live on Stellar testnet. | |
| corridor-circuits | The Noir eligibility circuit — Grumpkin Schnorr signature verification, 73 ACIR opcodes | |
| corridor-sdk | @corridor/verify — TypeScript client SDK: read a policy, build a witness, issue/verify credentials, check clearance |
|
| Archived — the earlier design's root-sync service, removed when Corridor moved to issuer-signed statements | — |
Pre-MVP research build, participating in the Stellar Drips Wave.
| Layer | Status |
|---|---|
| Soroban contracts | ✅ deployed + smoke-verified on Stellar testnet |
| Noir circuit | ✅ real signature verification, 18 tests, nargo execute on a signed fixture |
| TypeScript SDK | ✅ live testnet reads, witness builder, Grumpkin signer (23 tests) |
| Web app | ✅ public site + live testnet data + operator clearance checker |
| Real on-chain ZK verifier | ⏳ M3 — a mock verifier stands in today |
| Fee-sponsoring tx-relayer + holder/operator flows | ⏳ M6 |
Stellar · Soroban · Protocol 25 (BN254, Poseidon2) · Noir · UltraHonk · Grumpkin Schnorr · Midnight / Compact · TypeScript · React
Corridor is built in the open. Issues labelled drips are reward-eligible
through the SDF-funded Drips Wave pool — see
DRIPS.md.