Skip to content

Commit 10a345b

Browse files
Merge branch 'main' into superchain-ops-upgrades
2 parents d578ed1 + d3a2d5d commit 10a345b

File tree

21 files changed

+1868
-822
lines changed

21 files changed

+1868
-822
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
22
"networks": "Networks and RPC endpoints",
3-
"rpc-providers": "RPC and Node providers"
3+
"rpc-providers": "Superchain RPC directory"
44
}

pages/app-developers/tools/connect/rpc-providers.mdx

Lines changed: 161 additions & 99 deletions
Large diffs are not rendered by default.

pages/interop/explainer.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ The transaction that receives the message on the destination chain calls a contr
115115
This call can be at the top level, directly from the externally owned account, or come through a smart contract.
116116
The call to `CrossL2Inbox`, also known as the *executing message*, needs to [identify the initiating message uniquely](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/CrossL2Inbox.sol#L35-L42), using the chain ID of the source chain, the block number, and the index of the log event within that block, as well as a few other fields as a sanity check.
117117

118-
`CrossL2Inbox` can either [validate the message exists](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/CrossL2Inbox.sol#L171-L185), or [call a contract if the message exists](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/CrossL2Inbox.sol#L171-L185).
118+
`CrossL2Inbox` can either [validate the message exists](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/CrossL2Inbox.sol#L76-L83), or [call a contract if the message exists](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/CrossL2Inbox.sol#L76-L83).
119119

120120
## Block safety levels
121121

pages/notices/upgrade-15.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Upgrade 15 - Isthumus Hard Fork
2+
title: Upgrade 15 - Isthmus Hard Fork
33
description: Learn how to prepare for Isthmus hard fork breaking changes.
44
lang: en-US
55
content_type: notice

pages/operators/chain-operators/configuration/batcher.mdx

Lines changed: 381 additions & 418 deletions
Large diffs are not rendered by default.

pages/operators/chain-operators/configuration/proposer.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ options are from the `--help` in [v1.7.6](https://github.com/ethereum-optimism/o
2727

2828
## Proposer policy
2929

30-
The proposer policy defines high-level constraints and responsibilities regarding how L2 output roots are posted to L1. Below are the [standard guidelines](/superchain/standard-configuration) for configuring the batcher within the OP Stack.
30+
The proposer policy defines high-level constraints and responsibilities regarding how L2 output roots are posted to L1. Below are the [standard guidelines](/superchain/standard-configuration) for configuring the proposer within the OP Stack.
3131

3232
| Parameter | Description | Administrator | Requirement | Notes |
3333
| ---------------- | ----------------------------------------------------------------------------------- | -------------- | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |

pages/operators/chain-operators/deploy.mdx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ categories:
1414
- node-management
1515
- genesis-creation
1616
- deployment-artifacts
17-
is_imported_content: 'false'
17+
is_imported_content: 'false'
1818
---
1919

2020
import { Card, Cards } from 'nextra/components'
@@ -29,4 +29,7 @@ This section provides information on OP Stack genesis creation, deployment overv
2929
<Card title="Op stack deployment overview" href="/operators/chain-operators/deploy/overview" />
3030

3131
<Card title="Op stack smart contract deployment" href="/operators/chain-operators/deploy/smart-contracts" />
32+
33+
<Card title="Learn how to validate your OP Stack deployment using op-validator" href="/operators/chain-operators/deploy/validate-deployment" />
34+
3235
</Cards>

pages/operators/chain-operators/deploy/_meta.json

Lines changed: 0 additions & 6 deletions
This file was deleted.

pages/operators/chain-operators/deploy/genesis.mdx

Lines changed: 0 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -89,88 +89,6 @@ Once you have `genesis.json` and `rollup.json`:
8989
2. Configure op-node with rollup.json.
9090
3. Set up additional off-chain infrastructure as needed (block explorer, indexers, etc.). For more on architecture, see [Architecture overview](/operators/chain-operators/architecture).
9191

92-
## Legacy method: using foundry script
93-
94-
The following guide shows you how to generate the L2 genesis file `genesis.json`. This is a JSON
95-
file that represents the L2 genesis. You will provide this file to the
96-
execution client (op-geth) to initialize your network. There is also the rollup configuration file, `rollup.json`, which will be
97-
provided to the consensus client (op-node).
98-
99-
<Callout type="warning">
100-
The following genesis creation information is the legacy method for creating OP Stack configuration files.
101-
This method is not recommended. It's preserved here for historical context.
102-
</Callout>
103-
104-
105-
### Solidity script (Legacy)
106-
107-
You can also use the foundry script
108-
located in the monorepo to generate an "L2 state dump" and then pass this into the op-node genesis subcommand.
109-
The foundry script can be found at
110-
[packages/contracts-bedrock/scripts/L2Genesis.s.sol](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/scripts/L2Genesis.s.sol).
111-
112-
<Callout type="info">
113-
When generating the genesis file, please use the same `op-contracts/vX.Y.Z` release commit used for L1 contract deployments.
114-
</Callout>
115-
116-
### Configuration
117-
118-
Create or modify a file `<network-name>.json` inside the `deploy-config`
119-
folder in the monorepo. The script will read the latest active fork from the
120-
deploy config and the L2 genesis allocs generated will be compatible with this
121-
fork. The automatically detected fork can be overwritten by setting the
122-
environment variable `FORK` either to the lower-case fork name (currently
123-
`delta`, `ecotone`, or `fjord`) or to `latest`, which will select the latest fork
124-
available (currently `fjord`).
125-
126-
By default, the script will dump the L2 genesis allocs (aka "state dump") of the detected or
127-
selected fork only, to the file at `STATE_DUMP_PATH`. The optional environment
128-
variable `OUTPUT_MODE` allows you to modify this behavior by setting it to one of
129-
the following values:
130-
131-
* `latest` (default) - only dump the selected fork's allocs.
132-
* `all` - also dump all intermediary fork's allocs. This only works if
133-
`STATE_DUMP_PATH` is not set. In this case, all allocs will be written to files
134-
`/state-dump-<fork>.json`. Another path cannot currently be specified for this
135-
use case.
136-
* `none` - won't dump any allocs. Only makes sense for internal test usage.
137-
138-
### Creation
139-
140-
* `CONTRACT_ADDRESSES_PATH` represents the deployment artifact that was
141-
generated during a contract deployment.
142-
* `DEPLOY_CONFIG_PATH` represents a path on the filesystem that points to a
143-
deployment config. The same deploy config JSON file should be used for L1 contracts
144-
deployment as when generating the L2 genesis allocs.
145-
* `STATE_DUMP_PATH` represents the filepath at which the allocs will be
146-
written to on disk.
147-
148-
```bash
149-
CONTRACT_ADDRESSES_PATH=<CONTRACT_ADDRESSES_PATH> \
150-
DEPLOY_CONFIG_PATH=<PATH_TO_MY_DEPLOY_CONFIG> \
151-
STATE_DUMP_PATH=<PATH_TO_WRITE_L2_ALLOCS> \
152-
forge script scripts/L2Genesis.s.sol:L2Genesis \
153-
--sig 'runWithStateDump()'
154-
```
155-
156-
## Subcommand (op-node genesis l2)
157-
158-
The genesis file creation is handled by the `genesis l2`
159-
subcommand, provided by the `op-node`. The following is an example of its usage
160-
from [v1.7.6](https://github.com/ethereum-optimism/optimism/releases/tag/v1.7.6) --
161-
note that you need to pass the path to the l2 genesis state dump file output by
162-
the foundry script above:
163-
164-
```bash
165-
go run cmd/main.go genesis l2 \
166-
--deploy-config=<Path to deploy config file> \
167-
--l1-deployments=<Path to L1 deployments JSON file as in superchain-registry> \
168-
--l2-allocs=<Path to L2 genesis state dump> \
169-
--outfile.l2=<Path to L2 genesis output file: i.e. ./genesis.json> \
170-
--outfile.rollup=<Path to rollup output file: i.e. ./rollup.json> \
171-
--l1-rpc=<RPC URL for an Ethereum L1 node. Cannot be used with --l1-starting-block>>
172-
```
173-
17492
## Next steps
17593

17694
* Learn how to [initialize](/operators/node-operators/configuration/base-config#initialization-via-genesis-file)

pages/operators/chain-operators/deploy/smart-contracts.mdx

Lines changed: 75 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -22,46 +22,91 @@ import { Callout, Steps } from 'nextra/components'
2222

2323
# OP Stack smart contract deployment
2424

25+
This guide outlines the process for deploying the OP Stack L1 smart contracts using `op-deployer`.
26+
27+
## Overview
28+
29+
Deploying OP Stack L1 contracts is a critical step in setting up your rollup.
30+
2531
<Callout type="warning">
26-
This page is out of date and shows the legacy method for smart contract deployment.
27-
For the latest recommended method, use [op-deployer](/operators/chain-operators/tools/op-deployer).
32+
Always deploy from official contract releases. You can find official release versions in the
33+
[smart contract overview](/stack/smart-contracts#official-releases). Contract changes are
34+
generally not considered backwards compatible.
2835
</Callout>
2936

30-
The following guide shows you how to deploy the OP Stack L1 smart contracts.
31-
The primary development branch is `develop`, however **you should only deploy
32-
official contract releases**. You can visit the [smart contract overview](/stack/smart-contracts#official-releases)
33-
for the official release versions. Changes to the smart contracts are
34-
generally not considered backwards compatible.
37+
## Deployment workflow
38+
39+
<Steps>
40+
### Install op-deployer
41+
42+
First, install the `op-deployer` tool following the [installation instructions](/operators/chain-operators/tools/op-deployer#installation).
43+
44+
### Create an intent file
45+
46+
Generate an intent file that defines your chain configuration:
47+
48+
```bash
49+
op-deployer init \
50+
--l1-chain-id <chain ID of your L1> \
51+
--l2-chain-ids <comma-separated list of chain IDs for your L2s> \
52+
--workdir .deployer \
53+
--intent-type <standard|custom|standard-overrides>
54+
```
55+
56+
Customize the generated intent file according to your requirements. See the [op-deployer configuration guide](/operators/chain-operators/tools/op-deployer#understanding-the-intenttoml-fields) for details.
57+
58+
### Deploy the contracts
3559

36-
## Deployment configuration
60+
Execute the deployment:
3761

38-
Deploying your OP Stack contracts requires creating a deployment configuration
39-
JSON file. You will create a new deployment configuration file in the following
40-
monorepo subdirectory: [packages/contracts-bedrock/deploy-config](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts-bedrock/deploy-config)
41-
For the full set of deployment configuration options and their meanings, you
42-
can see the [rollup deployment configuration page](/operators/chain-operators/configuration/rollup).
62+
```bash
63+
op-deployer apply --workdir .deployer --l1-rpc-url <rpc-url> --private-key <private key hex>
64+
```
4365

44-
For a detailed explanation of the configuration options and their meanings, refer to the [rollup deployment configuration page](/operators/chain-operators/configuration/rollup).
66+
### Verify contract source code (Optional)
4567

46-
## Using `op-deployer`
68+
Verify your deployed contracts on block explorers:
4769

48-
The recommended way to deploy the L1 smart contracts is with the `op-deployer` tool.
49-
Follow the steps in this [section](/operators/chain-operators/tutorials/create-l2-rollup#using-op-deployer) to learn how it works.
70+
```bash
71+
op-deployer verify \
72+
--l1-rpc-url <l1 rpc url> \
73+
--etherscan-api-key <your free etherscan api key>
74+
```
75+
76+
### Generate chain configuration files
77+
78+
Generate the necessary configuration files for your L2 node:
79+
80+
```bash
81+
op-deployer inspect genesis --workdir .deployer <l2-chain-id> > .deployer/genesis.json
82+
op-deployer inspect rollup --workdir .deployer <l2-chain-id> > .deployer/rollup.json
83+
```
84+
</Steps>
85+
86+
## Contract versioning
87+
88+
The OP Stack follows semantic versioning (X.Y.Z) for contract releases:
89+
90+
* **Major (X):** Breaking changes that require coordination, such as Ecotone or the Fault Proof System
91+
* **Minor (Y):** New features or improvements that maintain backwards compatibility
92+
* **Patch (Z):** Bug fixes and minor improvements
93+
94+
Contract releases are tagged in the repository as `op-contracts/vX.Y.Z`.
95+
96+
<Callout type="info">
97+
For standard chains intended to join the Superchain, always use the latest Optimism Governance approved
98+
release. You can find these in the [Superchain Registry](https://github.com/ethereum-optimism/superchain-registry).
99+
</Callout>
50100

101+
## Version compatibility
51102

52-
## Best practices
103+
When selecting a contract version, consider:
53104

54-
Production users should deploy their L1 contracts from a contracts release.
55-
All contracts releases are on git tags with the following format:
56-
`op-contracts/vX.Y.Z`. If you're deploying a new standard chain, you should
57-
deploy the latest Optimism Governance approved release of the L1 smart contracts with [op-deployer](/operators/chain-operators/tools/op-deployer). This will only initially deploy with permissioned dispute games
58-
enabled.
59-
Starting with permissioned fault proofs gives chain operators time to get comfortable
60-
running the additional infrastructure requirements: [op-challenger](https://github.com/ethereum-optimism/optimism/tree/develop/op-challenger) and
61-
[monitoring](https://github.com/ethereum-optimism/monitorism/tree/main). There are also
62-
additional changes to the economics of operating a permissionless fault proof that chain operators should fully understand.
105+
* L2 Client compatibility: Ensure your chosen contract version is compatible with the op-geth and op-node versions you plan to use
106+
* Feature requirements: Different versions support different features (e.g., only v2.0.0+ supports permissionless fault proofs)
107+
* Security updates: Always prefer the latest patch version within your chosen major.minor version
63108

64-
## Next steps
109+
## Next Steps
65110

66-
* Learn how to [create your genesis file](/operators/chain-operators/deploy/genesis)
67-
* See all [configuration options](/operators/chain-operators/configuration/rollup) and example configurations
111+
* Learn how to [create your genesis file](/operators/chain-operators/deploy/genesis).
112+
* See all [configuration options](/operators/chain-operators/configuration/rollup) and example configurations.

0 commit comments

Comments
 (0)