StreamZero

Zero-knowledge payroll on Stellar

Stream salaries that vest by the second, verified privately on-chain.

StreamZero escrows USDC under a cryptographic commitment. Employees withdraw vested pay by submitting a zero-knowledge proof the vault checks on Stellar — so amounts, salary rates, and identities stay off the public ledger entirely.

Amounts stay off-ledger Groth16 proof verified on-chain Vests every second
How it works

Three steps, zero leakage

1

Employer locks & commits

USDC is escrowed in the Soroban vault under a Poseidon commitment to the salary rate and start time. The amount, the rate, and who's being paid never appear on-chain.

2

Pay vests every second

From the start time, funds vest linearly. The employee can see exactly how much is claimable in real time — the ledger sees only an opaque commitment.

3

Employee proves & withdraws

The browser builds a Groth16 zero-knowledge proof that the requested amount is genuinely vested. The vault verifies the proof on-chain and releases funds — revealing nothing else.

Under the hood

How the proof becomes trust

Two halves work together: a Stellar smart contract that verifies math, and a zero-knowledge proof that hides everything but its own validity.

On Stellar

The Soroban vault

A Rust smart contract escrows USDC and stores only a Poseidon commitment per stream. When a claim arrives it runs the Groth16 verification equation using Stellar's BN254 pairing host functions (Protocol 25/26) — a single pairing check, on-chain.

  • Commitment-only state — no rate, total, or payee stored
  • Replay & front-running protection via on-chain nullifier and recipient binding
  • Standard SEP-41 USDC transfers — swap in the real asset with no vault change
Zero-knowledge

The proof, in your browser

The circuit is specified in Noir for a human-readable statement, while the production prover is an arkworks Groth16 circuit over BN254, compiled to WebAssembly. Proofs are generated client-side — the secret never leaves the device.

  • Proves vested ≥ withdrawn + amount without revealing any of them
  • Six public inputs bind the proof to time, amount, and recipient
  • Poseidon commitment links the proof to the funded stream
The privacy guarantee

What a chain observer sees

Hidden
  • Salary rate
  • Total compensation
  • Employee identity
  • That a withdrawal links to a given stream
Public
  • An opaque commitment was funded
  • A valid withdrawal occurred
  • The vault's aggregate balance
Built with

The stack

SorobanRust smart-contract vault on Stellar
Groth16 / BN254On-chain pairing verification via Protocol 25/26 host functions
arkworks → WASMProver compiled to WebAssembly, runs in the browser
NoirHuman-readable statement spec for the circuit
PoseidonZK-friendly hash for the stream commitment
Next.js 16App-router frontend with the Stellar SDK + Wallets Kit

Pay privately. Prove publicly.

Fund a stream or claim one — both run on Stellar testnet right now.