Update for integrators #1

Breaking changes

Deprecation of the personal sign client

Snapshot hub currently accepts signed messages (like votes or proposals) in 2 different formats: ”Personal sign” EIP-191 and ”Typed data” EIP-712. On 10 October we will remove support for Personal sign format. Personal sign is the format that was initially used on Snapshot. If you've done an integration within the past six months, you're most likely already using the Typed data EIP-712 client.

Moving to Typed data has two main advantages: it makes it possible to verify any part of the signed message on-chain, and the structure also make it easy for wallets to display the message to sign in a more readable way. Here is an example with MetaMask with Personal sign on the left and Typed data on the right:

Here is some documentation on how to use EIP-712 client with Snapshot.js: https://docs.snapshot.org/snapshot.js#init-client

Future snapshot block number no longer supported

As of now, it's no longer possible to create a proposal with a snapshot in the future. This ability was removed because it was not often used and hard to do on proposals with a large number of votes. With a snapshot in the future, the voting powers can change on any new block. This forces recalculations of voting powers every new block, which works for a few thousand votes but can get slow and does not scale far beyond that.

Change on Snapshot delegation

We will be making a change to Snapshot delegation in late October to make it a core feature. Currently, to use Snapshot delegation, you need to add a voting strategy called "delegation" to your space. This voting strategy requires a lot of parameters and is not really friendly to set up. With this incoming change, we will make it possible to enable or disable delegation with a simple toggle from the space settings.

Along with this update, we will slightly change how delegation works. Currently, with Snapshot delegation, if you delegate to someone, you still can vote on a proposal and get back your delegation as voting power. After the delegation update, this won’t be possible. The issue with this ability is that to calculate someone's voting power on a proposal, we need to know the whole list of voters. This forces us to calculate voting power for all the voters on a proposal at once and doesn’t scale well. We will give more information about this change in the next update.

Edit: We’ve realized with the community feedback that many spaces heavily rely on this specific feature and for this reason we’ve decided to cancel this update.

Reset demo and move to Goerli

We are moving the demo instance at https://demo.snapshot.org from Rinkeby to Goerli testnet on 15 September. Along with this change, we will reset the data on Snapshot testnet hub. If you have a space on demo, you will need to recreate it with an ENS domain from Goerli. A dump of the data will be available to download if anyone wants to recover information from it.

New features

New app param for vote and proposals

We introduced a new parameter for votes and proposals called “app”, this parameter allows integrators to set their app id and make it possible to track activity from different integrations. We recommend integrators to make this change, we will use these metrics in the future to build partnerships with integrators and display a ranking of integrations within https://snapshot.org. The app id is simply your application name in lowercase e.g. “snapshot” for Snapshot.org. Here is how to cast a vote with the app parameter: https://docs.snapshot.org/snapshot.js#cast-a-vote.

We also recommend filling this form: https://tally.so/r/mJ9W8X to register your project as integration partner.

Add comment on vote

It’s now possible to add a comment when you cast a vote using the new param “reason”, here is an example on how to use it with Snapshot.js: https://docs.snapshot.org/snapshot.js#cast-a-vote.

Get voting power from the hub API

We added a new operation “vp” on the Snapshot hub GraphQL API to make it easy to calculate someone’s voting power on a space or specific proposal. Here is how to use it: https://docs.snapshot.org/graphql-api#get-voting-power. You can only use this operation for a single user for a space or a specific proposal. This is ideal to know someone’s voting power before he cast a vote and it’s much simpler than using the Score API with “getScores” function as you don’t need to know about the proposal strategies, snapshot or other details to query voting power.

Search for proposal

There is a new parameter “title_contains” for proposals on the GraphQL API, this is useful to search for a specific proposal with keywords. Here is an example of a query.

Getting help

If you believe you're experiencing a bug or want to report incorrect documentation, open an issue on our issue tracker. For a more real-time avenue of communication, check out Snapshot official Discord server. There you'll find contributors and community members who can help answer questions about the Snapshot, the API, libraries and other development questions.


Subscribe to Snapshot Labs
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
This entry has been permanently stored onchain and signed by its creator.