GIP-140: Revamp Snapshot voting strategies
- In Favour
- Against
GIP: 140
title: Revamp Snapshot voting strategies
author: Lukas Balandraux <lukas.balandraux@gnosis.io>, Giacomo Licari <giacomo@gnosis.io>, Philippe Schommers <philippe@gnosis.io>
status: Draft
type: Meta
created: 2025-10-07
Summary
This proposal replaces the current subgraph based GNO strategy with a set of strategies that read state directly on-chain and from the beacon chain. There are 3 main objectives to this proposal:
- Add support for StakeWise tokens (
sGNOandosGNO) - Improve accuracy for validator balances
- Remove the external dependency on The Graph (everything is now handled by Snapshot)
Introduction
The GnosisDAO Snapshot space is currently impacted by the GNO strategy, which depends on Subgraph indexers. This has led to availability issues and inaccurate voting powers because beacon chain state cannot be inferred from the execution layer. We propose moving to on-chain data with a set of new strategies to reduce inaccuracy in the voting power calculation.
In addition to delegations, voting power will come from:
- GNO balance (Gnosis Chain and Ethereum)
- Locked GNO (Gnosis Chain, Ethereum)
- Validator balance (Gnosis Chain)
- StakeWise’s
sGNOandosGNO(Gnosis Chain)
Specification
-
Deprecate the subgraph-dependent GNO strategy.
-
Execution layer sources (Gnosis Chain / Ethereum)
-
Use the
contract-callstrategy, pointing to an aggregator contract on Gnosis Chain that returns each account’s totalGNOvoting power acrossGNO,lGNO,sGNO, andosGNO. The contract was deployed and verified at0xE6C45c06e4C73e2aD58Aedf9bf83bCe1534b524a. -
Use the
contract-callstrategy, pointing to an aggregator contract on Ethereum that returns each account’s totalGNOvoting power acrossGNOandlGNO. The contract was deployed and verified at0x1B2Eef4dd90cF1aF05967e0F246d4C0a19387B2A.
-
-
Consensus layer
- Created a new
beacon-chainstrategy to attribute stakedGNOfrom the beacon chain by withdrawal address.
- Created a new
-
Delegation
- Update the delegation strategy to support the 3 previously mentioned strategies.
Implementation plan
Now that GIP-130 passed, we can simply update the snapshot text field on gnosis.eth to update the configuration of the Snapshot space. The plan is to set it to ipfs://QmP6TVsWAcbxBNM229mgHXpxW7C9bTujk9LzDsiAWqDf7h with the following transaction:
[
{
"to": "0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41",
"operation": "0",
"value": "0",
"method": "setText(bytes32 node, string key, string value)",
"params": [
"0x77651e2c25d2b7b073d1068420770f96a43563e74df60e234b2433b2be66e29e",
"snapshot",
"ipfs://QmP6TVsWAcbxBNM229mgHXpxW7C9bTujk9LzDsiAWqDf7h"
]
}
]
Testing
The following test space was put in place so that everyone can check their voting power: Snapshot. Any feedback is welcome!