Powers and authorities informational rpip - #110
Conversation
|
|
||
| A principal or agent has the authority to do X if the Rocket Pool community has explicitly or implicitly agreed that that principal or agent is allowed or supposed to be doing X. | ||
|
|
||
| To give an example, the pDAO has the authority to make changes to the Rocket Pool Protocol due to the shared understanding of the community that registeredNodes are the ‘principals’ of the Rocket Pool protocol. |
There was a problem hiding this comment.
I think the example here and in Power could be more concrete. Maybe the oDAO's power to report any rETH price and their authority to report an accurate blockchain price.
There was a problem hiding this comment.
I like the power example a lot, I'm less sold on the authority side. I tried updating the language to convey it a little more clearly, not sure if you think this addresses this point however.
For authority the main thing I want to preserve is that it's based on shared understanding rather than physical access. I think using the same price setting bit could be confusing there and instead convey that authority is the responsibility to do something rather than the shared permission to take action.
|
|
||
| * The oDAO has the power to replace any contract (except RocketStorage) in the Rocket Pool protocol via the oDAO upgrade power. | ||
| * The oDAO has the power to modify any non-protected parameter in the Rocket Pool protocol via the oDAO upgrade power. | ||
| * The oDAO has the power to call core contract functions protected by the generic ‘onlyLatestNetworkContract’ required via the oDAO upgrade power. This has several implications, most notably: |
There was a problem hiding this comment.
These 3 sub-bullets are a bit weird...
- The first one would require a contract upgrade with faked up contracts with appropriate names to fool the check in RocketVault
require(etherBalances[contractName] >= _amount, "Insufficient contract ETH balance");. I don't believe they have immediate access unless I'm missing something. - The second bullet would also require a contract upgrade for arbitrary withdrawals... or they could fake up a merkle tree, which is probably a lot easier and has no dependence on
onlyLatestNetworkContract - The third bullet is possible via
RocketNetworkPenalties.submitPenalty. The critical check isonlyTrustedNode, notonlyLatestNetworkContract
Minor aside: why are we using front ticks ‘onlyLatestNetworkContract’ instead of backticks onlyLatestNetworkContract?
There was a problem hiding this comment.
-
The oDAO has the power to replace any upgradeable contract (excludes RocketStorage and the token contracts) in the Rocket Pool protocol via the oDAO upgrade power, provided it is not vetoed by the Security Council and the required time delay has elapsed.
-
The oDAO has the power to modify any non-protected parameter in the Rocket Pool protocol via the oDAO upgrade power, provided it is not vetoed by the Security Council and the required time delay has elapsed.
The above has several implications, most notably:
| * The oDAO has the power to modify oDAO settings via the oDAO settings pathway. | ||
| * The oDAO has the power to take actions that modify the membership of the oDAO. | ||
| * The oDAO has the power to determine the split of RPL inflation via consensus on a rewards Merkle tree. [[GitHub](https://github.com/rocket-pool/rocketpool-research/blob/v6/Merkle%20Rewards%20System/rewards-calculation-spec.md)] | ||
| * The oDAO has the power to withdraw ETH at no cost from the deposit pool contract, via manipulation of the rETH exchange rate. [[Etherscan](https://etherscan.io/address/0xDD3f50F8A6CafbE9b31a427582963f465E745AF8)] |
There was a problem hiding this comment.
I'd probably talk about the power to set the exchange rate, and have these as sub-bullets.
- The oDAO has the power to set the protocols rETH exchange rate.
- Note that manipulating this value would allow for withdrawing ETH at no cost (from both the deposit pool contract and rETH token contract).
There was a problem hiding this comment.
- The oDAO has the power to set the protocol's rETH exchange rate, up to the max 2% per day.
- Note that manipulating this value would allow for withdrawing ETH at no cost (from both the deposit pool contract and rETH token contract).
|
|
||
| ##### Description | ||
|
|
||
| Any individual Rocket Pool Registered Node. All Trusted Nodes (oDAO) are also Registered Nodes (pDAO). |
There was a problem hiding this comment.
Minor technicality... A registered node running zero minipools has no pDAO vote power.
So it's more like "All pDAO members must have a Registered Node. All oDAO members must have a registered node, which is considered a Trusted Node."
There was a problem hiding this comment.
Any individual Rocket Pool Registered Node. All pDAO members must have a Registered Node. All oDAO members must have a registered node.
|
See messages in discord here. Also screencapped. |
maverickrp
left a comment
There was a problem hiding this comment.
Proposed update to this draft to bring all sections up to date
|
|
||
| ##### Description | ||
|
|
||
| The guardian address is an EOA defined in the RocketStorage contract (but outside the key-value mappings.) It was responsible for the initialization of the protocol. Some of its initial powers have been irrevocably disabled, while others are still active at the time of writing. |
There was a problem hiding this comment.
The guardian address is an EOA defined in the RocketStorage contract (but outside the key-value mappings.) It was responsible for the initialization of the protocol. Almost all of its initial powers have been irrevocably disabled.
| * The Guardian address has the power to modify pDAO settings via the pDAO settings pathway. | ||
| * The Guardian address has the power to modify the share of RPL inflation via the pDAO bootstrap pathway. | ||
| * The Guardian address has the power to spend the RPL tokens allocated to the pDAO via the pDAO bootstrap pathway. | ||
| * The Guardian address has the power to set the maximum penalty rate for minipools via the RocketMinipoolPenalty contract. |
There was a problem hiding this comment.
- The Guardian has the power to set the maximum penalty rate in the
RocketMinipoolPenaltycontract. This sets the maximum rate at which the oDAO can penalise minipools (megapool validators are excluded); it is currently set to zero.
|
|
||
| #### Authorities | ||
|
|
||
| No authorities have been assigned to the guardian address by the pDAO. Indirect authorities are inherited from the assumption that the guardian is controlled by Rocket Pool Pty Ltd and are listed in that section. |
There was a problem hiding this comment.
The Guardian has the authority, as delegated from the oDAO, to set the maximum penalty rate in the RocketMinipoolPenalty contract
|
|
||
| ##### Description | ||
|
|
||
| ProtocolDAO governance is defined as successful governance proposals voted on by Rocket Pool community members running Registered Nodes. |
There was a problem hiding this comment.
ProtocolDAO governance is defined as successful governance proposals voted on by Rocket Pool community members running Registered Nodes using a trustless onchain fraud-proof voting system. A node’s voting power is a function of its staked RPL. Proposals require a bond, may be challenged by other node operators, and pass through a mandatory challenge period delay and two-phase voting process before execution.
|
|
||
| ##### Powers | ||
|
|
||
| The pDAO currently has no direct, on-chain power over the Rocket Pool protocol. |
There was a problem hiding this comment.
- The pDAO has the power to change a defined table of protocol settings across deposit, inflation, minipool/megapool, network, node, rewards, proposal, auction, and security-council parameters, via successful onchain ‘Parameter Change’ proposals.
- The pDAO has the power to spend treasury RPL, either as one-off ‘Treasury Spend’ proposals or as recurring ‘Treasury Contract’ payments
- The pDAO has the power to invite and remove Security Council members and to set the council’s quorum, via ‘Security Council Change’ proposals
- The pDAO has the power to veto a proposal it deems spam or malicious via a dedicated on-chain veto vote, with a successful veto burning the proposer’s bond
| Usage of the oDAO pathways to do anything requires a majority vote from oDAO members. While a delay is imposed post-proposal-prior-to-vote, there is no post-vote-prior-to-execution time lock present in the Rocket Pool protocol at the time of writing. | ||
|
|
||
| The Guardian address has the power (but not authority) to use the pDAO settings pathway at will with no delay. |
There was a problem hiding this comment.
Usage of the oDAO pathways to do anything requires a majority vote from oDAO members. There is an upgrade delay of 7 days of ODAO period, plus 7 days of veto before execution.
pDAO onchain proposals are subject to a bonded propose-and-challenge period, a mandatory pre-vote delay, and a two-phase vote before execution.
Security Council actions take effect immediately once quorum is reached, but only for the pre-approved, guardrailed parameter subset.
|
|
||
| * The oDAO has the power to replace any contract (except RocketStorage) in the Rocket Pool protocol via the oDAO upgrade power. | ||
| * The oDAO has the power to modify any non-protected parameter in the Rocket Pool protocol via the oDAO upgrade power. | ||
| * The oDAO has the power to call core contract functions protected by the generic ‘onlyLatestNetworkContract’ required via the oDAO upgrade power. This has several implications, most notably: |
There was a problem hiding this comment.
-
The oDAO has the power to replace any upgradeable contract (excludes RocketStorage and the token contracts) in the Rocket Pool protocol via the oDAO upgrade power, provided it is not vetoed by the Security Council and the required time delay has elapsed.
-
The oDAO has the power to modify any non-protected parameter in the Rocket Pool protocol via the oDAO upgrade power, provided it is not vetoed by the Security Council and the required time delay has elapsed.
The above has several implications, most notably:
| * The oDAO has the power to call core contract functions protected by the generic ‘onlyLatestNetworkContract’ required via the oDAO upgrade power. This has several implications, most notably: | ||
| * The ability to withdraw RPL and ether from the RocketVault contract. | ||
| * The ability to withdraw ether from the RocketSmoothingPool contract. | ||
| * The ability to set the Minipool penalty within the bounds of the maximum penalty. |
There was a problem hiding this comment.
- The ability to set the Minipool penalty within the bounds of the maximum penalty. A pDAO-controlled guardrail caps how much can be penalised over time.
| * The oDAO has the power to modify oDAO settings via the oDAO settings pathway. | ||
| * The oDAO has the power to take actions that modify the membership of the oDAO. | ||
| * The oDAO has the power to determine the split of RPL inflation via consensus on a rewards Merkle tree. [[GitHub](https://github.com/rocket-pool/rocketpool-research/blob/v6/Merkle%20Rewards%20System/rewards-calculation-spec.md)] | ||
| * The oDAO has the power to withdraw ETH at no cost from the deposit pool contract, via manipulation of the rETH exchange rate. [[Etherscan](https://etherscan.io/address/0xDD3f50F8A6CafbE9b31a427582963f465E745AF8)] |
There was a problem hiding this comment.
- The oDAO has the power to set the protocol's rETH exchange rate, up to the max 2% per day.
- Note that manipulating this value would allow for withdrawing ETH at no cost (from both the deposit pool contract and rETH token contract).
| * The oDAO has the power to approve the canonical rewards Merkle tree at the end of each reward period. [[Etherscan](https://etherscan.io/address/0xA805d68b61956BC92d556F2bE6d18747adAeEe82#code#F1#L165)] This uses a separate governance pathway. | ||
|
|
||
| ##### Authorities | ||
|
|
There was a problem hiding this comment.
- oDAO has the authority to replace any upgradeable contract (excludes RocketStorage and the token contracts) in the Rocket Pool protocol via the oDAO upgrade power, provided it is not vetoed by the Security Council and the required time delay has elapsed, and provided that the pDAO have first ratified the upgrade.
|
|
||
| ##### Description | ||
|
|
||
| The Grants Management Committee exists to distribute grants and bounties, retrospectively and prospectively, to further the goals of the Rocket Pool protocol. Bound by [[RPIP-26](RPIP-26.md)], this committee must consist of nine members. |
There was a problem hiding this comment.
The Grants Management Committee exists to distribute grants and bounties, retrospectively and prospectively, to further the goals of the Rocket Pool protocol. Bound by [RPIP-40], this committee must consist of seven members.
|
|
||
| ##### Description | ||
|
|
||
| The Grants Management Committee exists to distribute grants and bounties, retrospectively and prospectively, to further the goals of the Rocket Pool protocol. Bound by [[RPIP-26](RPIP-26.md)], this committee must consist of nine members. |
There was a problem hiding this comment.
The Grants Management Committee exists to distribute grants and bounties, retrospectively and prospectively, to further the goals of the Rocket Pool protocol. Bound by [RPIP-40], this committee must consist of seven members.


Finally turned this into an informational RPIP any formatting or content comments and suggestions are most welcome @Valdorff