Sesame
Sesame makes a secret spendable. You lock USDC on Stellar against a phrase like
umbrella tango biscuit harbor, and the words become the money. Tell them to
anyone, by phone, on paper, or out loud. Whoever ends up knowing them claims the funds into
an address chosen at that moment, on a device that never had a wallet before. A password you
can say out loud and still not get robbed.
The problem it solves
On a public ledger a secret cannot hold money. Lock funds to hash(phrase) and release
them to whoever submits the preimage, and the moment a claimer broadcasts, the phrase is
visible in the mempool. Any watcher copies it and front-runs the claim. Using the secret
reveals it, and revealing it loses the money. So bearer value made of a shared secret has been
impossible on chain. Sesame fixes exactly this.
What I built
The claimer proves one statement in their own browser: I know a phrase whose commitment is one of the notes in this pool, and I am sending this note to this address. The proof reveals nothing about which note, which phrase, or who deposited it, and it binds the destination as a public input, so an in-flight claim cannot be stolen or redirected, not even by the relayer that submits it. Zero-knowledge turns a secret into a bearer instrument that survives being used in public. It is deliberately not a mixer or a privacy pool.
- A Circom circuit (Groth16 over BN254, about 11,500 constraints) proving Merkle membership at depth 20, the nullifier, and the address and fee binding.
- A Soroban contract that builds the Merkle tree on chain with the Poseidon host function and verifies proofs with the BN254 host functions from Stellar Protocol 25 and 26.
- Browser proving with snarkjs, and a trustless fee-bump relayer so the recipient needs no XLM.
- Deployed and verified end to end on Stellar testnet, with a real deposit, prove, and claim cycle settling on chain.
How to use it
- Send: connect a wallet, take a generated phrase, and lock a note. On chain only a Poseidon commitment is stored. Hand the phrase to anyone, through any channel.
- Claim: type the phrase. The app finds your note, builds the proof, and the relayer submits it. The money lands on a fresh key the app makes for you, or on an address you paste. No account and no XLM required.
Honest about the model
Sesame is bearer, like cash. The proof protects a claim in transit, it does not protect you from someone you already told the words to. The deposit that funds a note is public, like every shielded pool. Guard the words like cash.
Open the app →