Building Meridian Finance: Privacy-Preserving Trade Bonds on Stellar
How I designed and built a confidential bond protocol on Stellar using ZK proofs, Poseidon commitments, and Soroban smart contracts.
The Vision
The Bond Lifecycle
Meridian Finance uses a 4-stage bond lifecycle:
Draft → Pending → Live → Settled
Each transition is governed by Poseidon-based Merkle commitments stored on-chain, with the full bond data encrypted off-chain.
Zero Knowledge: Groth16 Credential Signing
We replaced traditional OTP flows with Groth16 ZK credential signing:
- Credentials are signed off-chain
- Verification happens on-chain via Soroban
- Non-repudiation is guaranteed without revealing identity
Selective Disclosure via Merkle Proofs
The Stack
- Stellar / Soroban — smart contracts
- Groth16 — ZK proof system
- Poseidon hash — ZK-friendly Merkle commitments
- Next.js — frontend dApp
- Node.js + MongoDB — backend and off-chain storage
- Wallet Adapter — wallet auth
What I'd Do Differently
Links
- Live: meridianfinance.io
- GitHub: