ChainScore Labs
All Guides

Offchain Governance Using Snapshot

LABS

Offchain Governance Using Snapshot

Chainscore © 2025

Core Concepts of Snapshot Governance

Essential components and mechanisms that define how off-chain voting and signaling operate within decentralized communities.

Spaces

A Space is a dedicated hub for a DAO or community on Snapshot. It contains the governance configuration, proposals, and member list.

  • Configured with a unique ENS name (e.g., uniswap.eth).
  • Defines voting strategies, admins, and proposal validation rules.
  • Serves as the primary interface for all community governance activity, separating different projects.

Voting Strategies

Voting Strategies determine how voting power is calculated for each participant, typically based on token holdings.

  • Common strategies include token balance (erc20-balance-of) or delegated voting power.
  • Strategies can be combined and customized (e.g., quadratic voting, time-weighted).
  • They are executed off-chain via a server, reading on-chain state at a specific block.

Proposals & Voting

A Proposal is a structured submission for community decision-making, created within a Space.

  • Includes title, description, choices (e.g., For, Against, Abstain), and voting period.
  • Voting is gasless; users sign messages with their wallet to cast votes.
  • Results are calculated based on the configured strategies and are immutable once the voting period ends.

Message Signing & Validation

The core security model relies on EIP-712 typed message signing. Votes are off-chain signatures, not on-chain transactions.

  • Users sign a structured data message containing their vote choice.
  • A Snapshot server (or anyone) can validate the signature against the voter's address and the voting strategy.
  • This enables participation without paying gas fees, a key adoption driver.

IPFS for Immutability

Snapshot uses IPFS (InterPlanetary File System) to ensure proposal and vote data is decentralized and tamper-proof.

  • Proposal details and final vote results are pinned to IPFS, generating a content hash (CID).
  • This creates a permanent, verifiable record independent of Snapshot's servers.
  • The CID is often referenced in on-chain execution transactions for verification.

Execution via Relayers

While voting is off-chain, approved proposals often require on-chain execution. This is facilitated by relayers or multisigs.

  • A proposal's IPFS hash and results are passed to a trusted executor (e.g., Safe multisig, custom relayer).
  • The executor validates the off-chain vote and submits the corresponding transaction.
  • This separates the signaling layer from the execution layer, adding a security checkpoint.

Creating and Executing a Proposal

Process overview for drafting, submitting, voting on, and executing a proposal using Snapshot's off-chain signaling framework.

1

Draft the Proposal and Configure Voting

Define the proposal's purpose and set up the voting parameters within the Snapshot interface.

Detailed Instructions

Navigate to your Snapshot space and click Create Proposal. In the Title and Body fields, clearly articulate the proposal's intent, rationale, and any relevant links. The body supports Markdown for formatting. Next, configure the Voting System (e.g., Single Choice Voting, Quadratic Voting). Set the Start Date and End Date for the voting period. Define the Choices voters can select, such as "For," "Against," and "Abstain." Crucially, select the correct Snapshot Block Number; this immutable block determines which token holders are eligible to vote based on their balances at that historical state.

Tip: Use a block number from a few blocks before proposal creation to ensure all indexers have the data.

2

Connect Wallet and Submit for Signing

Authenticate and cryptographically sign the proposal data using your wallet.

Detailed Instructions

Click Publish after drafting. Your wallet extension (e.g., MetaMask) will prompt you to connect and sign a message. This signature does not cost gas, as it's an off-chain transaction. The signed message includes a hash of all proposal metadata: title, body, choices, snapshot block, and voting parameters. This creates the IPFS hash that uniquely identifies your proposal. Verify the connection is to the wallet address that is an admin or author of the Snapshot space. Submitting from an unauthorized address will fail. After signing, Snapshot will pin the data to IPFS and display the proposal link.

javascript
// Example of the type of message signed const msg = `Proposal: ${title}\nBody: ${body}\nChoices: ${choices}\nSnapshot: ${snapshot}`; const sig = await provider.send('personal_sign', [msg, account]);
3

Campaign and Monitor the Voting Period

Promote the proposal and track live voting results and voter participation.

Detailed Instructions

Once published, share the proposal link with your community via Discord, Twitter, or governance forums. Voters will connect their wallets to the Snapshot page and cast their votes by signing a message, which is also gas-free. Monitor the Voting Power column, which shows the weight of each vote based on the voter's token balance at the snapshot block. Track key metrics: total voting power cast, quorum status (if enabled), and the leading choice. Use the Activity tab to see all cast votes and their signatures. Be prepared to answer technical questions about the proposal's implications. Remember, votes are mutable until the voting period ends; voters can change their vote by signing a new one.

Tip: High voter turnout and clear communication increase the legitimacy of the off-chain result.

4

Execute the Will of the Vote On-Chain

Interpret the Snapshot result and execute the corresponding on-chain transaction.

Detailed Instructions

