penumbra
Private trades, unaffected markets, effortlessly.
Created on 14th March 2026
•
penumbra
Private trades, unaffected markets, effortlessly.
The problem penumbra solves
On-chain auctions have no privacy.
On a public blockchain, every bid is visible to everyone in real time. This creates three critical issues:
**1. Bid manipulation: **later bidders can see existing bids and only outbid by the minimum, suppressing the true price
**2. Identity exposure: ** bidder addresses are public, linking financial activity to real-world identities
**3. Front-running: ** bots and other participants can exploit visible bid data before it's finalized
Traditional sealed-bid auctions (common in government bonds, real estate, spectrum allocation) solve manipulation, but no one had made them work privately on-chain.
Penumbra brings sealed-bid auctions to Ethereum using ZK proofs, bid amounts and bidder identities never appear on-chain, not even after the auction ends. The winner claims tokens by proving knowledge of a secret, not by revealing who they are.
Penumbra solves the transparency problem of on-chain auctions, bids, amounts, and winner identities stay private end-to-end using zero-knowledge proofs.
Challenges we ran into
1. ZK proofs on a hackathon timeline
Generating and verifying ZK proofs server-side, then submitting them from a burner wallet so the winner's real address never touches the claim transaction. Getting the circuit, proof generation, and on-chain verifier to agree took significant iteration.
2. The off-chain/on-chain split
The whole point is that bids never appear on-chain, but Ethereum needs something to verify. Designing the nullifier scheme (bidders commit a hash on-chain, the backend knows the preimage, the winner proves knowledge without revealing it) required careful architecture so neither side could cheat.
3. Stealth address key derivation
Deriving spending and viewing keypairs deterministically from wallet signatures — without ever sending private keys to a server. The secp256k1 point multiplication needed to generate real uncompressed public keys is not natively available in the browser.
4. BitGo custody for private ETH deposits
Each bidder gets a unique deposit address so their ETH can't be correlated on-chain. Integrating BitGo's wallet API to generate these addresses, track confirmations, and route payouts to stealth addresses added a whole backend layer that most Ethereum projects don't need.
5. Auction phase state machine
Five phases (commit → settle → ended → claimed / cancelled) each with different UI, different allowed actions, and live on-chain polling. Keeping the frontend consistent across all states without race conditions was genuinely fiddly.
Tracks Applied (9)
Privacy
DeFi
Best creative use of ENS
Ethereum Name Service
Pool prize
Ethereum Name Service
Best Privacy Application using BitGo
BitGo
Best DeFi Application using BitGo
BitGo
DeFi 2.0 - New Primitives
Base
Privacy
Base
BEST Overall Project
Cheer Project
Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.
