Cross Chain Catalysts Proposal (Deployment Grant): ShadowVote

Title: ShadowVote by Stakely

Contact Details

Summary

ShadowVote is a simple, privacy-first voting web app that enables Arbitrum-based DAOs to run Snapshot-style polls while keeping individual votes completely private using Aztec. It includes a basic user interface where voters can cast their votes and view final results.

The app uses Wormhole to send data between Arbitrum and Aztec in both directions securely:

  • When a new proposal is created on Arbitrum, its metadata and a snapshot of voter balances are sent to Aztec.
  • Voting is performed by signing a message with the user’s EVM wallet. This signature, along with a Merkle proof of the user’s token balance at the snapshot, is submitted to a Noir contract in Aztec. The contract verifies that the signature is valid and that the user had enough tokens to vote.
  • Once voting ends, a zero-knowledge proof of the final tally is sent back to Arbitrum and published.

Only the final voting result is revealed on-chain; who voted and how they voted stays fully private. ShadowVote demonstrates how Aztec’s programmable privacy and Wormhole’s cross-chain messaging can strengthen DAO governance by protecting against vote buying and social pressure.

Timeline

Phase Dates Milestone
Kick-off & repo scaffold 21 Jul - 4 Aug Contracts + Noir circuit skeleton
Outbound messaging PoC 4 Aug - 11 Aug Proposal mirror created on Aztec testnet
Private voting & proof generation 11 Aug - 18 Aug First successful hidden vote
Inbound tally message 18 Aug - 25 Aug Result posted back to Arbitrum testnet
Frontend development 25 Aug - 8 Sept Full voting experience through a GUI
QA & mainnet deployment 8 Sept - 12 Sept Grant delivery

(8 weeks total)

About Us

Stakely has been active in the blockchain space since 2020, with deep roots in staking infrastructure and validator management. Beyond that, we operate an experienced in-house development team with extensive experience building Web3 applications, public goods, and developer tools for the community.

Some of our most notable projects include:

  • A custom app for Ledger hardware wallets (link)
  • A dedicated Ledger wallet interface for LTO (link)
  • A popular multi-coin mainnet faucet with nearly 1 million successful requests (link)
  • A high-performance load balancer that has handled over 18 billion requests (link)
  • A decentralized WeTransfer-style file sharing app built on Walrus (link)
  • A specialized tool for validator consolidation on Ethereum (link)
  • An open-source service to automate Lido withdrawals (link)

Technical Approach

  • Contracts
    • ShadowVotePortal.sol → Wormhole-enabled portal on Arbitrum.
    • ShadowVotePoll.noir → Aztec contract to register ballots and enforce one-vote-per-token.
    • TallyProof.noir → Circuit that outputs (yes, no, abstain) counts.
  • Flow
    1. DAO calls createProposal() → Emits Wormhole VAA with snapshot root.
    2. Portal on Aztec deploys a matching poll.
    3. Voter proves balance ≥ 1 at snapshot height and submits encrypted vote.
    4. On endBlock, anyone runs computeTally() → proof + message back to Arbitrum.
    5. Arbitrum contract verifies proof and stores final counts for the UI.

Grant Amount Requested

$5000 (Deployment-grant tier).

Budget Rationale

Description Amount
Two Full-Time Developers ($2000 x 2) $4,000
QA & Testing $500
Project Management $500
TOTAL $5000

Infrastructure costs are covered by our internal DevOps team.


Looking forward to any feedback :smiley: