Skip to content

tools/op-deployer: clarify contract locator schemes and requirements #1521

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 6 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 28 additions & 3 deletions pages/operators/chain-operators/tools/op-deployer.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ The base use case for `op-deployer` is deploying new OP Chains. This process is
To get started with `op-deployer`, create an intent file that defines your desired chain configuration. Use the built-in `op-deployer` utility to generate this file:

<Callout type="info">
op-deployer uses a declarative intent file to determine how a new chain should be configured.
op-deployer uses a declarative intent file to determine how a new chain should be configured.
Then, it runs through a deployment pipeline to actually deploy the chain.
</Callout>

Expand Down Expand Up @@ -75,7 +75,7 @@ l2ContractsLocator = "tag://op-contracts/v1.7.0-beta.1+l2-contracts" # L2 smart
[[chains]]
# Your chain's ID, encoded as a 32-byte hex string
id = "0x00000000000000000000000000000000000000000000000000000a25406f3e60"
# Update the fee recipient contract
# Update the fee recipient contract
baseFeeVaultRecipient = "0x100f829718B5Be38013CC7b29c5c62a08D00f1ff"
l1FeeVaultRecipient = "0xbAEaf33e883068937aB4a50871f2FD52e241013A"
sequencerFeeVaultRecipient = "0xd0D5D18F0ebb07B7d728b14AAE014eedA814d6BD"
Expand All @@ -93,6 +93,30 @@ l2ContractsLocator = "tag://op-contracts/v1.7.0-beta.1+l2-contracts" # L2 smart
proposer = "0x41b3B204099771aDf857F826015703A1030b6675"
challenger = "0x7B51A480dAeE699CA3a4F68F9AAA434452112eF7"

#### Contract Locator Schemes

The `l1ContractsLocator` and `l2ContractsLocator` fields support several schemes for specifying where to find the contract implementations:

* `tag://` - References a specific tagged release of the contracts (e.g., `tag://op-contracts/v1.8.0-rc.4`)
* `file://` - Points to a local Forge build artifacts directory. Must point to the `forge-artifacts` directory containing the compiled contract artifacts
* `http://` or `https://` - Points to a target directory containing contract artifacts. The URL should directly reference the directory containing the `forge-artifacts` directory

<Callout type="warning">
When using any scheme other than `tag://`, you must set `configType` to either `custom` or `standard-overrides` in your intent file.
</Callout>

For example:

```toml
# When using tag:// scheme
configType = "standard-overrides"
l1ContractsLocator = "tag://op-contracts/v1.8.0-rc.4"
l2ContractsLocator = "tag://op-contracts/v1.7.0-beta.1+l2-contracts"

# When using other schemes (file://, http://, https://)
configType = "custom" # or "standard-overrides"
l1ContractsLocator = "file:///path/to/local/op-contracts/v1.8.0-rc.4/forge-artifacts"
l2ContractsLocator = "https://example.com/op-contracts/v1.7.0-beta.1+l2-contracts.tar.gz"
```

By default, `op-deployer` will fill in all other configuration variables with those that match the [standard configuration](https://specs.optimism.io/protocol/configurability.html). You can override these default settings by adding them to your intent file using the table below:
Expand Down Expand Up @@ -147,7 +171,8 @@ Now that you have your `genesis.json` and `rollup.json` you can spin up a node o

## Bootstrap usage

The bootstrap commands are specialized tools primarily used for initializing a new superchain on an L1 network that hasn't previously hosted one.
The bootstrap commands are specialized tools, primarily used for initializing a new superchain on an L1 network that hasn't previously hosted one.


### Available commands

Expand Down
Loading