At ETHGlobal New Delhi, I built SignalVault -- a decentralized news verification system that needed to process thousands of votes per minute while deriving its security from Bitcoin. The fundamental tension: Bitcoin's ~7 TPS and 10-minute block times make it unsuitable for high-throughput applications, but no other chain offers the same settlement guarantees.
Why Citrea, not a sidechain or L2 on Ethereum?
Citrea is a ZK-rollup that posts validity proofs directly to Bitcoin L1. Unlike federated sidechains (Liquid, RSK) that rely on a trusted multisig, Citrea uses a light client verifier on Bitcoin that validates a SNARK proof of the entire rollup state transition. This means the security model degrades to Bitcoin's, not to a federation's honest majority assumption.
For SignalVault this was critical: verification votes determine what information users trust. If the vote tallying layer can be compromised by bribing 5/7 federation members, the system is pointless.
How the verification pipeline works:
Data ingestion: Aggregator services pull claims from public APIs (X, YouTube, news feeds) and submit them as on-chain proposals to SignalVault's Solidity contracts on Citrea's EVM.
Vote batching: Votes are collected on Citrea (which has ~2s block times) and accumulated in contract storage. This is where the throughput happens -- we're not constrained by Bitcoin's block time at this layer.
State commitment to Bitcoin: Periodically, Citrea's prover generates a ZK validity proof covering all state transitions (including our votes) since the last checkpoint. This single proof is posted to Bitcoin. One Bitcoin transaction cryptographically attests to thousands of verification votes without expanding the UTXO set -- each checkpoint is a single OP_RETURN, not thousands of individual writes.
Incentives via cBTC: Voters stake cBTC (Citrea's BTC-backed token) as collateral. Correct voters earn rewards; incorrect voters get slashed. This keeps the economic security denominated in BTC rather than introducing a new token.
What I learned:
The biggest architectural insight was understanding the tradeoff between ZK proof generation latency and finality. Citrea batches proofs every ~15 minutes, so there's a window where votes are "soft-confirmed" on the rollup but not yet Bitcoin-final. We had to design the UI to communicate this two-tier finality clearly -- showing "confirmed on Citrea" vs "anchored on Bitcoin" as separate states.
https://x.com/abhishekislinux/status/1968381574313034188?s=20
Top comments (0)