Back to projects
Liquid Privacy icon

Liquid Privacy

The first privacy enabled liquid staking protocol.

$3,000
Total awarded
om, Culper
Builders
React Node.js Docker Cairo Noir Garaga Barretenberg Scarb Starkli Sncast

Awards

The problem it solves

Liquid Privacy is an end-to-end system that starts with everything people already expect from liquid staking. It uses an ERC4626 vault, delegates to validators, earns rewards automatically, and gives users a simple receipt token. All the normal parts of liquid staking stay the same.

What changes is that users can choose a privacy enabled path. If someone wants their deposit or withdrawal to stay hidden, they can use the shielded route instead of the public one. This makes privacy in liquid staking practical rather than something that only exists in theory.

There is also a private bridge from Zcash to Starknet. Shielded ZEC can be staked directly, and users can later withdraw either publicly or with privacy, giving them a private in and private out flow.

The system is built with Noir and Cairo and is deployed on both Starknet and Ztarknet. The same design can be extended to wrapped BTC assets and other liquid staking ecosystems.

Liquid staking is already a proven part of DeFi, but the missing piece has always been privacy. Liquid Privacy brings the two together and lets users choose how they want to participate, while still helping secure networks, earn rewards, and support validators.

A longer detailed full demo is available in the provided links for anyone who wants a deeper walkthrough.

Easier to read Excalidraw flow is here https://excalidraw.com/#json=yxs1epMfuiK-MXjUOHlpi,SjTMkrO8PTpStnKfvb9CHg

Challenges we ran into

  • Learning Noir from scratch and figuring out the correct flow for Barrettenberg + Garaga.

  • Fighting CASM hash mismatches during Starknet/Ztarknet declares/deploys.

  • Realizing true private withdrawals require an off-chain Merkle indexer and wiring that into the relayer, circuits, cairo, and UI.

  • Threading the privacy flow into the frontend while keeping UX sane.

  • Discovering everything needed Poseidon-2 hashes end-to-end and retooling for that.

  • Connecting the Bridge functions, the contract functions, the auto delegations, the merkle indexer, the UI. It has been a journey of trial and error.

  • Built and intent based deposit flow that moves a deposit into an intent phase and allows any wallet to come along with a commitment and move it into the stake, this can be front run so it was stubbed from the UI as it is not a viable for a protocol like this.

It’s been a long grind, but we finally have the whole stack working and ready to submit.

Gallery