CIP-30: Implementing oSnap for Optimistic Governance in CoW DAO
author: Alex Gaines (againes@umaproject.org), John Shutt (john@umaproject.org), Manny Narang (manny@umaproject.org)
status: active
created: 2023-07-05
Simple Summary
This proposal aims to integrate oSnap, an optimistic governance tool developed by UMA, into the CoW DAO governance system. By leveraging oSnap, CoW DAO can execute the results of Snapshot votes on-chain, eliminating reliance on multi-signature wallets and promoting a more decentralized and efficient execution process.
Motivation
The motivation for this proposal is to enhance CoW DAO’s governance system by making it more efficient, secure, and decentralized. By adopting oSnap, CoW DAO can streamline its governance process and empower its token holders, thereby upholding the true spirit of decentralization.
Specification
UMA’s oSnap is a tool for making on-chain transactions based on off-chain voting decisions. After the integration of oSnap, the flow works like this:
- A Snapshot proposal can include a transaction payload that is executable if the proposal is approved by the DAO.
- After a vote completes, any address can post a bond and propose to execute the transactions on-chain by clicking a button on Snapshot.
- If no dispute arises about the proposal’s accuracy during the dispute window, the transactions are executed.
- In case of a dispute, the proposal is not executed and needs to be re-proposed. UMA token holders will determine who was correct in the dispute, with the correct party rewarded from the opposing party’s bond.
The oSnap integration process can be completed in a single afternoon. The steps to integrate oSnap are:
- Install the Zodiac app.
- Deploy an oSnap module through the Zodiac app.
- Add oSnap to the CoW DAO Snapshot space through the SafeSnap plug-in.
Overall Cost: There are no fees associated with the implementation of oSnap. There are also no fees to use UMA’s oracle to verify oSnap requests. Therefore, the overall cost of implementation is zero.
Rationale
Current DAO governance models often rely on multi-signature wallets for the execution of proposals, which can lead to delays and potential security vulnerabilities. Implementing oSnap, which allows for on-chain execution of off-chain votes, would eliminate the dependency on multi-sig wallets and the associated issues. Furthermore, oSnap’s dispute mechanism and incentives for correct submissions help maintain the integrity and accuracy of the decision-making process.
The integration of oSnap into CoW DAO’s governance aligns with the DAO’s mission of decentralization and community involvement. Implementing oSnap will not only streamline the governance process but also eliminate the need for reliance on multi-signature wallets, thereby promoting more direct community control. This approach aligns with the DAO’s guiding value of decentralization by reducing the need for intermediaries and giving more power to the token holders. Moreover, oSnap’s dispute mechanism provides an extra layer of security, ensuring that the outcomes of governance votes accurately reflect what was approved on Snapshot. Finally, the integration of oSnap is free and easy, making it a practical choice for enhancing CoW DAO’s governance.
The UMA team discussed oSnap with Chen from CoW Protocol, who brought up the importance of monitoring proposals. With oSnap, proposals go to the same closely monitored oracle systems as Polymarket, Sherlock, Cozy, and other oracle requests. Your DAO proposals will populate in UMA’s oracle dapp making it easy for people to identify and dispute bad proposals. In practice, questionable Polymarket proposals tend to be disputed within 30 minutes, and those proposals are harder to evaluate than oSnap proposals. Your proposals will also be pulled into bot monitoring systems that members of our competitive disputer network have set up, and you can use our open source code to set up Slack, Discord, and PagerDuty alerts. The Risk Labs engineering team is continuously improving our monitoring and is currently developing a bot that will not only alert on proposals but will automatically dispute if a faulty or malicious proposal is identified.
Since its launch earlier this year, oSnap has been adopted by Across, BarnBridge, ShapeShift, and +DAO to control their on-chain treasuries, securing over $40 million in value. oSnap is also being used by Lossless Protocol to secure their next generation of wrapped tokens.
Execution
Safe Transaction Data
The below shows the multisend call and detailed transaction data for deploying and enabling the oSnap module for the CoW DAO safe. All deployment steps can be performed through the Zodiac UI.
Multisend Call:
{
"method": "multiSend",
"types": [
"bytes"
],
"inputs": [
"0x00000000000000addb49795b0f9ba5bc298cdda23600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000544f1ab873c00000000000000000000000028cebfe94a03dbca9d17143e9d2bd1155dc26d5d000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000189dc2070d900000000000000000000000000000000000000000000000000000000000004a4a4f9edbf00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000460000000000000000000000000ca771eda0c70aa7d053ab1b25004559b918fe662000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000001bc16d674ec8000000000000000000000000000000000000000000000000000000000000000000c04153534552545f54525554480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a3000000000000000000000000000000000000000000000000000000000000000376492061737365727420746861742074686973207472616e73616374696f6e2070726f706f73616c2069732076616c6964206163636f7264696e6720746f2074686520666f6c6c6f77696e672072756c65733a2050726f706f73616c7320617070726f766564206f6e20536e617073686f742c2061732076657269666965642061742068747470733a2f2f736e617073686f742e6f72672f232f636f772e6574682c206172652076616c6964206173206c6f6e672061732074686572652069732061206d696e696d756d2071756f72756d206f6620333530303030303020616e642061206d696e696d756d20766f74696e6720706572696f64206f662031363820686f75727320616e6420697420646f6573206e6f742061707065617220746861742074686520536e617073686f7420766f74696e672073797374656d206973206265696e67206578706c6f69746564206f72206973206f746865727769736520756e617661696c61626c652e205468652071756f72756d20616e6420766f74696e6720706572696f6420617265206d696e696d756d20726571756972656d656e747320666f7220612070726f706f73616c20746f2062652076616c69642e2051756f72756d20616e6420766f74696e6720706572696f642076616c7565732073657420666f7220612073706563696669632070726f706f73616c20696e20536e617073686f742073686f756c642062652075736564206966207468657920617265206d6f726520737472696374207468616e207468652072756c657320706172616d657465722e20546865206578706c616e6174696f6e20696e636c75646564207769746820746865206f6e2d636861696e2070726f706f73616c206d7573742062652074686520756e697175652049504653206964656e74696669657220666f722074686520737065636966696320536e617073686f742070726f706f73616c20746861742077617320617070726f766564206f72206120756e69717565206964656e74696669657220666f7220612070726f706f73616c20696e20616e20616c7465726e617469766520766f74696e672073797374656d20617070726f7665642062792044414f20736f6369616c20636f6e73656e73757320696620536e617073686f74206973206265696e67206578706c6f69746564206f72206973206f746865727769736520756e617661696c61626c652e000000000000000000000000000000000000000000000000000000000000000000000000000000ca771eda0c70aa7d053ab1b25004559b918fe66200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024610b592500000000000000000000000085f520d59debd4c2902bb7f79acbc3dd4b5ab699"
],
"names": [
"transactions"
]
}
Detailed Transaction Data:
{
"version": "1.0",
"chainId": "1",
"createdAt": 1691615486406,
"meta": {
"name": "Transactions Batch",
"description": "",
"txBuilderVersion": "1.16.1",
"createdFromSafeAddress": "0xcA771eda0c70aA7d053aB1B25004559B918FE662",
"createdFromOwnerAddress": "",
"checksum": "0x1807bca7bc7dcea4d50fc7b8e4b680ca00513a9547b7e039f81484602c4d032d"
},
"transactions": [
{
"to": "0x000000000000aDdB49795b0f9bA5BC298cDda236",
"value": "0",
"data": null,
"contractMethod": {
"inputs": [
{
"name": "masterCopy",
"type": "address",
"internalType": "address"
},
{
"name": "initializer",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "saltNonce",
"type": "uint256",
"internalType": "uint256"
}
],
"name": "deployModule",
"payable": false
},
"contractInputsValues": {
"masterCopy": "0x28CeBFE94a03DbCA9d17143e9d2Bd1155DC26D5d",
"initializer": "0xa4f9edbf00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000460000000000000000000000000ca771eda0c70aa7d053ab1b25004559b918fe662000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000001bc16d674ec8000000000000000000000000000000000000000000000000000000000000000000c04153534552545f54525554480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a3000000000000000000000000000000000000000000000000000000000000000376492061737365727420746861742074686973207472616e73616374696f6e2070726f706f73616c2069732076616c6964206163636f7264696e6720746f2074686520666f6c6c6f77696e672072756c65733a2050726f706f73616c7320617070726f766564206f6e20536e617073686f742c2061732076657269666965642061742068747470733a2f2f736e617073686f742e6f72672f232f636f772e6574682c206172652076616c6964206173206c6f6e672061732074686572652069732061206d696e696d756d2071756f72756d206f6620333530303030303020616e642061206d696e696d756d20766f74696e6720706572696f64206f662031363820686f75727320616e6420697420646f6573206e6f742061707065617220746861742074686520536e617073686f7420766f74696e672073797374656d206973206265696e67206578706c6f69746564206f72206973206f746865727769736520756e617661696c61626c652e205468652071756f72756d20616e6420766f74696e6720706572696f6420617265206d696e696d756d20726571756972656d656e747320666f7220612070726f706f73616c20746f2062652076616c69642e2051756f72756d20616e6420766f74696e6720706572696f642076616c7565732073657420666f7220612073706563696669632070726f706f73616c20696e20536e617073686f742073686f756c642062652075736564206966207468657920617265206d6f726520737472696374207468616e207468652072756c657320706172616d657465722e20546865206578706c616e6174696f6e20696e636c75646564207769746820746865206f6e2d636861696e2070726f706f73616c206d7573742062652074686520756e697175652049504653206964656e74696669657220666f722074686520737065636966696320536e617073686f742070726f706f73616c20746861742077617320617070726f766564206f72206120756e69717565206964656e74696669657220666f7220612070726f706f73616c20696e20616e20616c7465726e617469766520766f74696e672073797374656d20617070726f7665642062792044414f20736f6369616c20636f6e73656e73757320696620536e617073686f74206973206265696e67206578706c6f69746564206f72206973206f746865727769736520756e617661696c61626c652e00000000000000000000",
"saltNonce": "1691615260889"
}
},
{
"to": "0xcA771eda0c70aA7d053aB1B25004559B918FE662",
"value": "0",
"data": null,
"contractMethod": {
"inputs": [
{
"internalType": "address",
"name": "module",
"type": "address"
}
],
"name": "enableModule",
"payable": false
},
"contractInputsValues": {
"module": "0x85f520D59deBD4c2902BB7f79ACbc3Dd4b5AB699"
}
}
]
}
Tenderly Simulation