Skip to content

Latest commit

 

History

History
119 lines (82 loc) · 4.64 KB

delegation.md

File metadata and controls

119 lines (82 loc) · 4.64 KB
description
Discover the delegates of specific spaces and delegate your Voting Power directly through Snapshot,

Delegation

How to delegate?

Snapshot enables a couple of ways to delegate your Voting Power to another address (a delegate1).

You can delegate your Voting Power via:

👉 Delegates Registry per Space (if the Space has set up their custom delegation contract)

{% hint style="info" %} This is a great solution for those who are not sure who to delegate their VP to. {% endhint %}

👉 General Snapshot's delegation page

{% hint style="info" %} The quickest solution to delegate the Voting Power to a known address. {% endhint %}

👉 Smart Contract

{% hint style="info" %} If you prefer to skip the interface and interact with the Contract directly. {% endhint %}

Let's look at each option in detail.

Delegates registry

{% hint style="danger" %} This page only applies to custom delegation contracts.

To see the Snapshot native delegation, head to:

https://snapshot.org/#/delegate/space-name.eth {% endhint %}

It is possible to discover the Delegate registry of Spaces that provided their custom delegation contract in settings.

Head to the Space page and click Delegates in the left sidebar**:**

You will then see a list of delegates for the Space with the number of their delegators2 and their total Voting Power within the Space.

You can delegate your Voting Power to one of the delegates directly by clicking the Delegate button:

Delegate page

  1. Go to https://snapshot.org/#/delegate
  2. Enter the address you want to delegate to.
  3. To limit the delegation to a specific space, tap the on switch button and enter the space key (example: balancer.eth) you want your delegation to take effect on. If no space is selected, the effect will take place for all spaces.
  4. Click confirm to save your delegation.

{% hint style="warning" %} The direct delegation to a chosen space has priority over the all spaces delegation.

What does it mean?

👍 Address A delegates to B for all spaces, and A delegates to C for a chosen space.
◀️ The chosen space uses overriding delegation strategy.
🤚 B votes first - their VP is taken into account.
:hand_splayed: C votes - their vote has priority (direct single space delegation) and erases B's Voting power (all spaces delegation).
✋A votes - B and C's Voting Power decreased to 0. {% endhint %}

Smart contract interaction

You need to call the setDelegate method with the space id as the first argument (space id is its ENS domain name, for example fabien.eth), and the address of the delegate as the second argument.

Here is an example of integration in a Solidity contract:

https://github.com/convex-eth/platform/blob/d3061c19b5e01a4e562c8121b08c44f1b42f0b85/contracts/contracts/BasicCvxHolder.sol#L49-L53

Supported networks

  • Mainnet
  • Sepolia
  • Optimism
  • Arbitrum
  • Polygon
  • BNB Chain
  • Gnosis Chain
  • Fantom
  • Base
  • Base sepolia
  • Linea
  • Blast
  • Sonic

Delegation contract

Snapshot uses the Gnosis "Delegate Registry" contract here:
https://github.com/gnosis/delegate-registry

The contract is deployed on this address: 0x469788fE6E9E9681C6ebF3bF78e7Fd26Fc015446
The contract is also available on "Supported networks" listed above.

Delegations are stored on this subgraph:
https://thegraph.com/explorer/subgraph/snapshot-labs/snapshot

{% hint style="info" %} A delegation Voting Strategy must be added to the Snapshot space before delegated votes will be counted. You can use the with-delegation strategy. {% endhint %}

Footnotes

  1. By delegate we mean the address which receives the delegation from another user, the delegator.

  2. By delegators we mean the address which has delegated their Voting Power to the delegate.