snapshot
Blog
  • Welcome to Snapshot docs
  • User guides
    • Spaces
      • What is a space?
      • Create a space
        • Register an ENS domain
        • Alternative way to create a space
      • Settings
      • Sub-spaces
      • Space verification
      • Space hibernation
      • Add a custom domain
      • Add a skin
      • Space roles
      • Space badges
      • Snapshot Pro
      • Space handbook
        • Most common
        • Voting threshold
        • Anti-whale
        • Sybil resistance, scam & spam prevention
        • Liquidity / staking pool
        • Delegation
        • NFT voting
          • Most common: ERC-721
          • Multi-token: ERC-1155
          • POAP - Proof of Attendance
        • Custom calculations
    • Create a proposal
    • Voting
      • Vote on a proposal
      • Delegate your voting power
    • Voting strategies
    • Validation strategies
    • Using Safe multi-sig
    • Delegation
  • Developer Guides
    • Create a voting strategy
    • Create a validation strategy
    • Identify integrator activity
    • Add a network
  • Tools
    • Tools overview
    • Snapshot.js
    • API
      • API Keys
    • Webhooks
    • Subgraphs
    • Mobile notifications
    • Bots
  • Snapshot X
    • Overview
    • User guides
      • Create a space
      • Proposals
      • Voting
      • Safe execution setup
    • Protocol
      • Overview
      • Space actions
      • Space controller actions
      • Authenticators
      • Proposal validations
      • Voting strategies
      • Starknet specifics
      • Execution strategies
      • Audits
    • Services
      • Architecture
      • API
      • SX.js
      • UI
      • Mana
  • V1 interface
    • Email notifications
    • Plugins
      • What is a plugin?
      • Create a plugin
      • oSnap
      • SafeSnap
      • POAP
      • Quorum
      • Domino notifications
      • Galxe
    • Boost
  • Community
    • Help center
    • Discord
    • X (Twitter)
    • GitHub
Powered by GitBook
On this page
  • What is a voting strategy?
  • How to set up a strategy?
  • Testing a voting strategy

Was this helpful?

Edit on GitHub
Export as PDF
  1. User guides

Voting strategies

Learn what a voting strategy is and how to set it up.

PreviousDelegate your voting powerNextValidation strategies

Last updated 1 year ago

Was this helpful?

What is a voting strategy?

Voting strategy is a set of conditions used to calculate user's voting power. Strategies enable Snapshot to calculate the final result of voting on a given proposal.

In technical terms a strategy is a JavaScript function that returns a score for a set of addresses.

Strategy/-ies are defined in the space settings in section. Each space can select from one up to eight voting strategies. The default strategy is erc20-balance-of - it calculates the balance of a predefined ERC20 token for each user.

Voting strategies can be used to create a score from on-chain data, the data however does not necessarily need to be monetary. As an example a strategy can calculate how many POAPs or specific NFTs a user owns.

You can browse through 400+ strategies by selecting the Strategies filter on the main page of . If you can't find a strategy that fulfills your needs you can create a new one. To learn more about creating custom voting strategies head to Create a voting strategy.

How to set up a strategy?

Majority of spaces on Snapshot is using a single strategy however if you need a more complex calculation, you can combine up to 8 strategies. They will be applied to all proposals created for your space (created after the update of the settings) and the voting power will be calculated cumulatively.

Multiple voting strategies If you combine several voting strategies the voting power will be calculated in the following way: total voting power = voting power from strategy A + voting power from strategy B + ...

In order to set up a voting strategy head to your space settings and scroll down to Strategies section. You should see the below pop-up after clicking Add strategy and selecting a strategy from the list:

You will see that there is information that you need to provide in order to make the strategy work, for example the network where the token is deployed, its symbol and address of the token's contract.

Testing a voting strategy

Before you add the strategy to your space's settings we highly recommend to test it in the Playground in order to avoid any potential issues with the voting process.

If you made a mistake in your space settings and votes have already been cast it is not possible to revert them. The best solution would be to (1) delete the proposal, (2) update the settings with correct strategies and (3) recreate the proposal from scratch after the settings have been updated.

You can access it from the strategy's detail page by clicking the Playground on the right-hand side:

Your browser will load a Playground page where you can test the custom setup for the chosen strategy. As you can see on the below screenshot you can set the required parameters and provide a list of addresses which in this case are or are not holding a the PUNK ERC721 token.

Each strategy will require a different setup and you can read the full description and see the required parameters in the strategy's page, for example . You can find each strategy's details through using the search bar and Strategies filter.

If everything is set up correctly you should see the calculated voting power for each address after clicking the button:

▶️
erc20-balance-of
https://snapshot.org
Voting strategies
Example of setting up an erc20-balance-of strategy.