The Design Philosophy Behind the First Release of the OP Stack
The successful OP Goerli Testnet upgrade is behind us, a robust audit competition is putting the Bedrock architecture under a microscope, and voting on the upgrade proposal submitted to the Token House commences February 15. Bedrock is so close to landing on OP Mainnet, and we want to take this opportunity to share more details about the vision and technical specifics behind this release.
Read on to learn about the design philosophy that went into crafting the Bedrock upgrade, why it is important, and how it translated into improvements on OP Mainnet at a protocol level.
Reduce, Reuse, Re-engineer
From the earliest stages of conceptualizing the Bedrock upgrade, reducing the amount of code in the OP Stack was a key priority for the OP Labs engineering team. This goal is both practical and strategic. Very simply, each line of code in a codebase costs money to maintain and presents another opportunity for a bug. The less code in a system, the less expensive it is to maintain and the more secure it can be.
The way OP Labs achieved a minimal codebase was by reusing as much code as possible from Ethereum. Pragmatically, this also increases security. A new L2 codebase is bound to have more bugs than one that has been in production and battle-tested for 8 plus years.
- Reducing codebase complexity and cost
- Enhancing security through reuse of battle-tested code
Beyond this, reusing the Ethereum codebase helps us arrive at our second guiding principle for building Bedrock: true Ethereum-equivalence.
Ethereum-Equivalence
Ensuring the Bedrock release is as close to 100% Ethereum-equivalent as possible is good for developers in our community. Inheriting improvements from L1 will require much less lift from developers who work on Optimism at a protocol level. It will also reduce the load on the OP Labs engineering team and help them build with our community in mind. Minimally modified execution clients make it easy for us to stay up to date with Ethereum Mainnet changes as they are implemented.
- Facilitating seamless integration with Ethereum ecosystem
- Reducing developer effort and maintenance
All of this adds up to an ecosystem that will make it simple for all Ethereum-native protocol contributors to experiment on OP Mainnet after the Bedrock release.
Bedrock is designed with similar abstractions and minimal difference from Ethereum. Our codebase also makes use of common Ethereum terms. Protocol-level equivalence means that core Ethereum contributors will understand implicitly how to use the OP Stack, and OP Labs developers will similarly find it easy to contribute to Ethereum.
Ultimately, being 1:1 with Ethereum allows us to serve as the proving ground for experimental projects and EIPs in the future. Core Ethereum devs will be able to experiment, test, and innovate on the most Ethereum-equivalent L2 codebase out there.
Modularity
Modularity is the star of the Bedrock release, making it simple to swap out different components in the OP Stack. It prepares Optimism for the future, enabling support for multiple execution layer clients and allowing the rollup to use either fault proofs or validity proofs (e.g., a zk-SNARK) as a proof mechanism. This flexible architecture can also adapt to future developments in the Ethereum ecosystem.
- Supporting multiple execution layer clients
- Flexibility in proof mechanisms
This flexibility also just makes it really fun to build on Optimism, because it opens the door to endless possibilities that come from customizing modules for specific purposes. In this way, Bedrock enables significant experimentation and innovation on the protocol side of the OP Stack.
The best example of how this can work in practice is the work Lattice did to modify the OP Stack to release OP Craft.
What’s next?
An upgrade proposal has be sent to the Token House for approval. If it passes successfully, OP Mainnet’s migration to Bedrock will happen in the weeks following—all hands on deck to ensure a smooth upgrade!
If you can’t get enough of all things Bedrock, check out the technical Bedrock explainer we just released in the Ethereum-Optimism Community Hub. We are also hosting a Bedrock-themed AMA in our Discord on February 8th at 6:30pm UTC—hope you can join us! Here’s a direct link to the Discord event!
Stay tuned for a lot of deep-dive content in the coming weeks, including several Dev blog articles examining specific protocol improvements like two-step withdrawals, reduced L1 data fees, multi-client support, and more.