Sorry for the long delay on this everyone. It has been a really bumpy road, but I think we finally have a candidate for the new setup.
Unfortunately, due to some setbacks and roadblocks during implementation of the subgraph, we had to make the decision to only include GNO, MGNO, LGNO, and staked GNO in the new strategy. We’ll make a subsequent proposal once we’ve implemented a version of the subgraph that accounts for GNO in UniswapV2, UniswapV3, Balancer, and Aave.
Note: I’ll post this as a Snapshot proposal tomorrow (Thursday) once I have confirmation from a few others that all of the inputs look correct.
Proposed Transactions:
Mainnet Safe Transaction Payload with Tenderly simulation:
This transaction should:
- enable the new Reality module
- Update the
gnosis.eth
ENS name with new text records records for ETH
, XDAI
, snapshot
, daorequirements
, quorum
, URL
, twitter
, github
, and avatar
.
- disable the current Reality module
[
{
"to": "0x0DA0C3e52C977Ed3cBc641fF02DD271c3ED55aFe",
"value": "0",
"method": "enableModule(address)",
"params": ["0x0d70332CEB7F3C94b061cda48327891E3449A9E1"],
"operation": 0
},
{
"to": "0x4976fb03c32e5b8cfe2b6ccb31c09ba78ebaba41",
"value": "0",
"method": "multicall(bytes[])",
"params": [
[
"0x10f13a8c77651e2c25d2b7b073d1068420770f96a43563e74df60e234b2433b2be66e29e000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000008736e617073686f740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5654346679547875724353337178316b77745038654b4863347847424d7567587835515131686d4459644c320000000000000000000000",
"0x10f13a8c77651e2c25d2b7b073d1068420770f96a43563e74df60e234b2433b2be66e29e000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000f64616f726571756972656d656e747300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5a5841625979447437575571324871637651726e7877377a58475043474a76515853724e736a696b343955790000000000000000000000",
"0x10f13a8c77651e2c25d2b7b073d1068420770f96a43563e74df60e234b2433b2be66e29e000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000671756f72756d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053735303030000000000000000000000000000000000000000000000000000000",
"0x10f13a8c77651e2c25d2b7b073d1068420770f96a43563e74df60e234b2433b2be66e29e000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000375726c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001168747470733a2f2f676e6f7369732e696f000000000000000000000000000000",
"0x10f13a8c77651e2c25d2b7b073d1068420770f96a43563e74df60e234b2433b2be66e29e000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000661766174617200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d56443555484d5a66767375584a52645663626e6d7250677355466a446a705358416d6664763357374d4e34320000000000000000000000",
"0x10f13a8c77651e2c25d2b7b073d1068420770f96a43563e74df60e234b2433b2be66e29e000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000b636f6d2e646973636f7264000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001668747470733a2f2f636861742e676e6f7369732e696f00000000000000000000",
"0x10f13a8c77651e2c25d2b7b073d1068420770f96a43563e74df60e234b2433b2be66e29e000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000a636f6d2e676974687562000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006676e6f7369730000000000000000000000000000000000000000000000000000",
"0x10f13a8c77651e2c25d2b7b073d1068420770f96a43563e74df60e234b2433b2be66e29e000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000b636f6d2e747769747465720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008676e6f736973706d000000000000000000000000000000000000000000000000",
"0x8b95dd7177651e2c25d2b7b073d1068420770f96a43563e74df60e234b2433b2be66e29e000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000140da0c3e52c977ed3cbc641ff02dd271c3ed55afe000000000000000000000000",
"0x8b95dd7177651e2c25d2b7b073d1068420770f96a43563e74df60e234b2433b2be66e29e0000000000000000000000000000000000000000000000000000000080000064000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000140da0c3e52c977ed3cbc641ff02dd271c3ed55afe000000000000000000000000"
]
],
"operation": 0
},
{
"to": "0x0DA0C3e52C977Ed3cBc641fF02DD271c3ED55aFe",
"value": "0",
"method": "disableModule(address,address)",
"params": [
"0x0d70332CEB7F3C94b061cda48327891E3449A9E1",
"0x0eBaC21F7f6A6599B5fa5f57Baaa974ADFEC4613"
],
"operation": 0
}
]
Gnosis Chain Safe transaction payload:
This transaction should enable the new Reality module.
[
{
"to": "0x0DA0aDE3840133AAD32723fDf2cDBaE6D753A2F3",
"value": "0",
"method": "enableModule(address)",
"params": ["0xf1C276217e305D701484fa510A2efaf8A31573fd"],
"operation": 0
}
]
Snapshot settings
The snapshot settings should be updated to:
- enforce voting duration (7 days)
- enforce when voting starts (immediately on creation of proposal)
- enforce when snapshot is taken (same block that voting opens)
- enforce basic voting (FOR, AGAINST, ABSTAIN)
- enforce specific multisend contracts for each Reality module
- add the newly deployed reality modules
- use the
gno
snapshot strategy (aggregates GNO, LGNO, MGNO, and staked GNO on mainnet and Gnosis Chain)
Snapshot Text Record
The snapshot
text record at gnosis.eth
should be set to the IPFS hash QmVT4fyTxurCS3qx1kwtP8eKHc4xGBMugXx5QQ1hmDYdL2, corresponding with this json file:
{
"name": "GnosisDAO",
"skin": "gnosis",
"about": "GnosisDAO transparently guides decisions on development, support, and governance of its GNO token ecosystem. Start your proposal here: https://forum.gnosis.io",
"terms": "ipfs://QmYMwQwmsDPTtt3ncu1CaZXyJgdYD4EMbn86oAxT3AVtye",
"avatar": "ipfs://QmVD5UHMZfvsuXJRdVcbnmrPgsUFjDjpSXAmfdv3W7MN42",
"github": "gnosis",
"symbol": "GNO",
"filters": {
"minScore": 1,
"defaultTab": "all"
},
"network": "1",
"voting": {
"type": "basic",
"delay": 0,
"period": 604800,
"hideAbstain": false
},
"plugins": {
"safeSnap": {
"safes": [
{
"network": "1",
"realityAddress": "0x0d70332CEB7F3C94b061cda48327891E3449A9E1",
"multisend": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761"
},
{
"network": "100",
"realityAddress": "0xf1C276217e305D701484fa510A2efaf8A31573fd",
"multisend": "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761"
}
]
},
"quorum": {
"total": 75000,
"strategy": "static",
"basicCount": [0, 2]
},
"poap": {}
},
"twitter": "gnosisdao",
"website": "https://gnosis.io",
"location": "Ethereum",
"strategies": [
{
"name": "gno",
"network": "1",
"params": {
"symbol": "GNO",
"decimals": 18,
"SUBGRAPH_URL": "https://api.thegraph.com/subgraphs/id/QmfZ5cepEwspcrLLwtA3i5M6qEnv3WKDkpAtC65t8VpY6M"
}
},
{
"name": "delegation",
"network": "1",
"symbol": "GNO",
"params": {
"strategies": [
{
"name": "gno",
"params": {
"symbol": "GNO",
"decimals": 18,
"SUBGRAPH_URL": "https://api.thegraph.com/subgraphs/id/QmfZ5cepEwspcrLLwtA3i5M6qEnv3WKDkpAtC65t8VpY6M"
}
}
]
}
},
{
"name": "gno",
"network": "100",
"params": {
"symbol": "GNO",
"decimals": 18,
"SUBGRAPH_URL": "https://api.thegraph.com/subgraphs/id/QmaggnWhZKpqudcFgkNVbiu8HCYRPtK11EL2TMeA6S5ZXV"
}
},
{
"name": "delegation",
"network": "100",
"symbol": "GNO",
"params": {
"strategies": [
{
"name": "gno-vote-weight",
"params": {
"symbol": "GNO",
"decimals": 18,
"SUBGRAPH_URL": "https://api.thegraph.com/subgraphs/id/QmaggnWhZKpqudcFgkNVbiu8HCYRPtK11EL2TMeA6S5ZXV"
}
}
]
}
}
]
}
DAO Requirements text record
The daorequirements
record should be updated to remove things like quorum and minimum bond, which are now defined in the Snapshot settings above.
The daorequirements
text record at gnosis.eth
should be set to the IPFS hash QmZXAbYyDt7WUq2HqcvQrnxw7zXGPCGJvQXSrNsjik49Uy, corresponding with this markdown file:
# GnosisDAO Proposal Acceptance Criteria
In order for GnosisDAO's SnapSafe module to execute a transaction, any corresponding proposal must have passed, as reported by Reality.eth.
The reality.eth question should conform to this template (the required template ID is defined by the installed Snapsafe Module):
json
{"title": "Did the Snapshot proposal with the id %s in the gnosis.eth space pass the execution of the array of module transactions that have the hash 0x%s and does it meet the requirements of the document referenced in the daorequirements record at gnosis.eth? The hash is the keccak of the concatenation of the individual EIP-712 hashes of the Module transactions. If this question was asked before the corresponding Snapshot proposal was resolved, it should ALWAYS be resolved to INVALID!",
"lang": "en",
"type": "bool",
"category": "DAO proposal"}
Reality.eth should resolve the question to **“yes”** only for proposals that:
* the number of votes **FOR** is greater than the number of votes against **AGAINST**.
* were initiated as a Snapshot proposal in the `gnosis.eth` Snapshot space.
* had no significant service outages or availability issues that could have reasonably restricted GNO holders from casting their votes in the proposal.
* the module transaction hash in the Reality.eth question is the keccak hash of the concatenation of the individual EIP-712 hashes of the module transactions defined in the Snapshot proposal.
* the plain description of the transactions, and their intended result, in the proposal is complete and accurate.
* did not occur during, in, or as a result of any unauthorized or malicious changes to the gnosis.eth Snapshot space.
* were not filtered from the default view in the gnosis.eth Snapshot space during the voting period.
Reality.eth should resolve the question to **“invalid”** if:
* the Reality.eth question meets the above requirements but was created prior to the end of the proposal vote period and/or the snapshot block for the vote. i.e. the final results of the vote are not yet known.
In all other cases, the Reality.eth question should be resolved to **“no”**.
Subgraph
We battled with this subgraph for way longer than we should have trying to get Uniswap to play nicely, but ultimately had to make the decision to remove it for the sake of getting this proposal up.
The current subgraph is the the sans-uni
branch of this GitHub repo. It accounts for GNO on:
In the Snapshot settings above, we reference each subgraph by its IPFS hash, rather than linking to an <account>/<subgraph>
, in order to improve security. This means that we will require a DAO proposal to change the subgraph in future once we get accounting for the the various AMMs and lending pools working as intended.