diff --git a/README.md b/README.md index e3d248a..eb2813a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ #

RingDAO

-### Koi +## Koi ``` Multisig Plugin Setup: 0xC93c3931a2045FCb9C2280f710717900F9C14fBc TokenVoting Plugin Setup: 0x91943aa31Db7c43761318F0191156044c0f86021 @@ -14,3 +14,44 @@ - 0x875D59D1058425F0c945e9193B29638c5622e657 - 0xE4615D1F35B5A589c65a5A1720E1b65A3965aB18 ``` + +## Optimistic Token Voting plugin + +This plugin is an adapted version of Aragon's [Optimistic Token Voting plugin](https://github.com/aragon/optimistic-token-voting-plugin). + +Only addresses that have been granted `PROPOSER_PERMISSION_ID` on the plugin can create proposals. These adresses belong to the multisig's governed by the Security Council. + +Proposals can only be executed when the veto threshold hasn't been reached after a given period of time. + +The governance settings need to be defined when the plugin is installed but the DAO can update them at any time. + +### Permissions + +- Only proposers can create proposals on the plugin +- The plugin can execute actions on the DAO +- The DAO can update the plugin settings +- The DAO can upgrade the plugin + +## Multisig + +It allows the Security Council members to create and approve proposals. After a certain minimum of approvals is met, proposals can be relayed to the [Optimistic Token Voting plugin](#optimistic-token-voting-plugin) only. + +The ability to relay proposals to the [Optimistic Token Voting plugin](#optimistic-token-voting-plugin) is restricted by a [permission condition](src/conditions/StandardProposalCondition.sol), which ensures that a minimum veto period is defined as part of the parameters. + +![Standard proposal flow](./img/std-proposal-flow.png) + +### Permissions + +- Only members can create proposals +- Only members can approve +- The plugin can only create proposals on the [Optimistic Token Voting plugin](#optimistic-token-voting-plugin) provided that the `duration` is equal or greater than the minimum defined +- The DAO can update the plugin settings + +## DO's and DONT's + +- Never grant `ROOT_PERMISSION` unless you are just trying things out +- Never uninstall all plugins, as this would brick your DAO +- Ensure that there is at least always one plugin with `EXECUTE_PERMISSION` on the DAO +- Ensure that the DAO is ROOT on itself +- Use the `_gap[]` variable for upgradeable plugins, as a way to reserve storage slots for future plugin implementations + - Decrement the `_gap` number for every new variable (slot) you add in the future diff --git a/img/std-proposal-flow.png b/img/std-proposal-flow.png new file mode 100644 index 0000000..0b9442e Binary files /dev/null and b/img/std-proposal-flow.png differ