After the voting period ends, the final result is recorded immutably on IPFS. Snapshot itself does not execute transactions. The responsibility falls to a designated party (e.g., a multisig or a community developer) to enact the outcome. This typically involves interacting with a DAO's Timelock controller or Governor contract. First, verify the proposal's IPFS hash and final vote tally on Snapshot. Then, prepare the calldata for the intended on-chain action, such as a treasury transfer or a parameter change in a smart contract. Submit this transaction from the authorized executor address. Many projects use tools like Tally or Sybil to bridge Snapshot votes to on-chain execution, automating the proposal creation in their Governor contract after a successful vote.

solidity
// Example: Interacting with an OpenZeppelin Governor contract governor.execute( targetAddresses, values, calldatas, descriptionHash // Keccak256 hash of the proposal description );

Voting Strategies and Weighting

Understanding Voting Power

Voting power determines how much influence a single vote has. In Snapshot, this is not simply one person, one vote. Instead, it's calculated using a voting strategy that pulls data from the blockchain, like token balances. The most common strategy is token-weighted voting, where your voting power equals the number of governance tokens you hold in your connected wallet at a specific block number.

Key Concepts

  • Snapshot Block: Voting power is calculated from a past block to prevent last-minute buying ("airdrop sniping") to influence a vote.
  • Strategies: Different methods to calculate power, such as ERC-20 balance, ERC-721 (NFT) ownership, or a combination.
  • Weighting: The raw power from a strategy can be modified, e.g., using square root voting to reduce whale dominance.

Example

When a Uniswap DAO proposal is created on Snapshot, it might use the "erc20-balance-of" strategy for the UNI token. If you held 100 UNI in your wallet at block #15,000,000, your vote on that proposal would be weighted as 100 votes.

Onchain vs. Offchain Governance Comparison

A technical comparison of governance execution methods, focusing on Snapshot as the primary offchain solution.

FeatureOnchain Governance (e.g., Compound)Offchain Governance (Snapshot)Hybrid Approach (e.g., Optimism)

Vote Execution

Direct, gas-paid transaction on L1/L2

Gasless signature (EIP-712, EIP-191)

Offchain signal with onchain execution via multisig

Voter Cost

~$10-$100+ (variable gas)

$0 (gasless)

$0 to vote, gas cost for execution only

Finality & Speed

Slow (block time + timelock), ~2-7 days

Instant (IPFS pinning), ~seconds

Delayed (offchain period + execution delay)

Execution Guarantee

Automatic via smart contract

Non-binding signal; requires trusted execution

Conditionally binding after approval step

Voter Participation

Often low (<10%) due to cost

Higher potential, frictionless

Varies; depends on execution trust model

Attack Surface

Smart contract vulnerabilities, 51% attacks

Sybil attacks, proposal spam, IPFS reliability

Combines risks of both models

Typical Use Case

Parameter changes, treasury transfers

Temperature checks, signaling, community polls

High-value upgrades requiring community mandate

Setting Up a Snapshot Space

Process overview

1

Connect Wallet and Access Snapshot

Access the Snapshot platform and connect a wallet with administrative privileges.

Detailed Instructions

Navigate to the official Snapshot.org website. Click the 'Connect Wallet' button in the top right corner. You must connect a wallet that holds the governance token for the DAO or project you are representing, as this wallet will become the initial admin. Supported wallets include MetaMask, WalletConnect, and Coinbase Wallet. Ensure you are on the correct network where your governance tokens reside (e.g., Ethereum Mainnet, Arbitrum, Optimism). This connection does not require a transaction or gas fee; it only signs a message to prove ownership. The connected address will have full control over the space settings initially.

Tip: Use a dedicated, secure multisig or DAO treasury wallet for the admin role instead of a personal hot wallet.

2

Create a New Space and Configure Basics

Initialize your governance space and define its core identity and admins.

Detailed Instructions

From your dashboard, click 'Create a Space'. You will be prompted to enter essential details. The Space ID is a unique, URL-friendly identifier (e.g., my-daogov.eth). You can use an ENS domain you own or a plain name. Set the Space Name and Avatar for display. The most critical setting is the Admins field. Input the Ethereum addresses that will have permission to edit space settings, proposals, and strategies. You can add multiple admins or a multisig wallet address like a Safe. Define the Moderators (can hide proposals) and Authors (can create proposals) if you wish to delegate these roles separately from admins.

json
{ "space": "my-daogov.eth", "admins": ["0x742d35Cc6634C0532925a3b844Bc9e..."], "strategies": [] }

Tip: Start with a multisig as the sole admin for enhanced security and decentralized control from day one.

3

Define Voting Strategies and Validation

Specify how voting power is calculated and who is eligible to create proposals.

Detailed Instructions

