Intro:
<aside>
🗒️ This is WIP document that will be used to collect all the high-level steps that OP stack developers should take into account when preparing for mainnet releases.
</aside>
👣 Steps to take in order to properly manage the entire releases process for the OP mainnet:
1. Governance threshold check
-
[ ] As you first step, you need to look into governance threshold to know will your feature pass and understand the all the governance needs for your proposal.
Good reads on the topic can be found: OPerating manual, Optimism Agora
Process explainer for this step:
The threshold for which changes require a governance vote is based on the User Protections clause of the Law of Chains. In summary, these protections are:
- State Transition and Messaging Validity: OP Chain state transitions or cross-chain messages sent to or from OP Chains must follow the rules of the latest governance-approved release of the OP Stack. This means that changes to the block derivation function or messenger contracts are always subject to a governance vote.
- Security, Uptime, and Liveness: Block production, sequencing, and bridging must satisfy uniform standards for security, uptime, and liveness across all OP Chains. This means that changes that could cause users to be unable to transact (e.g., changing the gas limit to something untenable) are subject to a governance vote.
- Universal, Governance-Approved Upgrades: OP Chains must upgrade together under OP Stack releases that are approved by governance. Any upgrades that aren’t backwards compatible are therefore subject to a governance vote.
Using this framework, we can define the following rough upgrade types and whether or not each upgrade type needs a governance vote. If you are uncertain if an upgrade requires governance approval, please request delegate feedback on the forum.
- Consensus Changes
- Predeploy Updates
- Cross-Chain Contracts
- Parameter Updates
- Non-Consensus Client Features
- Changes Affecting Transaction Inclusion/Ordering
- Non-Consensus, No-Coordination, Non-Ordering Changes