Back to projects
ZeroBridge icon

ZeroBridge

The Privacy Layer for Cross-Chain Liquidity

$500
Total awarded
ZeroBridge
Tomiwa
Builder
Solidity React Node.js JavaScript Python Rust TypeScript Tailwind CSS

Awards

The problem it solves

Current blockchain bridges expose everything: your transaction amounts, wallet addresses, trading strategies, and holdings across all chains. Front-runners exploit this transparency, competitors copy your DeFi strategies, and your financial privacy is completely compromised. If you bridge 100 NEAR from Near to Solana, everyone can link your addresses, see your capital, and track your every move.

ZeroBridge solves this by routing all cross-chain transfers through Zcash’s Orchard shielded pool, creating a privacy layer that breaks transaction graphs. When you bridge assets, they enter Zcash as encrypted notes that hide amounts, senders, and recipients. When you withdraw to the destination chain, zero-knowledge proofs verify ownership without revealing which deposit you’re claiming. The result: your NEAR address and Solana address remain completely unlinkable, with no on-chain connection between them.

What You Can Do With ZeroBridge:

  • Private DeFi Across Chains - Deploy capital from Zcash to fresh addresses on any chain. Provide liquidity on PropellerSwap, AVNU, lend on Rhea Finance, or trade on Jupiter without revealing your total portfolio size or linking positions together. Each interaction appears as an independent user.

  • Protected Trading Strategies - Execute high-frequency trading or arbitrage without competitors tracking your moves. Fund bots from Zcash shielded pool to new addresses, run strategies at scale, aggregate profits privately. Front-runners can’t target you because they can’t see your capital or patterns.

  • Anonymous NFT Purchases - Buy NFTs without revealing your wallet’s wealth. Bridge from Zcash to a fresh address with just enough funds, make your purchase, then bridge remaining balance back through a different route. The seller never sees your holdings.

  • Private Cross-Border Payments - Send value globally without surveillance. Bridge USDC from Solana through Zcash to NEAR in one flow—recipient gets funds from a fresh address with zero connection to your source wallet.

  • Institutional Privacy - Institutions can deploy capital across DeFi protocols without revealing their strategies or total AUM. Each position looks like a small independent player.

  • Making Privacy Accessible - No need to understand Zcash wallets or manage shielded addresses manually. Bridge in one transaction from any supported chain (Ethereum, StarkNet, Solana, NEAR, Mina, Osmosis), and ZeroBridge handles all Zcash shielded pool interactions automatically.

The system achieves true unlinkability - even if someone knows you deposited 100 OSMO, when you withdraw 50 SOL later, they cannot prove the connection. Your withdrawal could correspond to ANY previous deposit in the entire history of the bridge, creating an anonymity set of thousands of transactions.

Challenges we ran into

Challenge 1: Two-Step Withdrawal Pattern Discovery My first implementation had users call a single withdraw() function with their proof. Relayers would listen, verify nothing, and immediately execute, creating a race condition where multiple relayers would waste gas attempting the same withdrawal. I initially tried complex P2P locking mechanisms, but they added fragility. **Solution: Split withdrawals into two on-chain steps: requestWithdrawal() and executeWithdrawal(). ** Users submit proofs in step 1, which emits an event. The coordinator verifies the proof off-chain and, if valid, generates an authorization signature stored in its database. Relayers query this database for authorized withdrawals (not blockchain events), claim tasks via P2P gossip, then execute with the coordinator’s signature. This eliminated race conditions, gave the coordinator time to verify proofs properly, and created a clean separation: users don’t need to wait for verification (step 1 is instant), and relayers only execute pre-approved transactions. The pattern proved so elegant it became the standard across all eight gateway implementations.

Challenge 2: Cross-Chain Token Canonical Naming Nightmare Different chains call the same token different things: USDC is 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 on Ethereum, EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v on Solana, usdc.token.near on NEAR. Managing mappings manually in each gateway contract would be unmaintainable and error-prone. Solution: Built a centralized token registry with canonical token IDs in the coordinator. Each token gets a hash-based ID (e.g., sha256(“USDC”) -> 0x1f3a…) with a table mapping canonical IDs to chain-specific addresses. When processing deposits, the coordinator looks up the canonical token and ensures sufficient liquidity of the equivalent token exists on the destination chain before creating the Zcash note. This registry lives in a TOML config file (tokens.toml) that can be updated without redeploying contracts. Added benefit: the coordinator can automatically handle token decimals conversions

Gallery