Zarklink
Private cross-chain bridge over Zcash to Starknet
Created on 4th December 2025
•
Zarklink
Private cross-chain bridge over Zcash to Starknet
The problem Zarklink solves
-
Privacy-Preserving Transfers: Unlike traditional bridges that expose "User A bridged 100 ZEC" on-chain, ZCLAIM uses Zcash's shielded notes and homomorphic value commitments. The bridge verifies validity without learning amounts, true financial privacy across chains.
-
Trustless Custody: No centralized custodian holds your assets. Multiple independent vaults lock ZEC, each posting 150% collateral. If a vault misbehaves, users claim collateral directly. No single point of failure.
-
Cryptographic Proof of Locking: Zero-knowledge proofs (πZKMint/πZKBurn) prove notes exist in Zcash's Merkle tree, are addressed to the correct vault, and have matching value commitments, all without revealing actual values.
-
On-Chain Zcash Verification: The RelaySystem contract maintains Zcash block headers with PoW verification and Sapling commitment roots, enabling trustless verification of Zcash state on Starknet.
-
Challenge-Response Security: Vaults can challenge bad encryption by revealing shared secrets, with malicious users losing deposits.
-
Composable Private DeFi: wZEC on Starknet enables private trading on DEXs, private collateral in lending, and anonymous DAO participation, extending Zcash privacy into DeFi.
Challenges we ran into
-
Cairo 2.8 Compiler Issues: The Cairo compiler panicked when enabling multiple modules with cross-dependencies. Fixed by restructuring the module hierarchy, inlining crypto functions, and adding required Default/Copy traits to storage enums.
-
Fixed-Size Array Limitations: Cairo doesn't support 2D array indexing like Rust. The BLAKE2b sigma permutation table had to be reimplemented as an if-else lookup function instead of sigma.at(round).at(index).
-
Zcash Cryptography in Cairo: Zcash uses BLAKE2b-256, Equihash PoW, and SHA256d—none native to Cairo. Pure implementations would be gas-prohibitive. Solution: use circom circuits for heavy crypto off-chain, verify ZK proofs on-chain.
-
Storage Constraints: Cairo contracts can't store dynamic arrays. Created separate MintTransferStorage structs without Array<felt252> fields for persistence.
-
RPC Deprecation: Starknet public RPC endpoints (BlastAPI) became unreliable, requiring migration to Alchemy/Infura with API keys.
Tracks Applied (2)
Cross-Chain Privacy Solutions
Starknet
Private DeFi & Trading
Zcash Community Grants
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.