Voting strategies determine a user's voting power for each proposal. In the 'Strategies' section, add one or more strategies. A common setup is the erc20-balance-of strategy, which calculates power based on token balance at a specific block number. You must configure the contract address, network (chain ID), and optionally a decimals multiplier. For example, for a token on Ethereum: contract 0x1234..., chain ID 1, symbol GOV. You can combine strategies (e.g., token balance + delegation). Next, configure Validation settings. This defines rules for proposal creation. Use the basic validation to set a minimum voting power threshold (e.g., 1000 GOV tokens) required to submit a proposal, preventing spam.

javascript
// Example erc20-balance-of strategy configuration { "name": "erc20-balance-of", "network": "1", "params": { "address": "0x1234567890abcdef1234567890abcdef12345678", "symbol": "GOV", "decimals": 18 } }

Tip: Use snapshotting (a past block number) in strategies to prevent voting power manipulation during a live proposal.

4

Customize Voting and Proposal Settings

Set the rules for proposal types, voting periods, and result calculations.

Detailed Instructions

In the 'Settings' tab, define the Voting parameters. Set the Voting Delay (time before voting starts after proposal creation) and Voting Period (duration votes are open), typically 24-168 hours. Choose the Voting System; single-choice (one option) and approval voting (vote for multiple options) are common. Configure the Quorum required for a proposal to be valid, expressed as a minimum percentage of total possible voting power. In the 'Proposals' section, you can enable/disable different Proposal Types (e.g., basic, weighted). You should also set the Privacy setting—public spaces are listed, private spaces are hidden. Finally, customize the Terms of Service link and Social media profiles for the space.

Tip: Align your voting period and quorum with your community's engagement patterns; a very high quorum can lead to voter apathy.

5

Verify and Deploy the Space Configuration

Review all settings and publish the space to the Snapshot hub.

Detailed Instructions

Thoroughly review every tab: Profile, Admins, Strategies, Validation, and Settings. Ensure all contract addresses and chain IDs are correct. Test the strategy by using the 'Check' button in the strategies tab with a sample wallet address to verify voting power calculation. Once satisfied, navigate to the 'About' section and click 'Save' or 'Publish'. This action requires a signature from one of the admin wallets you configured. It is a gasless, off-chain signature. After signing, your space is live on the Snapshot hub. The final step is to create a test proposal with a low threshold to verify the entire workflow: proposal creation, voting, and result tallying function as expected for your members.

Tip: Document your space's configuration (strategies, thresholds) in your project's governance documentation for full transparency.

Advanced Features and Plugins

Extend Snapshot's core voting with custom strategies, execution methods, and enhanced proposal types.

Custom Voting Strategies

Voting strategies define how voting power is calculated. They are smart contracts that can query on-chain or off-chain data.

  • Use ERC-20, ERC-721, or ERC-1155 balances for power.

  • Implement time-weighted averages or delegation.

  • Create strategies based on cross-chain holdings via bridges.

This allows DAOs to design governance models that accurately reflect their specific tokenomics and community structure.

Execution Plugins

Execution plugins are smart contracts that automatically execute on-chain actions when a proposal passes.

  • Send funds from a multisig or treasury.

  • Interact with DeFi protocols to adjust parameters.

  • Update smart contract roles or mint new tokens.

This bridges the gap between off-chain signaling and on-chain state changes, reducing manual intervention and execution risk.

Space Validation & Settings

Space validation controls proposal creation and voting permissions through a dedicated settings file.

  • Restrict proposals to specific Ethereum addresses or ENS names.

  • Set minimum voting delay and period durations.

  • Define approved voting strategies and execution plugins.

These settings provide administrators with granular control over the governance process, preventing spam and ensuring proposal quality.

Quadratic & Ranked-Choice Voting

Voting systems beyond basic single-choice are supported through specialized strategies.

  • Quadratic voting reduces whale dominance by squaring the cost of additional votes.

  • Ranked-choice voting allows voters to order preferences, ensuring majority support.

  • Weighted voting assigns different power to different asset types.

These systems enable more nuanced and democratic outcomes for complex decisions.

IPFS & Data Integrity

IPFS (InterPlanetary File System) is used to store proposal and vote data in a decentralized, immutable manner.

  • Proposal text, discussions, and vote metadata are pinned to IPFS.

  • Content identifiers (CIDs) are stored on-chain for verifiability.

  • Ensures data persistence and censorship-resistance.

This creates a permanent, tamper-proof record of all governance activity, which is crucial for accountability.

Cross-Chain & Multi-Chain Governance

Cross-chain strategies enable voting power aggregation from assets on multiple blockchains.

  • Use bridges and message relays to verify holdings on L2s or other EVM chains.

  • Strategies can sum balances from Ethereum, Polygon, and Arbitrum.

  • Allows DAOs with fragmented treasuries or communities to govern from a single interface.

This is essential for protocols and organizations operating in a multi-chain ecosystem.

SECTION-FAQ

Frequently Asked Questions

Ready to Start Building?

Let's bring your Web3 vision to life.

From concept to deployment, ChainScore helps you architect, build, and scale secure blockchain solutions.