# Contract Upgrades

Rocket Pool uses a [hub-and-spoke architecture](https://docs.rocketpool.net/developers/usage/contracts/contracts.html#contract-design) that allows contracts to be upgraded. In the current state of the protocol, upgrades are deemed necessary to allow for bug fixes, protocol improvements and adjustments to the development of Ethereum.

Currently, any oDAO member can propose a contract upgrade (or addition of a new network contract). After a vote delay (currently set to 7 days), members vote until 51% quorum is reached. After that, the upgrade can be executed. For the MinipoolDelegate contract specifically, the node operator has to opt-in to upgrades and has the ability to rollback to a previous version (the LEB8 MinipoolDelegate contract prevents rolling back).

The trust level that comes with contract upgrades is generally very high and only limited by the vote delay. Any network contract is able to change variables stored in RocketStorage. In particular, any measures that are put in to limit oDAO power (like [guardrails-balance-submission](https://knoshua.gitbook.io/analysis-of-odao-duties/guardrails-balance-submission "mention") and [guardrails-mev-penalties](https://knoshua.gitbook.io/analysis-of-odao-duties/guardrails-mev-penalties "mention")) can be undone through contract upgrades.

Value at risk includes RPL and RPL slated for auction are vulnerable, ETH in the deposit pool and smoothing pool (see also [eth-balance-submission](https://knoshua.gitbook.io/analysis-of-odao-duties/overview-of-duties/eth-balance-submission "mention") and [reward-tree-smoothing-pool](https://knoshua.gitbook.io/analysis-of-odao-duties/overview-of-duties/reward-tree-smoothing-pool "mention")). While MinipoolDelegates are protected by the opt-in mechanism, the presence of [mev-penalties](https://knoshua.gitbook.io/analysis-of-odao-duties/overview-of-duties/mev-penalties "mention") in existing delegates undermines the value of that feature, since an attacker could combine a malicious MinipoolDelegate upgrade with penalizing the existing delegate to blackmail node operators into upgrading.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://knoshua.gitbook.io/analysis-of-odao-duties/overview-of-duties/contract-upgrades.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
