# Cross Chain Catalysts Proposal (Deployment Grant): ShadowVote

**URL:** <https://forum.aztec.network/t/cross-chain-catalysts-proposal-deployment-grant-shadowvote/8076>\
**Category:** Aztec\
**Tags:** rfgp, bridge\
**Created:** [July 15, 2025, 8:48am UTC](https://forum.aztec.network/t/cross-chain-catalysts-proposal-deployment-grant-shadowvote/8076 "2025-07-15T08:48:08Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![iicc](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.aztec.network/iicc/32/2610_2.png) [@iicc](https://forum.aztec.network/u/iicc)\
**Post date:** [July 15, 2025, 8:48am UTC](https://forum.aztec.network/t/cross-chain-catalysts-proposal-deployment-grant-shadowvote/8076/1 "2025-07-15T08:48:08Z")

</div>

#### **Title:** ShadowVote by Stakely

#### **Contact Details**

- **E-mail** : admin(at)[stakely.io](http://stakely.io)
- **Discord/Telegram** : iicc1
- **X/Twitter** : [https://x.com/Stakely\_io](https://x.com/Stakely_io)
- **GitHub** : [Stakely · GitHub](https://github.com/Stakely/)  
  

#### **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](https://github.com/LedgerHQ/app-lto))
- A dedicated **Ledger wallet** interface for LTO ([link](https://github.com/Stakely/lto-network-ledger-wallet-ui))
- A popular **multi-coin mainnet faucet** with nearly **1 million successful requests** ([link](https://stakely.io/faucet))
- A high-performance **load balancer** that has handled over **18 billion requests** ([link](https://stakely.io/web3-api-load-balancer))
- A decentralized **WeTransfer-style file sharing app** built on **Walrus** ([link](https://waltransfer.com/))
- A specialized tool for **validator consolidation on Ethereum** ([link](https://consolideth.app/))
- An open-source service to **automate Lido withdrawals** ([link](https://github.com/Stakely/lido-withdrawals-automation))  
  

#### **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 😃
