CHIP-0058: Parallel voting at scale: off-chain proofs, on-chain finality#202
CHIP-0058: Parallel voting at scale: off-chain proofs, on-chain finality#202MichaelTaylor3d wants to merge 2 commits into
Conversation
Adds draft CHIP and companion assets for large-scale on-chain elections using an Election Singleton with Registration, Ballot, and Voting Coins, Groth16 verification, and off-chain aggregation.
|
This CHIP has been assigned CHIP-58 and is now a |
|
The nextjs app in this repo that demos the functionality as a dapp is still waiting to have signMessageUnsafe exposed from Sage through Wallet Connect. I'm working with @Rigidity to add this endpoint. chip0002_signMessage adds extra bytes to the message before signing (each voter's signature ends up tied to their specific public key), which means when we try to combine N voters' signatures into one for the on-chain check, they don't merge cleanly, we'd have to verify each voter individually, making the proof N times more expensive. the voting protocol is built around sign_raw (the unaugmented version) precisely because those signatures do combine cleanly into a single signature you can verify in one shot, which keeps the clvm cost flat regardless of voter count |
|
We are going to Discuss this CHIP in a Zoom call on June 2 at See the #chips channel of our Discord for details. |
|
We need to move the call to discuss this CHIP to Thursday, same time. Sorry for any inconvenience. |
This CHIP defines a permissionless standard for on-chain voting at scale on Chia. It is practical at around 20,000 voters per election, with no known theoretical upper bound, and it solves the singleton parallelism problem that has, so far, forced every serious on-chain vote to either crawl one update per block through a Ballot Box Singleton or fall back to a semi-permissioned aggregator key.
The key idea is that a fixed Groth16 circuit produces a zero-knowledge proof that today's CLVM can verify natively, using the BLS pairing operators already shipped in CHIP-0011. No soft fork or new opcodes are needed. On-chain verification stays constant in size, no matter how many voters contributed off-chain, and the proof binds three things at once that BLS aggregation alone cannot: the BLS signature aggregate, the quorum threshold, and the registered-voter scope. As a result, no aggregator can produce a passing finalize without the real votes behind it. Registration and ballot issuance stay on the Election Singleton's slow lane. Per-voter writes run in parallel on independent Voting Coins. Per-ballot finalize lives on the Ballot Coin.
A separate Ceremony Singleton lineage anchors each election to a public, auditable Groth16 trusted setup at deploy. All puzzles are written in Rue, the high-level language for CLVM. The same architecture supports DIG Network's L2-style anchoring, CAT-weighted DAO governance, and Chia Vault spend paths that take authorization from a finalized ballot announcement, which makes large-scale trust-minimized governance realistic on the base layer.