Title: ShadowVote by Stakely
Contact Details
- E-mail: admin(at)stakely.io
- Discord/Telegram: iicc1
- X/Twitter: https://x.com/Stakely_io
- GitHub: Stakely · GitHub
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
- DAO calls
createProposal()
→ Emits Wormhole VAA with snapshot root. - Portal on Aztec deploys a matching poll.
- Voter proves
balance ≥ 1
at snapshot height and submits encrypted vote. - On
endBlock
, anyone runscomputeTally()
→ proof + message back to Arbitrum. - Arbitrum contract verifies proof and stores final counts for the UI.
- DAO calls
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