Skip to main content

What is a voting strategy?

Voting strategies determine how voting power is calculated for Snapshot proposals based on specific rules or conditions. Snapshot offers more than 400 available strategies, ranging from simple token-based methods to complex ones involving multiple conditions. Anyone can create custom strategies to precisely meet their governance needs. You can combine up to 8 strategies to calculate cumulative voting power, or up to 10 strategies for Snapshot Pro spaces. Strategies are defined in the space settings in the voting strategies section. The default strategy is erc20-balance-of, which calculates the balance of a predefined ERC-20 token for each user.

Most common voting strategies

  • ERC-20 balance (erc20-balance-of): Voting power is based on participants’ ERC-20 token holdings.
  • ERC-721 NFT balance (erc721): Uses ownership of ERC-721 NFTs as voting power.
  • ERC-1155 NFT balance (erc1155-balance-of): Similar to ERC-721 but designed for ERC-1155 NFTs.
  • ERC-20 Votes (erc20-votes): Voting power is determined by delegated ERC-20 token balances.
  • Whitelist (whitelist): Grants a fixed voting power (usually 1 vote) to specific wallet addresses, regardless of onchain token holdings.
  • Contract call (contract-call): Uses the result of a custom contract call as voting power.
  • Delegation (delegation): Allows delegation of voting power based on existing strategies.
  • Balance with minimum (balance-of-with-min): Assigns 1 voting power to participants holding at least a specified amount of a certain token.
  • API (api): Retrieves voting power from an external offchain API.
  • Whitelist weighted (whitelist-weighted): Assigns custom voting power values to specified addresses.
  • ETH balance (eth-balance): Uses ETH holdings (or the equivalent gas token on other networks) as voting power.
  • Ticket (ticket): Gives 1 voting power per participant, used exclusively in combination with a voting validation strategy.
To learn more about creating custom voting strategies, head to the developer guide.

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 strategiesIf 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: Example of setting up an erc20-balance-of strategy. 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. 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 erc20-balance-of. You can find each strategy’s details through using the search bar and Strategies filter.

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. If everything is set up correctly you should see the calculated voting power for each address after clicking the play button: