From e01ae1495b1b074559a4c595af6cb2f9b9298213 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Mon, 13 Jan 2025 09:16:58 -0800 Subject: [PATCH 01/13] Initial refactor Still needs various nav fixes an a second eye on necessary changes --- pages/chain/addresses.mdx | 2 +- pages/chain/getting-started.mdx | 22 +++++------ pages/chain/networks.mdx | 8 ++-- pages/chain/security/faq.mdx | 46 +++++++++++------------ pages/chain/security/privileged-roles.mdx | 28 +++++++------- pages/chain/security/security-policy.mdx | 4 +- pages/chain/testing/testing-apps.mdx | 22 +++++------ pages/chain/tokenlist.mdx | 6 +-- 8 files changed, 69 insertions(+), 69 deletions(-) diff --git a/pages/chain/addresses.mdx b/pages/chain/addresses.mdx index b768b476d..e88b3ae9c 100644 --- a/pages/chain/addresses.mdx +++ b/pages/chain/addresses.mdx @@ -11,7 +11,7 @@ import { SuperchainContractTable } from '@/components/SuperchainContractTable' # Contract Addresses -This reference guide lists all the contract addresses for Mainnet and Testnet, as found on the [superchain-registry](https://github.com/ethereum-optimism/superchain-registry/tree/main). +This reference guide lists all the contract addresses for OP Stack chains, as found on the [superchain-registry](https://github.com/ethereum-optimism/superchain-registry/tree/main). See the [Smart Contracts Overview](/stack/smart-contracts) for high-level details and access to the source code. diff --git a/pages/chain/getting-started.mdx b/pages/chain/getting-started.mdx index d4af9faea..a606cd9f6 100644 --- a/pages/chain/getting-started.mdx +++ b/pages/chain/getting-started.mdx @@ -1,19 +1,19 @@ --- -title: Getting started developing for OP Mainnet +title: Getting started developing for OP Stack chains lang: en-US -description: Learn the basics of OP Mainnet development. +description: Learn the basics of OP Stack development. --- import { Steps } from 'nextra/components' -# Getting started developing for OP Mainnet +# Getting started developing for OP Stack chains -This guide explains the basics of OP Mainnet development. -OP Mainnet is [EVM equivalent](https://web.archive.org/web/20231127160757/https://medium.com/ethereum-optimism/introducing-evm-equivalence-5c2021deb306), meaning we run a slightly modified version of the same `geth` you run on mainnet. -Therefore, the differences between OP Mainnet development and Ethereum development are minor. +This guide explains the basics of OP Stack development. +OP Stack chains are [EVM equivalent](https://web.archive.org/web/20231127160757/https://medium.com/ethereum-optimism/introducing-evm-equivalence-5c2021deb306), meaning they run a slightly modified version of the same `geth` you run on mainnet. +Therefore, the differences between OP Stack development and Ethereum development are minor. But a few differences [do exist](/stack/differences). -## OP Mainnet and OP Sepolia endpoint URLs +## OP Stack chains endpoint URLs To access any Ethereum type network you need an endpoint. [These providers](/builders/tools/connect/rpc-providers) support our networks. @@ -23,14 +23,14 @@ For development purposes we recommend you use either a local development node or That way you don't need to spend real money. If you need ETH on OP Sepolia for testing purposes, [you can use this faucet](https://console.optimism.io/faucet?utm_source=docs). -## Interacting with contracts on OP Mainnet or OP Sepolia +## Interacting with contracts on OP Stack chains We have Hardhat's Greeter contract on OP Sepolia at address [0x9d334aFBa83865E67a9219830ADA57aaA9406681](https://sepolia-optimism.etherscan.io/address/0x9d334aFBa83865E67a9219830ADA57aaA9406681#code). You can verify your development stack configuration by interacting with it. ## Development stacks -As you can see in the different development stacks below, the way you deploy contracts and interact with them on OP Mainnet or OP Sepolia is almost identical to the way you do it with L1 Ethereum. +As you can see in the different development stacks below, the way you deploy contracts and interact with them on OP Stack chains is almost identical to the way you do it with L1 Ethereum. The most visible difference is that you have to specify a different endpoint (of course). The list of other differences is [here](differences). @@ -52,7 +52,7 @@ Not only is it faster, but such EVMs often have extra features, such as the [abi ### Debug before deploying After you are done with that development, debug your decentralized application using either a [development node](/chain/testing/dev-node) or the [Sepolia test network](/chain/networks). -This lets you debug parts that are OP Mainnet specific such as calls to bridges to transfer ETH or tokens between layers. +This lets you debug parts that are OP Stack chains specific such as calls to bridges to transfer ETH or tokens between layers. Only when you have a version that works well on a test network should you deploy to the production network, where every transaction has a cost. @@ -62,4 +62,4 @@ You don't have to upload your source code to [block explorers](/builders/tools/b On the test network, it lets you issue queries and transactions from the explorer's user interface. On the production network, it lets users know exactly what your contract does, which is conducive to trust. -Just remember, if you use [the Etherscan API](https://explorer.optimism.io/apis), you need one API key for OP Mainnet and a separate one for OP Sepolia. +Just remember, if you use [the Etherscan API](https://explorer.optimism.io/apis), you need one API key for OP Stack chains and a separate one for OP Sepolia. diff --git a/pages/chain/networks.mdx b/pages/chain/networks.mdx index a7e97799d..ae7528562 100644 --- a/pages/chain/networks.mdx +++ b/pages/chain/networks.mdx @@ -1,14 +1,14 @@ --- -title: OP networks and public RPC endpoints +title: OP Stack networks and public RPC endpoints lang: en-US -description: Learn about the different OP networks and public RPC endpoints. +description: Learn about the different OP Stack networks and public RPC endpoints. --- import { Callout } from 'nextra/components' -# OP networks and public RPC endpoints +# OP Stack networks and public RPC endpoints -This reference guide provides a listing of the different OP networks and public RPC endpoints. +This reference guide provides a listing of the different OP Stack networks and public RPC endpoints. The public RPC URLs provided below are rate limited and do not support websocket connections. diff --git a/pages/chain/security/faq.mdx b/pages/chain/security/faq.mdx index 002244cc8..7c9eca25f 100644 --- a/pages/chain/security/faq.mdx +++ b/pages/chain/security/faq.mdx @@ -1,40 +1,40 @@ --- -title: OP Mainnet security model +title: OP Stack security model lang: en-US -description: Learn about the OP Mainnet security model and answers to common questions. +description: Learn about the OP Stack security model and answers to common questions. --- import { Callout } from 'nextra/components' -# OP Mainnet security model +# OP Stack security model -OP Mainnet is a work in progress. -Constant, iterative improvement of the security mechanisms that safeguard OP Mainnet users is a top priority for the entire [Optimism Collective](https://community.optimism.io/docs/governance/). -The Optimism Collective strives to be clear and transparent about the security of OP Mainnet and the OP Stack as a whole. +Many OP Stack chains, such as OP Mainnet, are a work in progress. +Constant, iterative improvement of the security mechanisms that safeguard OP Stack users is a top priority for the entire [Optimism Collective](https://community.optimism.io/docs/governance/). +The Optimism Collective strives to be clear and transparent about the security of OP Stack chains and the OP Stack as a whole. ## Bottom line The security model of any blockchain system is only as strong as its lowest common denominator. -At the moment, **it's important to understand that the security of OP Mainnet is dependent on a [multisig](https://etherscan.io/address/0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A)** managed jointly by the [Optimism Security Council](https://gov.optimism.io/t/intro-to-optimisms-security-council/6885) and the Optimism Foundation. -OP Mainnet and the OP Stack in general **may also contain unknown bugs that could lead to the loss of some or all of the ETH or tokens held within the system**. +At the moment, **it's important to understand that the security of OP Stack chains is dependent on a [multisig](https://etherscan.io/address/0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A)** managed jointly by the [Optimism Security Council](https://gov.optimism.io/t/intro-to-optimisms-security-council/6885) and the Optimism Foundation. +OP Stack chains **may also contain unknown bugs that could lead to the loss of some or all of the ETH or tokens held within the system**. -## OP Mainnet multisig +## OP Stack multisig -The security of OP Mainnet is currently dependent on a multisig managed jointly by the [Optimism Security Council](https://gov.optimism.io/t/intro-to-optimisms-security-council/6885) and the Optimism Foundation. +The security of OP Stack chains is currently dependent on a multisig managed jointly by the [Optimism Security Council](https://gov.optimism.io/t/intro-to-optimisms-security-council/6885) and the Optimism Foundation. This multisig is a [2-of-2 nested multisig](https://etherscan.io/address/0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A) which is in turn governed by a [10-of-13 multisig](https://etherscan.io/address/0xc2819DC788505Aac350142A7A707BF9D03E3Bd03) managed by the Optimism Security Council and a [5-of-7 multisig](https://etherscan.io/address/0x847B5c174615B1B7fDF770882256e2D3E95b9D92) managed by the Optimism Foundation. -This multisig can be used to upgrade core OP Mainnet smart contracts **without upgrade delays** to allow for quick responses to potential security concerns. -All upgrades to the OP Mainnet system must be approved by both component multisigs and either can veto an upgrade. +This multisig can be used to upgrade core OP Stack smart contracts **without upgrade delays** to allow for quick responses to potential security concerns. +All upgrades to the OP Stack system must be approved by both component multisigs and either can veto an upgrade. ## Fault proofs It is important to understand that **fault proofs are not a silver bullet** and that **fault proofs provide limited improvements to the security of a system if the system still has a multisig or security council that can instantly upgrade the system**. - OP Mainnet is following a multi-client and multi-proof approach designed to eventually remove the need for instant upgrades entirely. + OP Stack chains are following a multi-client and multi-proof approach designed to eventually remove the need for instant upgrades entirely. -Users can withdraw ETH and tokens from OP Mainnet to Ethereum by submitting a withdrawal proof that shows the withdrawal was actually included inside of OP Mainnet. -Withdrawals are proven against proposals about the state of OP Mainnet that are published through the [`DisputeGameFactory`](https://github.com/ethereum-optimism/optimism/blob/363c5d7f4fb14180a0e2a28cc948fe2146f03dce/packages/contracts-bedrock/src/dispute/DisputeGameFactory.sol) contract. +Users can withdraw ETH and tokens from OP Stack chains to Ethereum by submitting a withdrawal proof that shows the withdrawal was actually included inside of the OP Stack chain. +Withdrawals are proven against proposals about the state of the chain that are published through the [`DisputeGameFactory`](https://github.com/ethereum-optimism/optimism/blob/363c5d7f4fb14180a0e2a28cc948fe2146f03dce/packages/contracts-bedrock/src/dispute/DisputeGameFactory.sol) contract. Proposals can be submitted to the `DisputeGameFactory` contract by any user and submissions do not require any special permissions. Each submitted proposal creates a [`FaultDisputeGame`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/dispute/FaultDisputeGame.sol) contract that allows any other user to challenge the validity of a proposal by participating in a "fault proof" process. @@ -49,31 +49,31 @@ The Guardian can also choose to shift the system to use a `PermissionedDisputeGa Please also keep in mind that just like any other system, **the Optimism codebase may contain unknown bugs** that could lead to the loss of some or all of the ETH or tokens held within the system. The OP Stack has been audited [on many occasions](https://github.com/ethereum-optimism/optimism/tree/v1.1.4/technical-documents/security-reviews), but **audits are not a stamp of approval** and **a completed audit does not mean that the audited codebase is free of bugs.** -It's important to understand that using OP Mainnet inherently exposes you to the risk of bugs within the Optimism codebase, and that you use OP Mainnet at your own risk. +It's important to understand that using OP Stack chains inherently exposes you to the risk of bugs within the Optimism codebase, and that you use these chains at your own risk. ## Work in progress ### Sequencer decentralization -The Optimism Foundation currently operates the sole sequencer on OP Mainnet. +The Optimism Foundation currently operates the sole sequencer on OP Stack chains. Although users can always bypass the Sequencer by sending transactions directly to the [`OptimismPortal`](https://github.com/ethereum-optimism/optimism/blob/5877ee24cc9aaef5848c1372e0e196707fb336a0/packages/contracts-bedrock/src/L1/OptimismPortal.sol) contract, sequencer decentralization can still help mitigate the effect of short-term outages for users. ## Security model FAQ -### Does OP Mainnet have fault proofs? +### Do OP Stack chains have fault proofs? -**Yes**, OP Mainnet has fault proofs. +**Yes**, fault proofs are available to OP Stack chains. It is important to note that **fault proofs are not a silver bullet** and that **fault proofs provide limited improvements to the security of a system if the system still has a multisig or security council that can instantly upgrade the system**. A system with fast upgrade keys, such as OP Mainnet, is fully dependent on the upgrade keys for security. -OP Mainnet's goal is to be the first system that deploys fault proofs that can secure the system by themselves, without fast upgrade keys. +The goal is to be the first system that deploys fault proofs that can secure the system by themselves, without fast upgrade keys. ### How is Optimism planning to remove the multisig? -Check out Optimism's detailed [Pragmatic Path to Decentralization](https://web.archive.org/web/20230331065342/https://medium.com/ethereum-optimism/our-pragmatic-path-to-decentralization-cb5805ca43c1) post for a detailed view into how the multisig may be removed in a way that makes OP Mainnet the first chain with true fault proof security. +Check out Optimism's detailed [Pragmatic Path to Decentralization](https://web.archive.org/web/20230331065342/https://medium.com/ethereum-optimism/our-pragmatic-path-to-decentralization-cb5805ca43c1) post for a detailed view into how the multisig may be removed in a way that makes OP Stack chains the first with true fault proof security. -### How can I help make OP Mainnet more secure? +### How can I help make OP Stack chains more secure? -[OP Mainnet has one of the biggest bug bounties (ever)](/chain/security/security-policy). +[OP Stack has one of the biggest bug bounties (ever)](/chain/security/security-policy). You can earn up to $2,000,042 by finding critical bugs in the Optimism codebase. You can also run your own verifier node to detect network faults. diff --git a/pages/chain/security/privileged-roles.mdx b/pages/chain/security/privileged-roles.mdx index 040d2b940..efd9563fb 100644 --- a/pages/chain/security/privileged-roles.mdx +++ b/pages/chain/security/privileged-roles.mdx @@ -1,20 +1,20 @@ --- -title: Privileged Roles in OP Mainnet +title: Privileged Roles in OP Stack Chains lang: en-US -description: Learn about the privileged roles in OP Mainnet. +description: Learn about the privileged roles in OP Stack chains. --- import { Callout } from 'nextra/components' -# Privileged Roles in OP Mainnet +# Privileged Roles in OP Stack Chains -OP Mainnet is on a [Pragmatic Path to Decentralization](https://blog.oplabs.co/decentralization-roadmap/). -In its current state, OP Mainnet still includes some "privileged" roles that give certain addresses the ability to carry out specific actions. +OP Stack chains follow a [Pragmatic Path to Decentralization](https://blog.oplabs.co/decentralization-roadmap/). +In their current state, OP Stack chains still include some "privileged" roles that give certain addresses the ability to carry out specific actions. Read this page to understand these roles, why they exist, and what risks they pose. ## L1 Proxy Admin -The L1 Proxy Admin is an address that can be used to upgrade most OP Mainnet system contracts. +The L1 Proxy Admin is an address that can be used to upgrade most OP Stack chains system contracts. ### Risks @@ -33,12 +33,12 @@ The L1 Proxy Admin is an address that can be used to upgrade most OP Mainnet sys ## L2 Proxy Admin -The L2 Proxy Admin is an address that can be used to upgrade most OP Mainnet system contracts on L2. The L2 Proxy Admin owner is the [aliased address](/chain/differences#address-aliasing) of the L1ProxyAdmin owner, which means the L2 ProxyAdmin Owner is equal to the L1 ProxyAdmin Owner, but due to aliasing it's a different address. Here's how that works: +The L2 Proxy Admin is an address that can be used to upgrade most OP Stack chains system contracts on L2. The L2 Proxy Admin owner is the [aliased address](/chain/differences#address-aliasing) of the L1ProxyAdmin owner, which means the L2 ProxyAdmin Owner is equal to the L1 ProxyAdmin Owner, but due to aliasing it's a different address. Here's how that works: * Given an L1 contract address, the aliased L2 address is equal to `L1_contract_address` + `0x1111000000000000000000000000000000001111`. * Using `0x6B1BAE59D09fCcbdDB6C6cceb07B7279367C4E3b` as an example, the `0x6B` address is the L2 address that's been aliased, so to figure out the original L1 address you calculate `0x6B1BAE59D09fCcbdDB6C6cceb07B7279367C4E3b` - `0x1111000000000000000000000000000000001111`. * That result gives an L1 contract address of `0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A`, which should be the 2/2 Safe owned by Foundation + Security Council that is L1 ProxyAdmin Owner. -* No one has the private key for `0x6B1BAE59D09fCcbdDB6C6cceb07B7279367C4E3b` on OP Mainnet, which means the only way for the L2 ProxyAdmin owner to send transactions is via deposit transactions from the L1 `0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A` address. +* No one has the private key for `0x6B1BAE59D09fCcbdDB6C6cceb07B7279367C4E3b` on OP Stack chains, which means the only way for the L2 ProxyAdmin owner to send transactions is via deposit transactions from the L1 `0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A` address. * For help with the calculations, see the [`AddressAliasHelper` library](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/vendor/AddressAliasHelper.sol). ### Risks @@ -58,7 +58,7 @@ The L2 Proxy Admin is an address that can be used to upgrade most OP Mainnet sys read the descriptions above for more details. -* **OP Mainnet**: [`0x6B1BAE59D09fCcbdDB6C6cceb07B7279367C4E3b`](https://optimistic.etherscan.io/address/0x6B1BAE59D09fCcbdDB6C6cceb07B7279367C4E3b) +* **OP Stack chains**: [`0x6B1BAE59D09fCcbdDB6C6cceb07B7279367C4E3b`](https://optimistic.etherscan.io/address/0x6B1BAE59D09fCcbdDB6C6cceb07B7279367C4E3b) * **OP Sepolia:** [`0x2FC3ffc903729a0f03966b917003800B145F67F3`](https://sepolia-optimism.etherscan.io/address/0x2FC3ffc903729a0f03966b917003800B145F67F3) @@ -86,8 +86,8 @@ The System Config Owner is an address that can be used to change the values with ### Description -The Batcher is a software service that submits batches of transactions to Ethereum on behalf of the current OP Mainnet Sequencer. -OP Mainnet nodes will look for transactions from this address to find new batches of L2 transactions to process. +The Batcher is a software service that submits batches of transactions to Ethereum on behalf of the current OP Stack chains Sequencer. +OP Stack chains nodes will look for transactions from this address to find new batches of L2 transactions to process. ### Risks @@ -162,13 +162,13 @@ The Challenger is an address that can participate in and challenge `Permissioned ### Description -The Guardian is an address that can be used to pause several system contracts on OP Mainnet. +The Guardian is an address that can be used to pause several system contracts on OP Stack chains. This is a backup safety mechanism that allows for a temporary halt, particularly of withdrawal logic, in the event of a security concern. The Guardian can also manage various aspects of the `OptimismPortal` contract to address active security concerns. ### Capabilities -* Pause several system contracts on OP Mainnet. +* Pause several system contracts on OP Stack chains. * Disable the ability for specific dispute game types from being used to execute withdrawals. * Disable the ability for specific dispute game instances from being used to execute withdrawals. @@ -188,7 +188,7 @@ The Guardian can also manage various aspects of the `OptimismPortal` contract to ## Mint Manager Owner -The Mint Manager Owner is an address that controls the [`MintManager`](https://github.com/ethereum-optimism/optimism/blob/62c7f3b05a70027b30054d4c8974f44000606fb7/packages/contracts-bedrock/contracts/governance/MintManager.sol) contract that can be used to mint new OP tokens on OP Mainnet. +The Mint Manager Owner is an address that controls the [`MintManager`](https://github.com/ethereum-optimism/optimism/blob/62c7f3b05a70027b30054d4c8974f44000606fb7/packages/contracts-bedrock/contracts/governance/MintManager.sol) contract that can be used to mint new OP tokens on OP Stack chains. ### Risks diff --git a/pages/chain/security/security-policy.mdx b/pages/chain/security/security-policy.mdx index 1e50b5093..b68cf0be5 100644 --- a/pages/chain/security/security-policy.mdx +++ b/pages/chain/security/security-policy.mdx @@ -1,7 +1,7 @@ --- title: Security policy and bug bounty program lang: en-US -description: Learn about the bug bounty program and best practices for reporting bugs in OP Stack and OP Mainnet codebase. +description: Learn about the bug bounty program and best practices for reporting bugs in the OP Stack codebase. --- import { Callout } from 'nextra/components' @@ -28,7 +28,7 @@ Optimism has a very detailed [Bug Bounty Page on Immunefi](https://immunefi.com/ ### Unscoped bugs -If you think you have found a significant bug or vulnerabilities in OP Stack smart contracts, infrastructure, etc., even if that component is not covered by an existing bug bounty, please report it to via the [OP Mainnet Immunefi program](https://immunefi.com/bounty/optimism/). The impact of any and all reported issues will be considered and the program has previously rewarded security researchers for bugs not within its stated scope. +If you think you have found a significant bug or vulnerabilities in OP Stack smart contracts, infrastructure, etc., even if that component is not covered by an existing bug bounty, please report it via the [Immunefi program](https://immunefi.com/bounty/optimism/). The impact of any and all reported issues will be considered and the program has previously rewarded security researchers for bugs not within its stated scope. ## Reporting other vulnerabilities diff --git a/pages/chain/testing/testing-apps.mdx b/pages/chain/testing/testing-apps.mdx index 2eac879a2..f104a4460 100644 --- a/pages/chain/testing/testing-apps.mdx +++ b/pages/chain/testing/testing-apps.mdx @@ -1,28 +1,28 @@ --- -title: Testing apps for OP Mainnet +title: Testing apps for OP Stack chains lang: en-US -description: Learn best practices for OP Mainnet testing. +description: Learn best practices for OP Stack testing. --- -# Testing apps for OP Mainnet +# Testing apps for OP Stack chains -For the most part, running applications on OP Mainnet is identical to running them on Ethereum, so the testing is identical too. -In this guide, you learn the best practices for OP Mainnet testing where there are differences. +For the most part, running applications on OP Stack chains is identical to running them on Ethereum, so the testing is identical too. +In this guide, you learn the best practices for OP Stack testing where there are differences. ## Unit tests and single layer integration tests -The vast majority of tests do not involve any OP Mainnet-specific features. -In those cases, while you *could* test everything on OP Mainnet or a test network, that would normally be inefficient. +The vast majority of tests do not involve any OP Stack-specific features. +In those cases, while you *could* test everything on an OP Stack chain or a test network, that would normally be inefficient. Most Ethereum development stacks include features that make testing easier, which normal Ethereum clients, such as geth (and our modified version, `op-geth`) don't support. -Therefore, it is a good idea to run the majority of tests, which do not rely on OP Mainnet-specific features, in the development stack. +Therefore, it is a good idea to run the majority of tests, which do not rely on OP Stack-specific features, in the development stack. It is a lot faster. It is a best practice to design and run thorough tests across an OP test network, either in your [local development environment](dev-node) or on [the test network](/chain/networks#op-sepolia), depending on your use case. -Running proper testing is key to identifying fringe cases where the equivalence between OP Mainnet and Ethereum breaks down (or where Ethereum mainnet itself and the development stack may be non-equivalent in a production environment). +Running proper testing is key to identifying fringe cases where the equivalence between OP Stack chains and Ethereum breaks down (or where Ethereum mainnet itself and the development stack may be non-equivalent in a production environment). ## Multilayer integration tests -Some apps need OP Mainnet-specific features that aren't available as part of the development stack. +Some apps need OP Stack-specific features that aren't available as part of the development stack. For example, if your decentralized application relies on [inter-domain communication](/builders/app-developers/bridging/messaging), the effort of developing a stub to let you debug it in a development stack is probably greater than the hassle of having the automated test go to [a local development environment](dev-node) each time. ## Integration with other products @@ -31,5 +31,5 @@ In many cases a decentralized application requires the services of other contrac For example, [Perpetual v. 2](https://docs.perp.com/docs/guides/integration-guide) cannot function without [Uniswap v. 3](https://uniswap.org/blog/uniswap-v3). If that is the case you can use [mainnet forking](https://hardhat.org/hardhat-network/guides/mainnet-forking.html). -It works with OP Mainnet. +It works with OP Stack chains. Alternatively, you can connect to our [test network](/chain/networks#op-sepolia) if those contracts are also deployed there (in many cases they are). diff --git a/pages/chain/tokenlist.mdx b/pages/chain/tokenlist.mdx index 73f4f4c9b..6329f2ff5 100644 --- a/pages/chain/tokenlist.mdx +++ b/pages/chain/tokenlist.mdx @@ -9,7 +9,7 @@ import { TokenListTable } from '@/components/TokenListTable' # Bridged token addresses -Various ERC-20 tokens originally deployed to Ethereum also have corresponding "bridged" representations on OP Mainnet. +Various ERC-20 tokens originally deployed to Ethereum also have corresponding "bridged" representations on OP Stack chains. The [Superchain Token List](https://github.com/ethereum-optimism/ethereum-optimism.github.io) exists to help users discover the correct bridged token addresses for each token. This page is automatically generated from the Superchain Token List. @@ -18,10 +18,10 @@ This page is automatically generated from the Superchain Token List. **The presence of a token on this page does not imply any endorsement of the token or its minter.** -### USDC on OP Mainnet +### USDC on OP Stack chains -The legacy bridged version of USDC (USDC.e) at address `0x7f5c764cbc14f9669b88837ca1490cca17c31607` is being deprecated on OP Mainnet. +The legacy bridged version of USDC (USDC.e) at address `0x7f5c764cbc14f9669b88837ca1490cca17c31607` is being deprecated on OP Stack chains. Users and developers should migrate to using the native USDC token issued directly by [Circle](https://www.circle.com/en/), the issuer of [USDC](https://www.circle.com/en/usdc?gad_source=1). From bacb90f758fe2783bc44a2e5f59d365f5a7585dc Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Tue, 14 Jan 2025 12:21:38 -0800 Subject: [PATCH 02/13] cursor attempt --- .cursorrules | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 .cursorrules diff --git a/.cursorrules b/.cursorrules new file mode 100644 index 000000000..5d3f23deb --- /dev/null +++ b/.cursorrules @@ -0,0 +1,76 @@ +// Primary Context + +When assisting with this project: + + Recognize this is a technical writing project for Optimism documentation + Default to Microsoft Style Guide conventions, specifically: + - Use sentence-style capitalization for headings + - Use active voice and plain language + - Structure lists clearly and concisely + - Avoid unnecessary jargon or complex phrasing + Align with Optimism’s style guide, focusing on: + - Consistent use of terminology + - Clear and direct explanations of technical concepts + - Accurate and up-to-date references to tools and resources + Maintain a professional yet approachable tone, prioritizing clarity and consistency + +// Writing Style Rules + + Ensure headings use sentence-style capitalization (e.g., "Writing style rules" instead of "Writing Style Rules") + Use active voice and concise technical language (e.g., "Deploy the contract" instead of "The contract was deployed") + Maintain consistent terminology across sections, referring to the Optimism glossary (e.g., always refer to "Layer 2 scaling" instead of "L2" unless defined) + Follow Microsoft guidelines for bulleted and numbered lists, ensuring parallel structure (e.g., each bullet in a list should start with a verb if others do) + Avoid idiomatic expressions or informal language + Ensure all tables, figures, and examples are correctly labeled and referenced + Validate cross-references to ensure accuracy (e.g., check that section numbers and hyperlinks point to the correct locations) + Ensure any changes to a term, reference, or hyperlink are reflected throughout the document + +// Code Snippet Rules + + Ensure code snippets are syntactically correct and properly formatted + Use consistent indentation and naming conventions within snippets + Provide comments explaining non-obvious code logic + Validate that all code examples are functional and tested + Ensure code snippets are referenced correctly in accompanying text + +// Hyperlink and Reference Rules + + Ensure all hyperlinks use descriptive text (e.g., “Learn more about Optimism” instead of “Click here”) + Verify all hyperlinks are valid and up to date + Follow Microsoft guidelines for citing external references, ensuring clarity and relevance + +// Accessibility and Inclusivity Rules + + Use gender-neutral language + Avoid cultural references that may not be universally understood + Ensure content is easily translatable by avoiding idioms and complex sentence structures + Provide alt text for all images and diagrams, describing their purpose and content + +// Document Structure Rules + + Maintain a clear and logical document hierarchy with appropriate use of headings + Use introductory paragraphs to outline the purpose of each section + Ensure transition sentences between sections for smooth reading flow + +// Response Format + + Provide direct, implementable suggestions for improvements + Highlight areas where consistency or accuracy issues may arise + Separate code, text, and LaTeX suggestions for clarity + Flag outdated or broken links and provide corrected URLs or suggestions for updates + Note any assumptions made in the response + +// Quality Assurance + + Validate adherence to the key Microsoft Style Guide principles listed + Check consistency of terminology, formatting, and references as per the Optimism style guide + Ensure all tables, figures, and code snippets are properly labeled and integrated + Verify cross-reference accuracy within the document + +// Meta Instructions + + Anticipate and suggest potential improvements for related sections + Maintain consistent tone and terminology throughout + Flag potential inconsistencies or deviations from the style guide + Proactively highlight areas for refinement or optimization + From ab287bfbc876d42839b92d2c5e6eca398a6a649d Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Fri, 31 Jan 2025 08:25:03 -0800 Subject: [PATCH 03/13] Add update notice --- pages/chain/addresses.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/chain/addresses.mdx b/pages/chain/addresses.mdx index e88b3ae9c..afc30c0b4 100644 --- a/pages/chain/addresses.mdx +++ b/pages/chain/addresses.mdx @@ -11,7 +11,7 @@ import { SuperchainContractTable } from '@/components/SuperchainContractTable' # Contract Addresses -This reference guide lists all the contract addresses for OP Stack chains, as found on the [superchain-registry](https://github.com/ethereum-optimism/superchain-registry/tree/main). +This reference guide lists all the contract addresses for OP Stack chains, as found on the [superchain-registry](https://github.com/ethereum-optimism/superchain-registry/tree/main). This doc will periodically be updated with addresses across the Superchain. See the [Smart Contracts Overview](/stack/smart-contracts) for high-level details and access to the source code. From 86c7a83c65ae95f58968531c383bc8ba83c60204 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Fri, 31 Jan 2025 08:30:15 -0800 Subject: [PATCH 04/13] Delete hacks and change references --- .cursorrules | 76 ------------------- pages/builders/chain-operators.mdx | 2 - pages/builders/chain-operators/hacks.mdx | 27 ------- .../builders/chain-operators/hacks/_meta.json | 8 -- .../hacks/data-availability.mdx | 53 ------------- .../chain-operators/hacks/derivation.mdx | 43 ----------- .../chain-operators/hacks/execution.mdx | 41 ---------- .../chain-operators/hacks/featured-hacks.mdx | 65 ---------------- .../chain-operators/hacks/overview.mdx | 41 ---------- .../chain-operators/hacks/settlement.mdx | 41 ---------- .../tutorials/create-l2-rollup.mdx | 1 - pages/chain/testing/dev-node.mdx | 1 - pages/connect/contribute/stack-contribute.mdx | 2 +- pages/stack/getting-started.mdx | 2 +- public/_redirects | 2 - 15 files changed, 2 insertions(+), 403 deletions(-) delete mode 100644 .cursorrules delete mode 100644 pages/builders/chain-operators/hacks.mdx delete mode 100644 pages/builders/chain-operators/hacks/_meta.json delete mode 100644 pages/builders/chain-operators/hacks/data-availability.mdx delete mode 100644 pages/builders/chain-operators/hacks/derivation.mdx delete mode 100644 pages/builders/chain-operators/hacks/execution.mdx delete mode 100644 pages/builders/chain-operators/hacks/featured-hacks.mdx delete mode 100644 pages/builders/chain-operators/hacks/overview.mdx delete mode 100644 pages/builders/chain-operators/hacks/settlement.mdx diff --git a/.cursorrules b/.cursorrules deleted file mode 100644 index 5d3f23deb..000000000 --- a/.cursorrules +++ /dev/null @@ -1,76 +0,0 @@ -// Primary Context - -When assisting with this project: - - Recognize this is a technical writing project for Optimism documentation - Default to Microsoft Style Guide conventions, specifically: - - Use sentence-style capitalization for headings - - Use active voice and plain language - - Structure lists clearly and concisely - - Avoid unnecessary jargon or complex phrasing - Align with Optimism’s style guide, focusing on: - - Consistent use of terminology - - Clear and direct explanations of technical concepts - - Accurate and up-to-date references to tools and resources - Maintain a professional yet approachable tone, prioritizing clarity and consistency - -// Writing Style Rules - - Ensure headings use sentence-style capitalization (e.g., "Writing style rules" instead of "Writing Style Rules") - Use active voice and concise technical language (e.g., "Deploy the contract" instead of "The contract was deployed") - Maintain consistent terminology across sections, referring to the Optimism glossary (e.g., always refer to "Layer 2 scaling" instead of "L2" unless defined) - Follow Microsoft guidelines for bulleted and numbered lists, ensuring parallel structure (e.g., each bullet in a list should start with a verb if others do) - Avoid idiomatic expressions or informal language - Ensure all tables, figures, and examples are correctly labeled and referenced - Validate cross-references to ensure accuracy (e.g., check that section numbers and hyperlinks point to the correct locations) - Ensure any changes to a term, reference, or hyperlink are reflected throughout the document - -// Code Snippet Rules - - Ensure code snippets are syntactically correct and properly formatted - Use consistent indentation and naming conventions within snippets - Provide comments explaining non-obvious code logic - Validate that all code examples are functional and tested - Ensure code snippets are referenced correctly in accompanying text - -// Hyperlink and Reference Rules - - Ensure all hyperlinks use descriptive text (e.g., “Learn more about Optimism” instead of “Click here”) - Verify all hyperlinks are valid and up to date - Follow Microsoft guidelines for citing external references, ensuring clarity and relevance - -// Accessibility and Inclusivity Rules - - Use gender-neutral language - Avoid cultural references that may not be universally understood - Ensure content is easily translatable by avoiding idioms and complex sentence structures - Provide alt text for all images and diagrams, describing their purpose and content - -// Document Structure Rules - - Maintain a clear and logical document hierarchy with appropriate use of headings - Use introductory paragraphs to outline the purpose of each section - Ensure transition sentences between sections for smooth reading flow - -// Response Format - - Provide direct, implementable suggestions for improvements - Highlight areas where consistency or accuracy issues may arise - Separate code, text, and LaTeX suggestions for clarity - Flag outdated or broken links and provide corrected URLs or suggestions for updates - Note any assumptions made in the response - -// Quality Assurance - - Validate adherence to the key Microsoft Style Guide principles listed - Check consistency of terminology, formatting, and references as per the Optimism style guide - Ensure all tables, figures, and code snippets are properly labeled and integrated - Verify cross-reference accuracy within the document - -// Meta Instructions - - Anticipate and suggest potential improvements for related sections - Maintain consistent tone and terminology throughout - Flag potential inconsistencies or deviations from the style guide - Proactively highlight areas for refinement or optimization - diff --git a/pages/builders/chain-operators.mdx b/pages/builders/chain-operators.mdx index 73c0e4bb9..22abf0302 100644 --- a/pages/builders/chain-operators.mdx +++ b/pages/builders/chain-operators.mdx @@ -19,8 +19,6 @@ Documentation covering Architecture, Configuration, Deploy, Features, Hacks, Man - - diff --git a/pages/builders/chain-operators/hacks.mdx b/pages/builders/chain-operators/hacks.mdx deleted file mode 100644 index 5a30e8912..000000000 --- a/pages/builders/chain-operators/hacks.mdx +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Hacks -lang: en-US -description: >- - Learn about hacks in the Optimism ecosystem. This guide provides detailed - information and resources about hacks. ---- - -import { Card, Cards } from 'nextra/components' - -# Hacks - -This section provides information on various types of hacks related to OP Stack, including data availability, derivation, execution, and settlement. You'll find an overview and introduction to help you understand and work with these topics, as well as featured hacks for practical examples. - - - - - - - - - - - - - - diff --git a/pages/builders/chain-operators/hacks/_meta.json b/pages/builders/chain-operators/hacks/_meta.json deleted file mode 100644 index d4650c2da..000000000 --- a/pages/builders/chain-operators/hacks/_meta.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "overview": "Intro to OP Stack hacks", - "featured-hacks": "Featured hacks", - "data-availability": "Data availability hacks", - "derivation": "Derivation hacks", - "execution": "Execution hacks", - "settlement": "Settlement hacks" -} \ No newline at end of file diff --git a/pages/builders/chain-operators/hacks/data-availability.mdx b/pages/builders/chain-operators/hacks/data-availability.mdx deleted file mode 100644 index 32218c494..000000000 --- a/pages/builders/chain-operators/hacks/data-availability.mdx +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Data availability hacks -lang: en-US -description: Learn how to modify the default Data Availability Layer module for an OP Stack chain. ---- - -import { Callout } from 'nextra/components' - -# Data availability hacks - - - OP Stack Hacks are explicitly things that you can do with the OP Stack that are *not* currently intended for production use. - - OP Stack Hacks are not for the faint of heart. You will not be able to receive significant developer support for OP Stack Hacks — be prepared to get your hands dirty and to work without support. - - -## Overview - -This guide teaches you how to modify the default Data Availability Layer module for an OP Stack chain. The Data Availability Layer is responsible for the *ordering* and *storage* of the raw input data that forms the backbone of an OP Stack based chain (transactions, state roots, calls from other blockchains, etc.). You can conceptually think of this as an array of inputs — the ordering of this array should remain stable and the contents of this array should remain available. Unstable ordering of inputs will lead to reorgs of the OP Stack chain, while unavailable inputs will cause the OP Stack chain to halt entirely. - -## Default - -The default Data Availability Layer module for an OP Stack chain is the Ethereum DA module. When using the Ethereum DA module, all raw input data is expected to be found on Ethereum. Any data that is accessible on Ethereum can be queried when using this module, including calldata, events, and other block data. - -## Security - -OP Stack based chains are functions of the raw input data found on the Data Availability Layer module(s) used. If a required piece of data is not available, nodes will not be able to properly sync the chain. This also means that these nodes will not be able to dispute any invalid state proposals made to a Settlement Layer module. An OP Stack based chain cannot be safer than the Data Availability module. - -You should be careful to understand the security properties of any Data Availability module(s) that you use. The standard Ethereum DA module generally provides the best security guarantees at the cost of higher transaction fees. Alternative DA modules may be appropriate depending on your particular use-case and risk tolerance. - -## Modding - -### Alternative EVM DA - -A simple modification is to use an EVM-based blockchain other than Ethereum as the Data Availability Layer. Doing so simply requires using an L1 RPC other than Ethereum. - -### EVM-Ordered Alternative DA - -A more involved modification to the Data Availability Layer is an "EVM-Ordered" Alternative DA module. This involves using an EVM-based chain to maintain the *ordering* of transaction data while using a different data storage system to host the underlying data. Generally, ordering is maintained by publishing hashes of the data to the EVM-based chain while publishing the preimages to those hashes to the alternative data source. - -An EVM-Ordered Alternative DA module significantly reduces costs by only publishing hashes and not full input data to the EVM chain. Using an EVM chain for ordering also reduces the number of changes that must be made to the standard Rollup configuration to achieve this result. - -An example of an EVM-Ordered Alternative DA module can be found within [this modification to the OP Stack](https://github.com/celestiaorg/optimism/pull/3) that uses the Celestia blockchain as a third-party data availability provider. - -### Non-EVM DA - -A non-EVM DA module uses a chain not based on the EVM to manage both the ordering and storage of raw input data. Such a modification would require relatively significant modifications to the [derivation portion](https://github.com/ethereum-optimism/optimism/tree/v1.1.4/op-node/rollup/derive) of the `op-node`. No such fully-independent DA modules have been developed yet — be the first! - -### Multiple DA - -It is possible to use multiple Data Availability Layer modules at the same time. For instance, one could source data from two EVM-based chains simultaneously in order to form a bridge between the two chains. When using multiple Data Availability Layer modules, it is imperative to establish a global ordering between the two chains. One option for establishing this ordering is to use the timestamps of blocks from each chain. - -Like a non-EVM DA module, a system with multiple Data Availability modules would need to make significant modifications to the [derivation portion](https://github.com/ethereum-optimism/optimism/tree/v1.1.4/op-node/rollup/derive) of the `op-node`. No such projects have been constructed yet. diff --git a/pages/builders/chain-operators/hacks/derivation.mdx b/pages/builders/chain-operators/hacks/derivation.mdx deleted file mode 100644 index 47651c308..000000000 --- a/pages/builders/chain-operators/hacks/derivation.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Derivation hacks -lang: en-US -description: Learn how to modify the default Derivation layer module for an OP Stack chain. ---- - -import { Callout } from 'nextra/components' - -# Derivation hacks - - - OP Stack Hacks are explicitly things that you can do with the OP Stack that are *not* currently intended for production use. - - OP Stack Hacks are not for the faint of heart. You will not be able to receive significant developer support for OP Stack Hacks — be prepared to get your hands dirty and to work without support. - - -## Overview - -This guide teaches you how to modify the default Derivation layer module for an OP Stack chain. The Derivation layer is responsible for parsing the raw inputs from the Data Availability layer and converting them into [Engine API](https://github.com/ethereum/execution-apis/tree/main/src/engine) payloads to be sent to the Execution layer. The Derivation Layer is generally tightly coupled to the Data Availability layer because it must understand both the APIs for the Data Availability layer module(s) of choice and the format of the raw data published to the chosen module(s). - -## Default - -The default Derivation layer module is the Rollup module. This module derives transactions from three sources: Sequencer transactions, user deposits, and L1 blocks. The Rollup module also enforces certain ordering properties that, for example, guarantee that user deposits are always included in the L2 chain within a certain configurable amount of time. - -## Security - -Modifying the Derivation layer can have unintended consequences. For example, removing or extending the time window in which user deposits must be included can allow a Sequencer to censor the L2 chain. Because of the flexibility of the Derivation layer, the exact impact of any change is likely to be unique to the specifics of the change. The negative impacts of any modifications should be carefully considered on a case-by-case basis. - -## Modding - -### EVM event-triggered transactions - -The default Rollup configuration of the OP Stack includes "deposited" transactions that are triggered whenever a specific event is emitted by the `OptimismPortal` contract on L1. Using the same principle, an OP Stack chain can derive transactions from events emitted by *any* contract on an EVM-based DA. Refer to [attributes.go](https://github.com/ethereum-optimism/optimism/blob/e468b66efedc5f47f4e04dc1acc803d4db2ce383/op-node/rollup/derive/attributes.go#L70) to understand how deposited transactions are derived and how custom transactions can be created. - -### EVM block-triggered transactions - -Like with events, transactions on an OP Stack chain can be triggered whenever a new block is published on an EVM-based DA. The default Rollup configuration of the OP Stack already includes a block-triggered transaction in the form of [the "L1 info"transaction](https://github.com/ethereum-optimism/optimism/blob/e468b66efedc5f47f4e04dc1acc803d4db2ce383/op-node/rollup/derive/attributes.go#L103) that relays information like the latest block hash, timestamp, and base fee into L2. The Getting Started guide demonstrates the addition of a new block-triggered transaction in the form of a new transaction that reports the amount of gas burned via the base fee on L1. - -### And much, much more… - -The Derivation layer is one of the most flexible layers of the stack. Transactions can be generated from all sorts of raw input data and can be triggered from all sorts of conditions. You can derive transactions from any piece of data that can be found in the Data Availability layer modules! - -[Tutorial: Adding attributes to the derivation function](/builders/chain-operators/tutorials/adding-derivation-attributes). diff --git a/pages/builders/chain-operators/hacks/execution.mdx b/pages/builders/chain-operators/hacks/execution.mdx deleted file mode 100644 index 495ceb8a1..000000000 --- a/pages/builders/chain-operators/hacks/execution.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Execution hacks -lang: en-US -description: Learn how to modify the default Execution Layer module for an OP Stack chain. ---- - -import { Callout } from 'nextra/components' - -# Execution hacks - - - OP Stack Hacks are explicitly things that you can do with the OP Stack that are *not* currently intended for production use. - - OP Stack Hacks are not for the faint of heart. You will not be able to receive significant developer support for OP Stack Hacks — be prepared to get your hands dirty and to work without support. - - -## Overview - -This guide teaches you how to modify the default Execution Layer module for an OP Stack chain. The Execution Layer is responsible for defining the format of the state and the state transition function on L2. It is expected to trigger the state transition function when it receives a payload via the [Engine API](https://github.com/ethereum/execution-apis/tree/main/src/engine). Although the default Execution Layer module is the EVM, you can replace the EVM with any alternative VM as long as it sits behind the Engine API. - -## Default - -The default Execution Layer module is the Rollup EVM module. The Rollup EVM module utilizes a very lightly modified EVM that adds support for transactions that are triggered by smart contracts on L1 and introduces an L1 data fee to each transaction that accounts for the cost of publishing user transactions to L1. You can find the full set of differences between the standard EVM and the Rollup EVM [on this page](https://op-geth.optimism.io/). - -## Security - -As with modifications to the Derivation Layer, modifications to the Execution Layer can have unintended consequences. For instance, modifications to the EVM may break existing tooling or may open the door to denial of service attacks. Consider the impact of each modification carefully on a case-by-case basis. - -## Modding - -### EVM tweaks - -The default Execution Layer module is the EVM. It's possible to modify the EVM in many different ways like adding new precompiles or inserting predeployed smart contracts into the genesis state. Precompiles can help make common smart contract operations cheaper and can therefore further reduce the cost of execution for your specific use-case. These modifications should be made directly to [the execution client](https://github.com/ethereum-optimism/op-geth). - -It's also possible to create alternative execution client implementations to improve the security properties of your chain. Note that if you modify the EVM, you must apply the same modifications to every execution client that you would like to support. - -### Alternative VMs - -The OP Stack allows you to replace the EVM with *any* state transition function, as long as the transition can be triggered via the Engine API. This has, for example, been used to implement an OP Stack chain that runs a GameBoy emulator rather than the EVM. - -[Tutorial: Adding a precompile](/builders/chain-operators/tutorials/adding-precompiles). diff --git a/pages/builders/chain-operators/hacks/featured-hacks.mdx b/pages/builders/chain-operators/hacks/featured-hacks.mdx deleted file mode 100644 index f844e08eb..000000000 --- a/pages/builders/chain-operators/hacks/featured-hacks.mdx +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Featured hacks -lang: en-US -description: Learn about some of the customizations stack developers have made for an OP Stack chain. ---- - -import { Callout } from 'nextra/components' - -# Featured hacks - - - OP Stack Hacks are explicitly things that you can do with the OP Stack that are *not* currently intended for production use. - - OP Stack Hacks are not for the faint of heart. You will not be able to receive significant developer support for OP Stack Hacks — be prepared to get your hands dirty and to work without support. - - -## Overview - -Featured Hacks is a compilation of some of the cool stuff people are building on top of the OP Stack! - -## OPCraft - -### Author - -[Lattice](https://lattice.xyz/) - -### Description - -OPCraft was an OP Stack chain that ran a modified EVM as the backend for a fully onchain 3D voxel game built with [MUD](https://mud.dev/). - -### OP Stack configuration - -* Data Availability: Ethereum DA (Goerli) -* Sequencer: Single Sequencer -* Derivation: Standard Rollup -* Execution: Modified Rollup EVM - -### Links - -* [Announcing OPCraft: an Autonomous World built on the OP Stack](https://web.archive.org/web/20231004175307/https://blog.oplabs.co/opcraft-autonomous-world//) -* [OPCraft Explorer](https://opcraft.mud.dev/) -* [OPCraft on GitHub](https://github.com/latticexyz/opcraft) -* [MUD](https://mud.dev/) - -## Ticking Optimism - -### Author - -[@therealbytes](https://twitter.com/therealbytes) - -### Description - -Ticking Optimism is a proof-of-concept implementation of an OP Stack chain that calls a `tick` function every block. By using the OP Stack, Ticking Optimism avoids the need for off-chain infrastructure to execute a function on a regular basis. Ticking Conway is a system that uses Ticking Optimism to build [Conway's Game of Life](https://conwaylife.com/) onchain. - -### OP Stack configuration - -* Data Availability: Ethereum DA (any) -* Sequencer: Single Sequencer -* Derivation: Standard Rollup with custom `tick` function -* Execution: Rollup EVM - -### Links - -* [Ticking Optimism on GitHub](https://github.com/therealbytes/ticking-optimism) -* [Ticking Conway on GitHub](https://github.com/therealbytes/ticking-conway) diff --git a/pages/builders/chain-operators/hacks/overview.mdx b/pages/builders/chain-operators/hacks/overview.mdx deleted file mode 100644 index c4a0f31c0..000000000 --- a/pages/builders/chain-operators/hacks/overview.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Introduction to OP Stack hacks -lang: en-US -description: Learn general information on how to experiment and customize an OP Stack chain. ---- - -import { Callout } from 'nextra/components' - -# Introduction to OP Stack hacks - -Welcome to OP Stack Hacks, the **highly experimental** region of the OP Stack docs. OP Stack Hacks are an unofficial guide for messing around with the OP Stack. Here you'll find information about ways that the OP Stack can be modified in interesting ways. - -OP Stack Hacks create blockchains that aren't exactly OP Stack, and may be insecure. Hacked OP Stack chains can break key invariants that are required to interoperate with [the Optimism Superchain](/superchain/superchain-explainer). **Developers of chains that wish to interoperate with [the Optimism Superchain](/superchain/superchain-explainer) should *not* include any hacks**. When in doubt, stick with the official components within [the current release of the OP Stack](/stack/getting-started#the-op-stack-today). - - - OP Stack Hacks are explicitly things that you can do with the OP Stack that are *not* currently intended for production use. - - OP Stack Hacks are not for the faint of heart. You will not be able to receive significant developer support for OP Stack Hacks — be prepared to get your hands dirty and to work without support. - - -## OP Stack hack guides - -We have curated a list of guides to walk you through different OP stack modules that you can customize as a developer. - -* [Data Availability Hacks](data-availability) -* [Derivation Hacks](derivation) -* [Execution Hacks](execution) -* [Settlement Hacks](settlement) -* [Featured Hacks](featured-hacks) - -## OP Stack hack tutorials - -We also have a handful of tutorials offering step-by-step instructions on how to make customizations to an OP Stack chain. **As a reminder, you will not be able to receive significant developer support for OP Stack Hacks — be prepared to get your hands dirty and to work without support.** - -* [Adding Attributes to the Derivation Function](../tutorials/adding-derivation-attributes) -* [Adding A Precompile](../tutorials/adding-precompiles) -* [Modifying Predeployed Contracts](../tutorials/modifying-predeploys) - -## Conclusion - -Have an OP Stack hack you'd like to share? Want to write an OP stack hack tutorial? Submit your request in our [docs repo](https://github.com/ethereum-optimism/docs/issues/new?assignees=\&labels=tutorial%2Cdocumentation%2Ccommunity-request\&projects=\&template=suggest_tutorial.yaml\&title=%5BTUTORIAL%5D+Add+PR+title). diff --git a/pages/builders/chain-operators/hacks/settlement.mdx b/pages/builders/chain-operators/hacks/settlement.mdx deleted file mode 100644 index 2b96be231..000000000 --- a/pages/builders/chain-operators/hacks/settlement.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Settlement hacks -lang: en-US -description: Learn how to modify the default Settlement Layer module for an OP Stack chain. ---- - -import { Callout } from 'nextra/components' - -# Settlement hacks - - - OP Stack Hacks are explicitly things that you can do with the OP Stack that are *not* currently intended for production use. - - OP Stack Hacks are not for the faint of heart. You will not be able to receive significant developer support for OP Stack Hacks — be prepared to get your hands dirty and to work without support. - - -# Overview - -This guide teaches you how to modify the default Settlement Layer module for an OP Stack chain. The Settlement Layer includes modules that are used by third-party chains to establish a *view* of the state of your OP Stack chain. This view can then be used by applications on those chains to make decisions based on the state of your OP Stack chain. Third-party chains can be any other blockchain, including other OP Stack chains. One common Settlement Layer mechanism is a withdrawal system that allows users to send state from your OP Stack chain to the third-party chain. Modifications to this layer typically involve introducing new modules or tweaking the security model of existing modules. - -## Default - -The default Settlement Layer module is currently the Attestation Proof Optimistic Settlement module. This module allows a third-party chain to become aware of the state of an OP Stack chain through an Optimistic protocol where challenges can be executed alongside a threshold of attestations from a pre-defined set of addresses over a state that differs from the proposed state. With a Cannon fault proof shipped to production, this default module can be replaced with a module that allows anyone to challenge proposals by playing the Cannon dispute game. - -## Security - -Modifications to the Settlement Layer can strongly impact the security of common mechanisms like user withdrawals. A decreased withdrawal delay can, for instance, open the door to gas spam attacks that make challenges exceedingly expensive. It is generally not recommended to modify the Settlement Layer unless you know what you're doing. - -## Modding - -### Tweaked parameters - -One simple modification to the Settlement Layer is to tweak the parameters of the default Optimistic state withdrawal mechanism. For example, the withdrawal period can be reduced if a smaller withdrawal period would be sufficient to secure your system. - -### Custom proofs - -Settlement Layer modules use a proof system to verify the correctness of the state of your OP Stack chain as proposed on the third-party chain. In general, these proofs are either Optimistic proofs that require a withdrawal delay or Validity proofs that use a mathematical proof system to assert the validity of the proposal. The current Attestation Proof Optimistic Settlement module could be replaced with a Fault Proof System. - -### Multiple modules - -There is no requirement that a system only have one Settlement Layer module. It is possible to use one or more Settlement Layer modules on one or more third-party chains. A system that aims to bridge state between two chains will likely need to use one Data Availability Layer module and one Settlement Layer module per chain. diff --git a/pages/builders/chain-operators/tutorials/create-l2-rollup.mdx b/pages/builders/chain-operators/tutorials/create-l2-rollup.mdx index 0090367f1..0796b6b22 100644 --- a/pages/builders/chain-operators/tutorials/create-l2-rollup.mdx +++ b/pages/builders/chain-operators/tutorials/create-l2-rollup.mdx @@ -759,6 +759,5 @@ Send some transactions, deploy some contracts, and see what happens! ## Next steps -* You can [modify the blockchain in various ways](../hacks/overview). * Check out the [protocol specs](https://specs.optimism.io/) for more detail about the rollup protocol. * If you run into any problems, please visit the [Chain Operators Troubleshooting Guide](../management/troubleshooting) for help. diff --git a/pages/chain/testing/dev-node.mdx b/pages/chain/testing/dev-node.mdx index 228a1a803..00dc18d14 100644 --- a/pages/chain/testing/dev-node.mdx +++ b/pages/chain/testing/dev-node.mdx @@ -182,7 +182,6 @@ Send some transactions, deploy some contracts, and see what happens! ## Next Steps -* You can [modify the blockchain in various ways](../hacks/overview). * Check out the [protocol specs](https://specs.optimism.io/) for more detail about the rollup protocol. * If you run into any problems, please visit the [Chain Operators Troubleshooting Guide](../management/troubleshooting) or [file an issue](https://github.com/ethereum-optimism/optimism/issues) for help. diff --git a/pages/connect/contribute/stack-contribute.mdx b/pages/connect/contribute/stack-contribute.mdx index 22fec79f0..76cbb9e71 100644 --- a/pages/connect/contribute/stack-contribute.mdx +++ b/pages/connect/contribute/stack-contribute.mdx @@ -29,7 +29,7 @@ To make your first contribution to the codebase, check out the [open issues](htt Only the software components included within the current release of the OP Stack codebase are considered in the scope of the OP Stack. - Any usage of the OP Stack outside of the official, intended capabilities of the current release are considered [OP Stack Hacks](/builders/chain-operators/hacks/overview) — unofficial modifications that are useful for experimentation but could have unforeseen results, such as security vulnerabilities, and are likely to cause your chain to no longer be interoperable with the [Optimism Superchain](https://app.optimism.io/superchain/). + Any usage of the OP Stack outside of the official, intended capabilities of the current release are considered [OP Stack Hacks](https://github.com/ethereum-optimism/developers/tree/main/hacks) — unofficial modifications that are useful for experimentation but could have unforeseen results, such as security vulnerabilities, and are likely to cause your chain to no longer be interoperable with the [Optimism Superchain](https://app.optimism.io/superchain/). Developer support for OP Stack Hacks is limited — when in doubt, stick to the capabilities of the current release! diff --git a/pages/stack/getting-started.mdx b/pages/stack/getting-started.mdx index 624a33132..80a0f2dc2 100644 --- a/pages/stack/getting-started.mdx +++ b/pages/stack/getting-started.mdx @@ -46,7 +46,7 @@ The Bedrock release of the OP Stack makes it easy to spin up an L2 that will be If you'd like to launch a Superchain-ready L2, check out our guide for running a chain based on the Bedrock release of the OP Stack. It is possible to modify components of the OP Stack to build novel L2 systems. -If you're interested in experimenting with the OP Stack, check out [the OP Stack Hacks section of this site](/builders/chain-operators/hacks/overview). +If you're interested in experimenting with the OP Stack, check out [the OP Stack Hacks developers repo(/https://github.com/ethereum-optimism/developers/tree/main/docs). Please note that, as of the Bedrock release, the OP Stack is *not* designed to support these modifications and you will very much be *hacking* on the codebase. As a result, **you should, for the moment, expect limited (if any) developer support for OP Stack Hacks.** OP Stack Hacks will likely make your chain incompatible with the Optimism Superchain. diff --git a/public/_redirects b/public/_redirects index 476db7624..fc3b9f977 100644 --- a/public/_redirects +++ b/public/_redirects @@ -22,8 +22,6 @@ /differences /chain/differences /chain-operators/sample-hacks/modifying-predeploys /builders/chain-operators/tutorials/modifying-predeploys /chain/testing/testing-dapps /chain/testing/testing-apps -/chain-operators/hacks/derivation /builders/chain-operators/hacks/derivation -/chain-operators/hacks/overview /builders/chain-operators/hacks/overview /getting-started-op-stack /stack/getting-started /builders/tools/javascript/sdk /builders/chain-operators/tutorials/sdk /builders/tools/monitoring/analytics-tools /builders/tools/monitor/analytics-tools From 4fdd1b2490f604d5baa11b46b0dccf5501e91b37 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Fri, 31 Jan 2025 08:52:17 -0800 Subject: [PATCH 05/13] Bulk changes --- .../app-developers}/getting-started.mdx | 0 .../app-developers}/testing-apps.mdx | 0 pages/chain/_meta.json | 8 -------- pages/chain/security.mdx | 19 ------------------- pages/chain/security/_meta.json | 10 ---------- pages/chain/testing.mdx | 17 ----------------- pages/chain/testing/_meta.json | 4 ---- pages/{chain/testing => stack}/dev-node.mdx | 0 .../security/faq-sec-model.mdx} | 0 .../security/security-policy.mdx | 0 pages/{chain => superchain}/addresses.mdx | 0 pages/{chain => superchain}/networks.mdx | 0 .../privileged-roles.mdx | 0 pages/{chain => superchain}/tokenlist.mdx | 0 public/_redirects | 9 +++++++++ 15 files changed, 9 insertions(+), 58 deletions(-) rename pages/{chain => builders/app-developers}/getting-started.mdx (100%) rename pages/{chain/testing => builders/app-developers}/testing-apps.mdx (100%) delete mode 100644 pages/chain/_meta.json delete mode 100644 pages/chain/security.mdx delete mode 100644 pages/chain/security/_meta.json delete mode 100644 pages/chain/testing.mdx delete mode 100644 pages/chain/testing/_meta.json rename pages/{chain/testing => stack}/dev-node.mdx (100%) rename pages/{chain/security/faq.mdx => stack/security/faq-sec-model.mdx} (100%) rename pages/{chain => stack}/security/security-policy.mdx (100%) rename pages/{chain => superchain}/addresses.mdx (100%) rename pages/{chain => superchain}/networks.mdx (100%) rename pages/{chain/security => superchain}/privileged-roles.mdx (100%) rename pages/{chain => superchain}/tokenlist.mdx (100%) diff --git a/pages/chain/getting-started.mdx b/pages/builders/app-developers/getting-started.mdx similarity index 100% rename from pages/chain/getting-started.mdx rename to pages/builders/app-developers/getting-started.mdx diff --git a/pages/chain/testing/testing-apps.mdx b/pages/builders/app-developers/testing-apps.mdx similarity index 100% rename from pages/chain/testing/testing-apps.mdx rename to pages/builders/app-developers/testing-apps.mdx diff --git a/pages/chain/_meta.json b/pages/chain/_meta.json deleted file mode 100644 index cf2e338d0..000000000 --- a/pages/chain/_meta.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "getting-started": "Getting started: OP Mainnet", - "networks": "Networks and RPC Endpoints", - "addresses": "Contract addresses", - "tokenlist": "Bridged token addresses", - "testing": "Testing", - "security": "Security" -} \ No newline at end of file diff --git a/pages/chain/security.mdx b/pages/chain/security.mdx deleted file mode 100644 index e4f10a998..000000000 --- a/pages/chain/security.mdx +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Security -description: Documentation covering Faq, Privileged Roles, Security Policy in the Security section of the OP Stack ecosystem. -lang: en-US ---- - -import { Card, Cards } from 'nextra/components' - -# Security - -Documentation covering Faq, Privileged Roles, Security Policy in the Security section of the OP Stack ecosystem. - - - - - - - - diff --git a/pages/chain/security/_meta.json b/pages/chain/security/_meta.json deleted file mode 100644 index 0c83dd2a3..000000000 --- a/pages/chain/security/_meta.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "faq": "Security model & FAQ", - "privileged-roles": "Privileged roles", - "security-policy": "Security policy", - "bug-bounty": { - "title": "Bug Bounty Program", - "href": "https://immunefi.com/bounty/optimism/", - "newWindow": true - } -} diff --git a/pages/chain/testing.mdx b/pages/chain/testing.mdx deleted file mode 100644 index fc2af6d47..000000000 --- a/pages/chain/testing.mdx +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Testing -description: Documentation covering Dev Node, Testing Apps in the Testing section of the OP Stack ecosystem. -lang: en-US ---- - -import { Card, Cards } from 'nextra/components' - -# Testing - -Documentation covering Dev Node, Testing Apps in the Testing section of the OP Stack ecosystem. - - - - - - diff --git a/pages/chain/testing/_meta.json b/pages/chain/testing/_meta.json deleted file mode 100644 index f6228db4f..000000000 --- a/pages/chain/testing/_meta.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "dev-node": "Running a local development environment", - "testing-apps": "Testing apps on OP Mainnet" -} diff --git a/pages/chain/testing/dev-node.mdx b/pages/stack/dev-node.mdx similarity index 100% rename from pages/chain/testing/dev-node.mdx rename to pages/stack/dev-node.mdx diff --git a/pages/chain/security/faq.mdx b/pages/stack/security/faq-sec-model.mdx similarity index 100% rename from pages/chain/security/faq.mdx rename to pages/stack/security/faq-sec-model.mdx diff --git a/pages/chain/security/security-policy.mdx b/pages/stack/security/security-policy.mdx similarity index 100% rename from pages/chain/security/security-policy.mdx rename to pages/stack/security/security-policy.mdx diff --git a/pages/chain/addresses.mdx b/pages/superchain/addresses.mdx similarity index 100% rename from pages/chain/addresses.mdx rename to pages/superchain/addresses.mdx diff --git a/pages/chain/networks.mdx b/pages/superchain/networks.mdx similarity index 100% rename from pages/chain/networks.mdx rename to pages/superchain/networks.mdx diff --git a/pages/chain/security/privileged-roles.mdx b/pages/superchain/privileged-roles.mdx similarity index 100% rename from pages/chain/security/privileged-roles.mdx rename to pages/superchain/privileged-roles.mdx diff --git a/pages/chain/tokenlist.mdx b/pages/superchain/tokenlist.mdx similarity index 100% rename from pages/chain/tokenlist.mdx rename to pages/superchain/tokenlist.mdx diff --git a/public/_redirects b/public/_redirects index fc3b9f977..b6d96267f 100644 --- a/public/_redirects +++ b/public/_redirects @@ -129,3 +129,12 @@ /chain/identity/overview https://community.optimism.io/identity/overview /chain/identity/projects https://community.optimism.io/identity/projects /chain/identity/schemas https://community.optimism.io/identity/schemas +/chain/getting-started /builders/app-developers/getting-started +/chain/networks /superchain/networks +/chain/addresses /superchain/addresses +/chain/tokenlist /superchain/tokenlist +/chain/testing/testing-apps /builders/app-developers/testing-apps +/chain/testing/dev-node /stack/dev-node +/chain/security/privileged-roles /superchain/privileged-roles +/chain/security/faq /stack/security/faq-sec-model +/chain/security/security-policy /stack/security/security-policy \ No newline at end of file From 806394dc4c8890e346188f347d304f4c53d71ed6 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Fri, 31 Jan 2025 08:58:36 -0800 Subject: [PATCH 06/13] Fix OPNetworks --- pages/builders/tools/connect/networks.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/builders/tools/connect/networks.mdx b/pages/builders/tools/connect/networks.mdx index 7440c93ec..b2a2598e5 100644 --- a/pages/builders/tools/connect/networks.mdx +++ b/pages/builders/tools/connect/networks.mdx @@ -6,6 +6,6 @@ description: >- information and resources about networks. --- -import OPNetworks from '@/pages/chain/networks.mdx' +import OPNetworks from '@/pages/superchain/networks.mdx' From 04c1b1325a53fd0548df8145e87271ba82cd2c5e Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Fri, 31 Jan 2025 09:21:25 -0800 Subject: [PATCH 07/13] Breadcrumb fixes --- pages/builders/app-developers.mdx | 3 ++ .../chain-operators/deploy/genesis.mdx | 46 ++++++++++--------- pages/stack/security.mdx | 3 ++ 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/pages/builders/app-developers.mdx b/pages/builders/app-developers.mdx index ea242737a..36845c123 100644 --- a/pages/builders/app-developers.mdx +++ b/pages/builders/app-developers.mdx @@ -22,4 +22,7 @@ If you're a developer looking to build on OP Mainnet, you've come to the right p + + + diff --git a/pages/builders/chain-operators/deploy/genesis.mdx b/pages/builders/chain-operators/deploy/genesis.mdx index 259e9040c..b443a7532 100644 --- a/pages/builders/chain-operators/deploy/genesis.mdx +++ b/pages/builders/chain-operators/deploy/genesis.mdx @@ -9,7 +9,7 @@ import { Callout } from 'nextra/components' # OP Stack genesis creation -The recommended way to generate genesis and rollup configuration files is using `op-deployer`. + The recommended way to generate genesis and rollup configuration files is using `op-deployer`. This ensures standardization and compatibility with the Superchain. @@ -18,28 +18,31 @@ These files are crucial for initializing the execution client (`op-geth`) and co The recommended flow for creating a genesis file and rollup configuration file on the OP Stack is as follows: -1. **Deploy the L1 contracts** using [op-deployer](/builders/chain-operators/tools/op-deployer). -2. **Generate** both the L2 genesis file (`genesis.json`) and the rollup configuration file (`rollup.json`) using op-deployer’s `inspect` commands. -3. **Initialize** your off-chain components (e.g., execution client, consensus client). +1. **Deploy the L1 contracts** using [op-deployer](/builders/chain-operators/tools/op-deployer). +2. **Generate** both the L2 genesis file (`genesis.json`) and the rollup configuration file (`rollup.json`) using op-deployer's `inspect` commands. +3. **Initialize** your off-chain components (e.g., execution client, consensus client). ## Recommended method: using op-deployer ### Prerequisites -1. You have installed the `op-deployer` binary following the instructions in [deployer docs](/builders/chain-operators/tools/op-deployer#installation). -After installation, extract the `op-deployer` into your `PATH` and `cd op-deployer`. -2. You have created and customized an intent file in a `.deployer` directory, typically by running: - ```bash - ./bin/op-deployer init --l1-chain-id --l2-chain-ids --workdir .deployer +1. You have installed the `op-deployer` binary following the instructions in [deployer docs](/builders/chain-operators/tools/op-deployer#installation). + After installation, extract the `op-deployer` into your `PATH` and `cd op-deployer`. + +2. You have created and customized an intent file in a `.deployer` directory, typically by running: + + ```bash + ./bin/op-deployer init --l1-chain-id --l2-chain-ids --workdir .deployer ``` Replace `` and `` with their respective values, see a list of [`chainIds`](https://chainid.network/). -3. You have edited that intent file to your liking (roles, addresses, etc.). +3. You have edited that intent file to your liking (roles, addresses, etc.). ### Step 1: Deploy the L1 contracts To deploy your chain to L1, run: + ```bash ./bin/op-deployer apply --workdir .deployer \ --l1-rpc-url \ @@ -48,35 +51,36 @@ To deploy your chain to L1, run: This command: -* Reads your intent file in `.deployer/.` -* Deploys the OP Stack contracts to the specified L1. -* Updates a local `state.json` file with the results of the deployment. +* Reads your intent file in `.deployer/.` +* Deploys the OP Stack contracts to the specified L1. +* Updates a local `state.json` file with the results of the deployment. ### Step 2: Generate your L2 genesis file and rollup file -After your L1 contracts have been deployed, generate the L2 genesis and rollup configuration files by inspecting the deployer’s `state.json.` +After your L1 contracts have been deployed, generate the L2 genesis and rollup configuration files by inspecting the deployer's `state.json.` + ```bash ./bin/op-deployer inspect genesis --workdir .deployer > .deployer/genesis.json ./bin/op-deployer inspect rollup --workdir .deployer > .deployer/rollup.json ``` -* genesis.json is the file you will provide to your execution client (e.g. op-geth). -* rollup.json is the file you will provide to your consensus client (e.g. op-node). +* genesis.json is the file you will provide to your execution client (e.g. op-geth). +* rollup.json is the file you will provide to your consensus client (e.g. op-node). ### Step 3: Initialize your off-chain components Once you have `genesis.json` and `rollup.json`: -1. Initialize op-geth using genesis.json. -2. Configure op-node with rollup.json. -3. Set up additional off-chain infrastructure as needed (block explorer, indexers, etc.). For more on architecture, see [Architecture overview](/builders/chain-operators/architecture). +1. Initialize op-geth using genesis.json. +2. Configure op-node with rollup.json. +3. Set up additional off-chain infrastructure as needed (block explorer, indexers, etc.). For more on architecture, see [Architecture overview](/builders/chain-operators/architecture). ### Step 3: Get data Now that you have your `genesis.json` and `rollup.json` you can spin up a node on your network. You can also use the following inspect subcommands to get additional data: -```bash +````bash ./bin/op-deployer inspect l1 --workdir .deployer # outputs all L1 contract addresses for an L2 chain ./bin/op-deployer inspect deploy-config --workdir .deployer # outputs the deploy config for an L2 chain @@ -143,7 +147,7 @@ DEPLOY_CONFIG_PATH= \ STATE_DUMP_PATH= \ forge script scripts/L2Genesis.s.sol:L2Genesis \ --sig 'runWithStateDump()' -``` +```` ## Subcommand (op-node genesis l2) diff --git a/pages/stack/security.mdx b/pages/stack/security.mdx index 1786d634a..eae398963 100644 --- a/pages/stack/security.mdx +++ b/pages/stack/security.mdx @@ -16,5 +16,8 @@ Documentation covering Faq, Pause in the Security section of the OP Stack ecosys + + + From c065112e4ea7a73bebf18038a9bf56ce0e05afa2 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Fri, 31 Jan 2025 09:27:04 -0800 Subject: [PATCH 08/13] Fix redirects --- pages/builders/app-developers/bridging/custom-bridge.mdx | 2 +- pages/builders/app-developers/bridging/messaging.mdx | 2 +- pages/builders/app-developers/bridging/standard-bridge.mdx | 4 ++-- pages/builders/app-developers/getting-started.mdx | 2 +- pages/builders/app-developers/overview.mdx | 6 +++--- pages/builders/app-developers/tools/ecosystem-overview.mdx | 2 +- .../app-developers/tutorials/cross-dom-bridge-erc20.mdx | 2 +- .../app-developers/tutorials/cross-dom-bridge-eth.mdx | 2 +- .../app-developers/tutorials/cross-dom-solidity.mdx | 2 +- .../app-developers/tutorials/sdk-estimate-costs.mdx | 2 +- .../builders/chain-operators/management/key-management.mdx | 4 ++-- pages/builders/chain-operators/self-hosted.mdx | 2 +- pages/builders/tools/overview.mdx | 4 ++-- pages/connect/contribute/docs-contribute.mdx | 2 +- pages/connect/contribute/stack-contribute.mdx | 2 +- pages/connect/contribute/style-guide.mdx | 2 +- pages/index.mdx | 2 +- pages/stack/security/faq-sec-model.mdx | 4 ++-- pages/stack/security/faq.mdx | 2 +- pages/stack/smart-contracts.mdx | 2 +- 20 files changed, 26 insertions(+), 26 deletions(-) diff --git a/pages/builders/app-developers/bridging/custom-bridge.mdx b/pages/builders/app-developers/bridging/custom-bridge.mdx index e0e60e2c4..8d0ab6424 100644 --- a/pages/builders/app-developers/bridging/custom-bridge.mdx +++ b/pages/builders/app-developers/bridging/custom-bridge.mdx @@ -31,7 +31,7 @@ You can read more about the design of the Standard Bridge in the guide on [Using ## The Superchain Token List -The [Superchain Token List](/chain/tokenlist) exists to help users and developers find the right bridged representations of tokens native to another blockchain. +The [Superchain Token List](/superchain/tokenlist) exists to help users and developers find the right bridged representations of tokens native to another blockchain. Once you've built and tested your custom bridge, make sure to register any tokens meant to flow through this bridge by [making a pull request against the Superchain Token List repository](https://github.com/ethereum-optimism/ethereum-optimism.github.io#adding-a-token-to-the-list). You **must** deploy your bridge to OP Sepolia before it can be added to the Superchain Token List. diff --git a/pages/builders/app-developers/bridging/messaging.mdx b/pages/builders/app-developers/bridging/messaging.mdx index 796339862..215a54371 100644 --- a/pages/builders/app-developers/bridging/messaging.mdx +++ b/pages/builders/app-developers/bridging/messaging.mdx @@ -118,7 +118,7 @@ contract MyContract { ``` - You can find the addresses of the `L1CrossDomainMessenger` and the `L2CrossDomainMessenger` contracts on OP Mainnet and OP Sepolia on the [Contract Addresses](/chain/addresses) page. + You can find the addresses of the `L1CrossDomainMessenger` and the `L2CrossDomainMessenger` contracts on OP Mainnet and OP Sepolia on the [Contract Addresses](/superchain/addresses) page. ## Communication speed diff --git a/pages/builders/app-developers/bridging/standard-bridge.mdx b/pages/builders/app-developers/bridging/standard-bridge.mdx index ff9d7c467..35c9cb0af 100644 --- a/pages/builders/app-developers/bridging/standard-bridge.mdx +++ b/pages/builders/app-developers/bridging/standard-bridge.mdx @@ -194,7 +194,7 @@ Users simply need to trigger and send ETH to the [`bridgeETH`](https://github.co Users can also deposit ETH from Ethereum to OP Mainnet by sending a basic ETH transfer from an EOA to the `L1StandardBridgeProxy`. This works because the `L1StandardBridgeProxy` contains a [`receive`](https://github.com/ethereum-optimism/optimism/blob/2e647210882d961f04055e656590d90ad98c9934/packages/contracts-bedrock/src/universal/StandardBridge.sol#L119-L121) function. - You can find the mainnet and testnet addresses on the [Contract Addresses](/chain/addresses) page. + You can find the mainnet and testnet addresses on the [Contract Addresses](/superchain/addresses) page. ## Tutorials @@ -206,7 +206,7 @@ Users simply need to trigger and send ETH to the [`bridgeETH`](https://github.co ## Superchain Token List -The [Superchain Token List](/chain/tokenlist) exists to help users discover the right bridged token addresses for any given native token. +The [Superchain Token List](/superchain/tokenlist) exists to help users discover the right bridged token addresses for any given native token. Consider checking this list to make sure that you're not using the wrong bridged representation of a token when bridging a native token. Developers who are creating their own bridged tokens should consider [adding their token](https://github.com/ethereum-optimism/ethereum-optimism.github.io#adding-a-token-to-the-list) to the Superchain Token List. diff --git a/pages/builders/app-developers/getting-started.mdx b/pages/builders/app-developers/getting-started.mdx index a606cd9f6..7ba7ce577 100644 --- a/pages/builders/app-developers/getting-started.mdx +++ b/pages/builders/app-developers/getting-started.mdx @@ -51,7 +51,7 @@ Not only is it faster, but such EVMs often have extra features, such as the [abi ### Debug before deploying -After you are done with that development, debug your decentralized application using either a [development node](/chain/testing/dev-node) or the [Sepolia test network](/chain/networks). +After you are done with that development, debug your decentralized application using either a [development node](/stack/dev-node) or the [Sepolia test network](/superchain/networks). This lets you debug parts that are OP Stack chains specific such as calls to bridges to transfer ETH or tokens between layers. Only when you have a version that works well on a test network should you deploy to the production network, where every transaction has a cost. diff --git a/pages/builders/app-developers/overview.mdx b/pages/builders/app-developers/overview.mdx index e38817e46..c1904e1d7 100644 --- a/pages/builders/app-developers/overview.mdx +++ b/pages/builders/app-developers/overview.mdx @@ -13,19 +13,19 @@ In this area of the Optimism Docs you'll find everything you need to know about ## Getting started -If you're brand new to OP Mainnet, try starting with the guide on [deploying a basic contract](/chain/getting-started). +If you're brand new to OP Mainnet, try starting with the guide on [deploying a basic contract](/builders/app-developers/getting-started). It'll get you familiar with the basic steps required to get a contract deployed to the network. OP Mainnet is [EVM equivalent](https://web.archive.org/web/20231127160757/https://medium.com/ethereum-optimism/introducing-evm-equivalence-5c2021deb306) so you can feel confident that your existing Ethereum smart contract skills will carry over to OP Mainnet. Just make sure to be aware of the few small [differences between Ethereum and OP Mainnet](/stack/differences). -You might also want to check out the [testing on OP Networks guide](/chain/testing/testing-apps) and the tutorial on [running a local development environment](/chain/testing/dev-node) to help you feel totally confident in your OP Mainnet deployment. +You might also want to check out the [testing on OP Networks guide](/builders/app-developers/testing-apps) and the tutorial on [running a local development environment](/stack/dev-node) to help you feel totally confident in your OP Mainnet deployment. } /> } /> - } /> + } /> ## Bridging and messaging diff --git a/pages/builders/app-developers/tools/ecosystem-overview.mdx b/pages/builders/app-developers/tools/ecosystem-overview.mdx index e6f08ef4c..b72706916 100644 --- a/pages/builders/app-developers/tools/ecosystem-overview.mdx +++ b/pages/builders/app-developers/tools/ecosystem-overview.mdx @@ -13,7 +13,7 @@ The ecosystem repository was developed to help ease and expedite the development ## Getting started -Our initial launch includes an example [bridge application](https://github.com/ethereum-optimism/ecosystem/tree/main/apps/bridge-app) that demonstrates how to bridge ETH and any ERC20 tokens listed in the [Superchain Token List](/chain/tokenlist). +Our initial launch includes an example [bridge application](https://github.com/ethereum-optimism/ecosystem/tree/main/apps/bridge-app) that demonstrates how to bridge ETH and any ERC20 tokens listed in the [Superchain Token List](/superchain/tokenlist). This application serves as a reference for anyone looking to build their own bridge, offering a clearer understanding of how to interact with the protocol on both the L1 and L2 sides. Additionally, we provide a package containing common utilities essential for developers interacting with both L1 and L2. For instance, it includes features for tracking [network pairs](https://github.com/ethereum-optimism/ecosystem/blob/main/packages/op-app/src/configs/networkPairs.ts) and [deployment addresses](https://github.com/ethereum-optimism/ecosystem/blob/main/packages/op-app/src/configs/deploymentAddresses.ts) of smart contracts. diff --git a/pages/builders/app-developers/tutorials/cross-dom-bridge-erc20.mdx b/pages/builders/app-developers/tutorials/cross-dom-bridge-erc20.mdx index 883e4908c..f791c362a 100644 --- a/pages/builders/app-developers/tutorials/cross-dom-bridge-erc20.mdx +++ b/pages/builders/app-developers/tutorials/cross-dom-bridge-erc20.mdx @@ -29,7 +29,7 @@ Make sure to check out the [Standard Bridge guide](/builders/app-developers/brid ## Supported networks -The Optimism SDK supports any of the [Superchain networks](/chain/networks). +The Optimism SDK supports any of the [Superchain networks](/superchain/networks). [Some Superchain networks](https://sdk.optimism.io/enums/l2chainid) are already included in the SDK by default. If you want to use a network that isn't included by default, you can simply [instantiate the SDK with the appropriate contract addresses](/builders/app-developers/overview). diff --git a/pages/builders/app-developers/tutorials/cross-dom-bridge-eth.mdx b/pages/builders/app-developers/tutorials/cross-dom-bridge-eth.mdx index 3cbe5253e..ce3b84376 100644 --- a/pages/builders/app-developers/tutorials/cross-dom-bridge-eth.mdx +++ b/pages/builders/app-developers/tutorials/cross-dom-bridge-eth.mdx @@ -17,7 +17,7 @@ Make sure to check out the [Standard Bridge guide](/builders/app-developers/brid ## Supported networks -Viem supports any of the [Superchain networks](/chain/networks). +Viem supports any of the [Superchain networks](/superchain/networks). The OP Stack networks are included in Viem by default. If you want to use a network that isn't included by default, you can add it to Viem's chain configurations. diff --git a/pages/builders/app-developers/tutorials/cross-dom-solidity.mdx b/pages/builders/app-developers/tutorials/cross-dom-solidity.mdx index 1aa33fb07..51d7d0af0 100644 --- a/pages/builders/app-developers/tutorials/cross-dom-solidity.mdx +++ b/pages/builders/app-developers/tutorials/cross-dom-solidity.mdx @@ -257,7 +257,7 @@ Luckily, both `Greeter` contracts are exactly the same so it's easy to see how e ### The Messenger variable The `Greeter` contract has a `MESSENGER` variable that keeps track of the `CrossDomainMessenger` contract on the current chain. -Check out the [Contract Addresses page](/chain/addresses) to see the addresses of the `CrossDomainMessenger` contracts on whichever network you'll be using. +Check out the [Contract Addresses page](/superchain/addresses) to see the addresses of the `CrossDomainMessenger` contracts on whichever network you'll be using. ```solidity file=/public/tutorials/cross-dom-solidity.sol#L14 hash=ce8be857d4b4e1992cd3c16b8f2864b9 ``` diff --git a/pages/builders/app-developers/tutorials/sdk-estimate-costs.mdx b/pages/builders/app-developers/tutorials/sdk-estimate-costs.mdx index 8b47d81c4..e564a8d4a 100644 --- a/pages/builders/app-developers/tutorials/sdk-estimate-costs.mdx +++ b/pages/builders/app-developers/tutorials/sdk-estimate-costs.mdx @@ -18,7 +18,7 @@ You'll also learn how to estimate the total cost of the transaction all at once. ## Supported networks -Viem supports any of the [Superchain networks](/chain/networks). +Viem supports any of the [Superchain networks](/superchain/networks). The OP Stack networks are included in Viem by default. If you want to use a network that isn't included by default, you can add it to Viem's chain configurations. diff --git a/pages/builders/chain-operators/management/key-management.mdx b/pages/builders/chain-operators/management/key-management.mdx index 479b6ba0c..5518195d5 100644 --- a/pages/builders/chain-operators/management/key-management.mdx +++ b/pages/builders/chain-operators/management/key-management.mdx @@ -9,7 +9,7 @@ import { Callout } from 'nextra/components' # Managing your keys This guide informs chain operators on important key management considerations. -There are certain [privileged roles](/chain/security/privileged-roles) that +There are certain [privileged roles](/superchain/privileged-roles) that need careful consideration. The privileged roles are categorized as hot wallets or cold wallets. @@ -39,6 +39,6 @@ of community members and avoid a single point of failure. The signers behind a multisig should probably also use a hardware wallet. - Refer to the [privileged roles](/chain/security/privileged-roles) documentation + Refer to the [privileged roles](/superchain/privileged-roles) documentation for more information about these different addresses and their security concerns. diff --git a/pages/builders/chain-operators/self-hosted.mdx b/pages/builders/chain-operators/self-hosted.mdx index f206a840f..018b6a63e 100644 --- a/pages/builders/chain-operators/self-hosted.mdx +++ b/pages/builders/chain-operators/self-hosted.mdx @@ -46,7 +46,7 @@ OP Chains can be configured for throughput, cost, and other decentralization tra {

Setup Key Management and Privileged Roles

} * Configure hot wallets and cold wallets using the guide for [Managing Your Keys](/builders/chain-operators/management/key-management). - * Refer to the [Privileged Roles](/chain/security/privileged-roles) guide for detailed security information. + * Refer to the [Privileged Roles](/superchain/privileged-roles) guide for detailed security information. {

Make Standard Chain Configurations

} diff --git a/pages/builders/tools/overview.mdx b/pages/builders/tools/overview.mdx index c3069e116..9537e0207 100644 --- a/pages/builders/tools/overview.mdx +++ b/pages/builders/tools/overview.mdx @@ -10,12 +10,12 @@ import { Cards, Card } from 'nextra/components' Welcome to the Optimism developer tools! -If you are already familiar with [building on OP Mainnet](/chain/getting-started) and just need the tools to get cracking, you are in the right place! +If you are already familiar with [building on OP Mainnet](/builders/app-developers/getting-started) and just need the tools to get cracking, you are in the right place! ## Connecting - } /> + } /> } /> diff --git a/pages/connect/contribute/docs-contribute.mdx b/pages/connect/contribute/docs-contribute.mdx index d29189de3..52f694db3 100644 --- a/pages/connect/contribute/docs-contribute.mdx +++ b/pages/connect/contribute/docs-contribute.mdx @@ -38,7 +38,7 @@ Optimism Docs (docs.optimism.io) is an open-source project, and we welcome your * [Work on an open issue](https://github.com/ethereum-optimism/docs/issues): start with items we've already identified as needing attention, which range from general guides to tutorials and quickstarts. * [Create new content](https://github.com/ethereum-optimism/docs/issues/new): create new content to add to the technical docs. Review the [style guide](style-guide) and follow the PR process outlined in the [contributor guidelines](https://github.com/ethereum-optimism/docs/blob/main/CONTRIBUTING.md) to get started. -* [Submit a bug report](https://immunefi.com/bounty/optimism/): create a report to help us improve our products and developer tooling. For more information, please read our [Security Policy](/chain/security/security-policy). +* [Submit a bug report](https://immunefi.com/bounty/optimism/): create a report to help us improve our products and developer tooling. For more information, please read our [Security Policy](/stack/security/security-policy). * [Contribute to the Optimism Collective](https://github.com/ethereum-optimism/ecosystem-contributions): select from several different categories where you can make an impact such as [foundation missions](https://github.com/ethereum-optimism/ecosystem-contributions/issues?q=is%3Aissue+is%3Aopen+label%3A%22Foundation+Mission+%28RFP%29%22) or general [contributor opportunities](https://github.com/ethereum-optimism/ecosystem-contributions/issues?q=is%3Aissue+is%3Aopen+label%3A%22Contribution+Opportunity%22). diff --git a/pages/connect/contribute/stack-contribute.mdx b/pages/connect/contribute/stack-contribute.mdx index 76cbb9e71..4488cc36d 100644 --- a/pages/connect/contribute/stack-contribute.mdx +++ b/pages/connect/contribute/stack-contribute.mdx @@ -35,7 +35,7 @@ To make your first contribution to the codebase, check out the [open issues](htt ## Bounty hunting -The OP Stack needs YOU (yes you!) to help review the codebase for bugs and vulnerabilities. If you're interested in bounty hunting, check out our [Security Policy, Vulnerability Reporting, and Bug Bounties page](/chain/security/security-policy). +The OP Stack needs YOU (yes you!) to help review the codebase for bugs and vulnerabilities. If you're interested in bounty hunting, check out our [Security Policy, Vulnerability Reporting, and Bug Bounties page](/stack/security/security-policy). ## Docs contributions diff --git a/pages/connect/contribute/style-guide.mdx b/pages/connect/contribute/style-guide.mdx index de6691ba6..395acc315 100644 --- a/pages/connect/contribute/style-guide.mdx +++ b/pages/connect/contribute/style-guide.mdx @@ -326,7 +326,7 @@ Content types help manage technical content by defining the purpose and common s | Guides | Explain what things are and how they work | [Standard Bridge Guide](/builders/app-developers/bridging/standard-bridge) | | Quick Start Guides | Briefly explain how to "minimally" get started with a product, often in 30 minutes or less | [Superchain App Quick Start](/builders/app-developers/quick-start) | | Tutorials | Provide task-oriented guidance with step-by-step "learn by doing" instructions | [Bridging ERC-20 tokens with viem](/builders/app-developers/tutorials/cross-dom-bridge-erc20) | -| FAQs | Address frequently asked questions | [FAQ: OP Mainnet Security Model](/chain/security/faq) | +| FAQs | Address frequently asked questions | [FAQ: OP Mainnet Security Model](/stack/security/faq-sec-model) | | Troubleshooting | List common troubleshooting scenarios and solutions | [Troubleshooting: Run a Node](/builders/node-operators/management/troubleshooting) | | Reference | Provide deep, theoretical knowledge of the internal workings of a system, such as API endpoints and specifications | [Node and RPC Providers](/builders/tools/connect/rpc-providers) | diff --git a/pages/index.mdx b/pages/index.mdx index 103e7d984..183929e26 100644 --- a/pages/index.mdx +++ b/pages/index.mdx @@ -53,7 +53,7 @@ The Superchain is a network of OP Stack chains that share a bridging protocol, g We've got you covered with these detailed guides to help you learn all about Optimism's tech stack. - } /> + } /> } /> diff --git a/pages/stack/security/faq-sec-model.mdx b/pages/stack/security/faq-sec-model.mdx index 7c9eca25f..773519202 100644 --- a/pages/stack/security/faq-sec-model.mdx +++ b/pages/stack/security/faq-sec-model.mdx @@ -73,10 +73,10 @@ Check out Optimism's detailed [Pragmatic Path to Decentralization](https://web.a ### How can I help make OP Stack chains more secure? -[OP Stack has one of the biggest bug bounties (ever)](/chain/security/security-policy). +[OP Stack has one of the biggest bug bounties (ever)](/stack/security/security-policy). You can earn up to $2,000,042 by finding critical bugs in the Optimism codebase. You can also run your own verifier node to detect network faults. ### Where do I report bugs? -For details about reporting vulnerabilities and available bug bounty programs, see the [Security Policy](/chain/security/security-policy). +For details about reporting vulnerabilities and available bug bounty programs, see the [Security Policy](/stack/security/security-policy). diff --git a/pages/stack/security/faq.mdx b/pages/stack/security/faq.mdx index 2dd866b5a..0b08dbe7f 100644 --- a/pages/stack/security/faq.mdx +++ b/pages/stack/security/faq.mdx @@ -44,4 +44,4 @@ Don't forget that the OP Stack is a decentralized development stack. Anyone can ### Where do I report bugs? -For details about reporting vulnerabilities and available bug bounty programs, see the [Security Policy](/chain/security/security-policy). +For details about reporting vulnerabilities and available bug bounty programs, see the [Security Policy](/stack/security/security-policy). diff --git a/pages/stack/smart-contracts.mdx b/pages/stack/smart-contracts.mdx index 9c5807c05..daf88e6e9 100644 --- a/pages/stack/smart-contracts.mdx +++ b/pages/stack/smart-contracts.mdx @@ -8,7 +8,7 @@ import { Callout } from 'nextra/components' # Smart Contract overview -This guide provides an overview of the functionality of the smart contract components. You can also find [contract addresses](/chain/addresses) on OP Mainnet. +This guide provides an overview of the functionality of the smart contract components. You can also find [contract addresses](/superchain/addresses) on OP Mainnet. ## Layer 1 contracts From 0477e22f633c74d7a15a1cc77771e0596347c139 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Fri, 31 Jan 2025 10:08:12 -0800 Subject: [PATCH 09/13] LINT! --- package.json | 4 ++-- .../builders/app-developers/bridging/standard-bridge.mdx | 2 +- pages/builders/app-developers/testing-apps.mdx | 4 ++-- pages/builders/node-operators/rollup-node.mdx | 2 +- pages/builders/tools/monitor/analytics-tools.mdx | 1 - pages/connect/contribute/docs-contribute.mdx | 2 +- pages/stack/interop/superchain-weth.mdx | 8 ++++---- pages/stack/security/faq-sec-model.mdx | 2 +- pages/superchain/networks.mdx | 4 ++-- pages/superchain/privileged-roles.mdx | 2 +- 10 files changed, 15 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 4bc2bc7f2..11fc0cc43 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,8 @@ "version": "0.0.1", "description": "Optimism Docs", "scripts": { - "lint": "eslint . --ext mdx --max-warnings 0 && pnpm spellcheck:lint && pnpm check-breadcrumbs && pnpm check-redirects", - "fix": "eslint . --ext mdx --fix && pnpm spellcheck:fix && pnpm check-breadcrumbs && pnpm fix-redirects", + "lint": "eslint . --ext mdx --max-warnings 0 && pnpm spellcheck:lint && pnpm check-breadcrumbs && pnpm check-redirects && pnpm linkcheck", + "fix": "eslint . --ext mdx --fix && pnpm spellcheck:fix && pnpm breadcrumbs && pnpm fix-redirects", "spellcheck:lint": "cspell lint \"**/*.mdx\"", "spellcheck:fix": "cspell --words-only --unique \"**/*.mdx\" | sort --ignore-case | uniq > words.txt", "linkcheck": "lychee --config ./lychee.toml --quiet \"./pages\"", diff --git a/pages/builders/app-developers/bridging/standard-bridge.mdx b/pages/builders/app-developers/bridging/standard-bridge.mdx index 35c9cb0af..fca5dcadb 100644 --- a/pages/builders/app-developers/bridging/standard-bridge.mdx +++ b/pages/builders/app-developers/bridging/standard-bridge.mdx @@ -217,7 +217,7 @@ Tokens on the Superchain Token List will automatically appear on certain tools l You should strongly consider using the Superchain Token List to verify that you're using the correct bridged representation of a token when bridging a native token. Doing so can help you avoid accidentally bridging to the wrong token and locking up your native token permanently. -You can easily find the bridged representation of a token for OP Mainnet on the [Bridged Token Addresses](/chain/tokenlist#op-mainnet) page. +You can easily find the bridged representation of a token for OP Mainnet on the [Bridged Token Addresses](/superchain/tokenlist#op-mainnet) page. If you want to find the bridged representation of a token for another chain, use the following steps. diff --git a/pages/builders/app-developers/testing-apps.mdx b/pages/builders/app-developers/testing-apps.mdx index f104a4460..18badabe2 100644 --- a/pages/builders/app-developers/testing-apps.mdx +++ b/pages/builders/app-developers/testing-apps.mdx @@ -17,7 +17,7 @@ Most Ethereum development stacks include features that make testing easier, whic Therefore, it is a good idea to run the majority of tests, which do not rely on OP Stack-specific features, in the development stack. It is a lot faster. -It is a best practice to design and run thorough tests across an OP test network, either in your [local development environment](dev-node) or on [the test network](/chain/networks#op-sepolia), depending on your use case. +It is a best practice to design and run thorough tests across an OP test network, either in your [local development environment](dev-node) or on [the test network](/superchain/networks#op-sepolia), depending on your use case. Running proper testing is key to identifying fringe cases where the equivalence between OP Stack chains and Ethereum breaks down (or where Ethereum mainnet itself and the development stack may be non-equivalent in a production environment). ## Multilayer integration tests @@ -32,4 +32,4 @@ For example, [Perpetual v. 2](https://docs.perp.com/docs/guides/integration-guid If that is the case you can use [mainnet forking](https://hardhat.org/hardhat-network/guides/mainnet-forking.html). It works with OP Stack chains. -Alternatively, you can connect to our [test network](/chain/networks#op-sepolia) if those contracts are also deployed there (in many cases they are). +Alternatively, you can connect to our [test network](/superchain/networks#op-sepolia) if those contracts are also deployed there (in many cases they are). diff --git a/pages/builders/node-operators/rollup-node.mdx b/pages/builders/node-operators/rollup-node.mdx index 19c82347c..e957c460b 100644 --- a/pages/builders/node-operators/rollup-node.mdx +++ b/pages/builders/node-operators/rollup-node.mdx @@ -104,7 +104,7 @@ It is important to regularly monitor your node, and you can optionally configure * It's important to keep your node software up to date. Software updates can also include important bug fixes and patches that can help keep your node stable. * Refer to the [Software Releases](/builders/node-operators/releases) page for a detailed look at the latest releases of various rollup node and execution client implementations. -* Notifications are also posted to the Optimism Upgrade Announcement Channels on [**Discord**](https://discord.com/channels/667044843901681675/754090866435424270) and [**Telegram**](https://t.me/+LtAJL1Mt1PYyNjBh). +* Notifications are also posted to the Optimism Upgrade Announcement Channels on [**Discord**](https://discord.com/channels/667044843901681675/754090866435424270) ## Node operator tutorials diff --git a/pages/builders/tools/monitor/analytics-tools.mdx b/pages/builders/tools/monitor/analytics-tools.mdx index f7d39d0a7..32eb6e546 100644 --- a/pages/builders/tools/monitor/analytics-tools.mdx +++ b/pages/builders/tools/monitor/analytics-tools.mdx @@ -48,7 +48,6 @@ Here are some of our favorite dashboards so far: Here are some additional tools and resources for OP Mainnet analytics and development: -* DeFi Stats: [OP Mainnet's DeFiLlama Page](https://defillama.com/chain/Optimism/) * L2 Usage and Comparison: [growthepie](https://www.growthepie.xyz/) * OP Analytics (Incentive Tracking, Helper Functions, Public Analysis): [OP Analytics on GitHub](https://github.com/ethereum-optimism/op-analytics) * Contribute to NumbaNERDs: [Issues on GitHub](https://github.com/ethereum-optimism/op-analytics/issues) diff --git a/pages/connect/contribute/docs-contribute.mdx b/pages/connect/contribute/docs-contribute.mdx index 52f694db3..beb035880 100644 --- a/pages/connect/contribute/docs-contribute.mdx +++ b/pages/connect/contribute/docs-contribute.mdx @@ -20,7 +20,7 @@ Optimism Docs (docs.optimism.io) is an open-source project, and we welcome your * [Work on a good first issue](https://github.com/ethereum-optimism/docs/labels/good%20first%20issue): make the greatest and most immediate impact with a quick-start or tutorial. These special issues are clearly labeled for new contributors to Optimism. * [Edit existing content](#how-to-work-on-docsoptimismio): make tweaks to existing content using the ✏️ **Edit this page on GitHub** or ❤️ **Share general feedback** links on the right-side of any page. * [Add or update an FAQ item](https://github.com/ethereum-optimism/docs/issues/new?assignees=\&labels=documentation%2Cfaq%2Ccommunity-request\&projects=\&template=suggest_faq_item.yaml\&title=Suggest+an+FAQ+item): - add a new FAQ (question+answer set) to an [existing page](/chain/security/faq#security-model-faq), create a new FAQ page, or update an existing FAQ question/answer set. + add a new FAQ (question+answer set) to an [existing page](/stack/security/faq-sec-model), create a new FAQ page, or update an existing FAQ question/answer set. * [Add or update a troubleshooting item](https://github.com/ethereum-optimism/docs/issues/new?assignees=\&labels=documentation%2Ctroubleshooting%2Ccommunity-request\&projects=\&template=suggest_troubleshooting_item.yaml\&title=Suggest+a+troubleshooting+item): add a new troubleshooting item (problem+solution set) to an [existing page](/builders/chain-operators/management/troubleshooting), create a new troubleshooting page, or update an existing troubleshooting problem/solution set. * [Add a glossary term](https://github.com/ethereum-optimism/docs/issues/new?assignees=\&labels=glossary%2Cdocumentation%2Ccommunity-request\&projects=\&template=suggest_glossary_term.yaml\&title=Suggest+a+glossary+term): diff --git a/pages/stack/interop/superchain-weth.mdx b/pages/stack/interop/superchain-weth.mdx index f255a2c26..0c9d43a4f 100644 --- a/pages/stack/interop/superchain-weth.mdx +++ b/pages/stack/interop/superchain-weth.mdx @@ -17,7 +17,7 @@ InteroperableETH enables seamless ETH transfers across Superchain blockchains. I * [`SuperchainWETH`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/SuperchainWETH.sol): A bridge contract that facilitates ETH transfers between Superchain blockchains. * [`ETHLiquidity`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/ETHLiquidity.sol): A liquidity provider for ETH transfers. `SuperchainWETH` uses this contract as a liquidity repository to ensure ETH availability on the destination chain. -* [`L2ToL2CrossDomainMessenger`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/L2ToL2CrossDomainMessenger.sol): A messaging contract that [facilitates cross-chain communication](/message-passing). +* [`L2ToL2CrossDomainMessenger`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/L2ToL2CrossDomainMessenger.sol): A messaging contract that [facilitates cross-chain communication](/stack/interop/message-passing). InteroperableETH deposits ETH into the `ETHLiquidity` contract on the source chain and withdraws an equivalent amount on the destination chain. This mechanism improves capital efficiency and eliminates liquidity fragmentation and poor user experiences caused by asset wrapping or reliance on liquidity pools. @@ -76,7 +76,7 @@ sequenceDiagram 2. `SuperchainWETH` transfers the specified ETH amount to `ETHLiquidity`, removing it from circulation on the source chain. -3. `SuperchainWETH` on the source chain sends a [`relayETH`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/SuperchainWETH.sol#L125-L145) message to `SuperchainWETH` on the destination chain using the [`L2ToL2CrossDomainMessenger`](/message-passing). +3. `SuperchainWETH` on the source chain sends a [`relayETH`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/SuperchainWETH.sol#L125-L145) message to `SuperchainWETH` on the destination chain using the [`L2ToL2CrossDomainMessenger`](/stack/interop/message-passing). #### Executing message @@ -106,7 +106,7 @@ This behavior differs from [standard ETH transfers](https://docs.base.org/base-l Every ETH in circulation on the Superchain—excluding ETH held by `ETHLiquidity`—must be backed by ETH on L1. -This is enforced by a lockbox contract on L1, which holds all ETH bridged to [Superchain interop cluster chains](/explainer#superchain-interop-cluster) that has not yet been withdrawn. +This is enforced by a lockbox contract on L1, which holds all ETH bridged to [Superchain interop cluster chains](pages/stack/interop/explainer#superchain-interop-cluster) that has not yet been withdrawn. New ETH can only be minted on L2 when it is locked on L1, and it is burned on L2 before it can be released from the lockbox. Here is an example of how this works. @@ -142,4 +142,4 @@ Here is an example of how this works. ## Next steps * Explore [the `SuperchainWETH` specs](https://specs.optimism.io/interop/superchain-weth.html) for in-depth implementation details. -* Read the [interop message passing](/message-passing) page for more information about how `L2ToL2CrossDomainMessenger` passes messages. +* Read the [interop message passing](/stack/interop/message-passing) page for more information about how `L2ToL2CrossDomainMessenger` passes messages. diff --git a/pages/stack/security/faq-sec-model.mdx b/pages/stack/security/faq-sec-model.mdx index 773519202..1defd433b 100644 --- a/pages/stack/security/faq-sec-model.mdx +++ b/pages/stack/security/faq-sec-model.mdx @@ -40,7 +40,7 @@ Proposals can be submitted to the `DisputeGameFactory` contract by any user and Each submitted proposal creates a [`FaultDisputeGame`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/dispute/FaultDisputeGame.sol) contract that allows any other user to challenge the validity of a proposal by participating in a "fault proof" process. A more detailed explanation of the fault proof game can be found in the [Fault Proofs Explainer](/stack/fault-proofs/explainer). -Although the fault proof game is permissionless, the Optimism Security Council acting as the [Guardian](/chain/security/privileged-roles#guardian) role provides a backstop in case of a failure in the fault proof game. +Although the fault proof game is permissionless, the Optimism Security Council acting as the [Guardian](/superchain/privileged-roles#guardian) role provides a backstop in case of a failure in the fault proof game. Each proposal must wait for a delay period during which the Guardian can prevent invalid proposals from being used to withdraw ETH or tokens through a number of safety hatches. The Guardian can also choose to shift the system to use a `PermissionedDisputeGame` in which only specific `PROPOSER` and `CHALLENGER` roles can submit and challenge proposals. diff --git a/pages/superchain/networks.mdx b/pages/superchain/networks.mdx index ae7528562..d12e9069c 100644 --- a/pages/superchain/networks.mdx +++ b/pages/superchain/networks.mdx @@ -25,7 +25,7 @@ This reference guide provides a listing of the different OP Stack networks and p | Explorer | [https://optimistic.etherscan.io](https://optimistic.etherscan.io) | | Public RPC URL | [https://mainnet.optimism.io](https://mainnet.optimism.io) | | Sequencer URL2 | [https://mainnet-sequencer.optimism.io](https://mainnet-sequencer.optimism.io) | -| Contract Addresses | Refer to the [Contract Addresses page](/chain/addresses#mainnet) | +| Contract Addresses | Refer to the [Contract Addresses page](/superchain/addresses#mainnet) | | Connect Wallet | [Click here to connect your wallet to OP Mainnet](https://chainid.link?network=optimism) | 1. The "currency symbol" is required by some wallets like MetaMask. @@ -41,7 +41,7 @@ This reference guide provides a listing of the different OP Stack networks and p | Explorer | [https://sepolia-optimistic.etherscan.io](https://sepolia-optimistic.etherscan.io) | | Public RPC URL | [https://sepolia.optimism.io](https://sepolia.optimism.io) | | Sequencer URL2 | [https://sepolia-sequencer.optimism.io](https://sepolia-sequencer.optimism.io) | -| Contract Addresses | Refer to the [Contract Addresses page](/chain/addresses#testnet-sepolia) | +| Contract Addresses | Refer to the [Contract Addresses page](/superchain/addresses#testnet-sepolia) | | Connect Wallet | [Click here to connect your wallet to OP Sepolia](https://chainid.link?network=op-sepolia) | 1. The "currency symbol" is required by some wallets like MetaMask. diff --git a/pages/superchain/privileged-roles.mdx b/pages/superchain/privileged-roles.mdx index efd9563fb..1461b5096 100644 --- a/pages/superchain/privileged-roles.mdx +++ b/pages/superchain/privileged-roles.mdx @@ -33,7 +33,7 @@ The L1 Proxy Admin is an address that can be used to upgrade most OP Stack chain ## L2 Proxy Admin -The L2 Proxy Admin is an address that can be used to upgrade most OP Stack chains system contracts on L2. The L2 Proxy Admin owner is the [aliased address](/chain/differences#address-aliasing) of the L1ProxyAdmin owner, which means the L2 ProxyAdmin Owner is equal to the L1 ProxyAdmin Owner, but due to aliasing it's a different address. Here's how that works: +The L2 Proxy Admin is an address that can be used to upgrade most OP Stack chains system contracts on L2. The L2 Proxy Admin owner is the [aliased address](/stack/differences#address-aliasing) of the L1ProxyAdmin owner, which means the L2 ProxyAdmin Owner is equal to the L1 ProxyAdmin Owner, but due to aliasing it's a different address. Here's how that works: * Given an L1 contract address, the aliased L2 address is equal to `L1_contract_address` + `0x1111000000000000000000000000000000001111`. * Using `0x6B1BAE59D09fCcbdDB6C6cceb07B7279367C4E3b` as an example, the `0x6B` address is the L2 address that's been aliased, so to figure out the original L1 address you calculate `0x6B1BAE59D09fCcbdDB6C6cceb07B7279367C4E3b` - `0x1111000000000000000000000000000000001111`. From e4219b7cd3b3c65ca698a3f58d907aa55b10327f Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Fri, 31 Jan 2025 10:12:47 -0800 Subject: [PATCH 10/13] Fix linting --- pages/connect/contribute/style-guide.mdx | 2 +- pages/superchain/networks.mdx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pages/connect/contribute/style-guide.mdx b/pages/connect/contribute/style-guide.mdx index 395acc315..bdc2039af 100644 --- a/pages/connect/contribute/style-guide.mdx +++ b/pages/connect/contribute/style-guide.mdx @@ -326,7 +326,7 @@ Content types help manage technical content by defining the purpose and common s | Guides | Explain what things are and how they work | [Standard Bridge Guide](/builders/app-developers/bridging/standard-bridge) | | Quick Start Guides | Briefly explain how to "minimally" get started with a product, often in 30 minutes or less | [Superchain App Quick Start](/builders/app-developers/quick-start) | | Tutorials | Provide task-oriented guidance with step-by-step "learn by doing" instructions | [Bridging ERC-20 tokens with viem](/builders/app-developers/tutorials/cross-dom-bridge-erc20) | -| FAQs | Address frequently asked questions | [FAQ: OP Mainnet Security Model](/stack/security/faq-sec-model) | +| FAQs | Address frequently asked questions | [FAQ: OP Mainnet Security Model](/stack/security/faq-sec-model) | | Troubleshooting | List common troubleshooting scenarios and solutions | [Troubleshooting: Run a Node](/builders/node-operators/management/troubleshooting) | | Reference | Provide deep, theoretical knowledge of the internal workings of a system, such as API endpoints and specifications | [Node and RPC Providers](/builders/tools/connect/rpc-providers) | diff --git a/pages/superchain/networks.mdx b/pages/superchain/networks.mdx index d12e9069c..a66e4bb62 100644 --- a/pages/superchain/networks.mdx +++ b/pages/superchain/networks.mdx @@ -25,7 +25,7 @@ This reference guide provides a listing of the different OP Stack networks and p | Explorer | [https://optimistic.etherscan.io](https://optimistic.etherscan.io) | | Public RPC URL | [https://mainnet.optimism.io](https://mainnet.optimism.io) | | Sequencer URL2 | [https://mainnet-sequencer.optimism.io](https://mainnet-sequencer.optimism.io) | -| Contract Addresses | Refer to the [Contract Addresses page](/superchain/addresses#mainnet) | +| Contract Addresses | Refer to the [Contract Addresses page](/superchain/addresses#mainnet) | | Connect Wallet | [Click here to connect your wallet to OP Mainnet](https://chainid.link?network=optimism) | 1. The "currency symbol" is required by some wallets like MetaMask. @@ -41,7 +41,7 @@ This reference guide provides a listing of the different OP Stack networks and p | Explorer | [https://sepolia-optimistic.etherscan.io](https://sepolia-optimistic.etherscan.io) | | Public RPC URL | [https://sepolia.optimism.io](https://sepolia.optimism.io) | | Sequencer URL2 | [https://sepolia-sequencer.optimism.io](https://sepolia-sequencer.optimism.io) | -| Contract Addresses | Refer to the [Contract Addresses page](/superchain/addresses#testnet-sepolia) | +| Contract Addresses | Refer to the [Contract Addresses page](/superchain/addresses#testnet-sepolia) | | Connect Wallet | [Click here to connect your wallet to OP Sepolia](https://chainid.link?network=op-sepolia) | 1. The "currency symbol" is required by some wallets like MetaMask. From 96568f5a95e4fa320e66791565a59a892a0e75b3 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Fri, 31 Jan 2025 10:19:29 -0800 Subject: [PATCH 11/13] Remove mainnet from left nav --- pages/_meta.json | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/pages/_meta.json b/pages/_meta.json index 26f362e32..49c9a6d3b 100644 --- a/pages/_meta.json +++ b/pages/_meta.json @@ -91,19 +91,6 @@ "display": "children" }, - "+++ OP MAINNET": { - "title": "", - "type": "separator" - }, - "--- OP MAINNET": { - "title": "OP MAINNET", - "type": "separator" - }, - "chain": { - "title": "OP Mainnet", - "display": "children" - }, - "+++ CONNECT": { "title": "", "type": "separator" From 23fc2ba18be32d8f72a6b426ad20f900ddecec40 Mon Sep 17 00:00:00 2001 From: krofax Date: Sat, 1 Feb 2025 02:19:32 +0100 Subject: [PATCH 12/13] fix lint issues --- pages/stack/getting-started.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/stack/getting-started.mdx b/pages/stack/getting-started.mdx index 80a0f2dc2..bf437307b 100644 --- a/pages/stack/getting-started.mdx +++ b/pages/stack/getting-started.mdx @@ -46,7 +46,7 @@ The Bedrock release of the OP Stack makes it easy to spin up an L2 that will be If you'd like to launch a Superchain-ready L2, check out our guide for running a chain based on the Bedrock release of the OP Stack. It is possible to modify components of the OP Stack to build novel L2 systems. -If you're interested in experimenting with the OP Stack, check out [the OP Stack Hacks developers repo(/https://github.com/ethereum-optimism/developers/tree/main/docs). +If you're interested in experimenting with the OP Stack, check out [the OP Stack Hacks developers repo](https://github.com/ethereum-optimism/developers/tree/main/docs). Please note that, as of the Bedrock release, the OP Stack is *not* designed to support these modifications and you will very much be *hacking* on the codebase. As a result, **you should, for the moment, expect limited (if any) developer support for OP Stack Hacks.** OP Stack Hacks will likely make your chain incompatible with the Optimism Superchain. From 855ef6eca4893a05de54714534afb0022425d4a0 Mon Sep 17 00:00:00 2001 From: krofax Date: Sat, 1 Feb 2025 02:24:10 +0100 Subject: [PATCH 13/13] fix lint --- words.txt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/words.txt b/words.txt index 3ea4c56b0..3628f8a14 100644 --- a/words.txt +++ b/words.txt @@ -123,7 +123,6 @@ Farcaster Faultproof FDLIMIT fdlimit -featureset Flashblocks Flashbots forkable @@ -259,6 +258,7 @@ Openfort oplabs opnode's opstack +outfile Pausability pausable pcscdpath @@ -385,7 +385,6 @@ syncmode SYNCTARGET synctarget syscalls -therealbytes thirdweb threadcreate tility @@ -408,7 +407,6 @@ unmetered Unprotect unsubmitted UPNP -usafe VERKLE verkle VHOSTS @@ -421,7 +419,6 @@ VMDEBUG vmdebug VMODULE vmodule -voxel xlarge XORI xtensibility