-
Notifications
You must be signed in to change notification settings - Fork 158
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #965 from ethereum-optimism/update-cal
Make tiny updates to the fjord calculator
- Loading branch information
Showing
4 changed files
with
261 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
--- | ||
title: Deployer | ||
lang: en-US | ||
tags: ["op-deployer","eng-platforms"] | ||
description: Learn how op-deployer can simplify deployment of the OP Stack. | ||
--- | ||
|
||
import {Callout, Steps} from 'nextra/components' | ||
|
||
# Deployer | ||
|
||
`op-deployer` simplifies the process of deploying the OP Stack. It works similarly to [Terraform](https://www.terraform.io). Like Terraform, you define a declarative config file called an "intent," then run a | ||
command to apply the intent to your chain. `op-deployer` will compare the state of your chain against the intent, | ||
and make whatever changes are necessary for them to match. | ||
|
||
## Installation | ||
|
||
`op-deployer` is currently under active development, and must be compiled from source. Assuming you have the Go | ||
toolchain installed, you can install `op-deployer` by following these steps: | ||
|
||
<Steps> | ||
### **Clone the Monorepo**: | ||
|
||
Run the following command to clone the monorepo: | ||
|
||
```bash | ||
git clone https://github.com/ethereum-optimism/optimism.git | ||
``` | ||
|
||
### **Build the Binary**: | ||
|
||
Run the following commands to build the binary: | ||
|
||
```bash | ||
cd op-chain-ops | ||
make op-deployer | ||
``` | ||
|
||
### (Optional) Move `op-deployer` Into `$PATH` | ||
|
||
Run the following command to move the `op-deployer` binary into your `$PATH`. Note that the path for your system | ||
may be different: | ||
|
||
```bash | ||
sudo mv ./bin/op-deployer /usr/local/bin/op-deployer | ||
``` | ||
</Steps> | ||
|
||
## Usage | ||
|
||
### Configuring your Chain | ||
|
||
To get started with `op-deployer`, you need to create an intent file that outlines your desired chain configuration. You can use the built-in `op-deployer` utility to generate this file. Just run the following command to create an example intent file for a development chain: | ||
|
||
``` | ||
op-deployer init --l1-chain-id 11155111 --l2-chain-ids 12345 --workdir .deployer | ||
``` | ||
This command will create a directory called `.deployer` in your current working directory containing the intent file | ||
and an empty `state.json` file. `state.json` is populated with the results of your deployment, and never needs to | ||
be edited directly. | ||
Your intent file will look something like this: | ||
```toml | ||
l1ChainID = 11155111 # The chain ID of the L1 chain you'll be deploying to | ||
fundDevAccounts = true # Whether or not to fund dev accounts using the test... junk mnemonic on L2. | ||
contractsRelease = "op-contracts/v1.6.0" # The version of the smart contracts to deploy. | ||
# List of L2s to deploy. op-deployer can deploy multiple L2s at once | ||
[[chains]] | ||
# Your chain's ID, encoded as a 32-byte hex string | ||
id = "0x0000000000000000000000000000000000000000000000000000000000003039" | ||
# Various ownership roles for your chain. When you use op-deployer init, these roles are generated using the | ||
# test... junk mnemonic. You should replace these with your own addresses for production chains. | ||
[chains.roles] | ||
proxyAdminOwner = "0x7759a8a43aa6a7ee9434ddb597beed64180c40fd" | ||
systemConfigOwner = "0x8e35d9523a0c4c9ac537d254079c2398c6f3b35f" | ||
governanceTokenOwner = "0x7759a8a43aa6a7ee9434ddb597beed64180c40fd" | ||
unsafeBlockSigner = "0xbb19dce4ce51f353a98dbab31b5fa3bc80dc7769" | ||
batcher = "0x0e9c62712ab826e06b16b2236ce542f711eaffaf" | ||
proposer = "0x86dfafe0689e20685f7872e0cb264868454627bc" | ||
challenger = "0xf1658da627dd0738c555f9572f658617511c49d5" | ||
``` | ||
|
||
See the code comments above for explanations of each field. By default, `op-deployer` will fill in all other configuration variables | ||
with those that match our standard config. You can override these defaults by adding them to your intent file, but | ||
that won't be covered here. | ||
|
||
### Applying your Intent | ||
|
||
Now that you've created your intent file, you can apply it to your chain: | ||
|
||
``` | ||
op-deployer apply --workdir .deployer --l1-rpc-url <rpc-url> --private-key <private key hex> | ||
``` | ||
|
||
Hardware wallets are not supported, but you can use ephemeral hot wallets since this deployer key has no privileges. | ||
|
||
This command will deploy the OP Stack to L1. It will deploy all L2s specified in the intent file. Superchain | ||
configuration will be set to the Superchain-wide defaults - i.e., your chain will be opted into the [Superchain pause](https://specs.optimism.io/protocol/superchain-configuration.html#pausability) | ||
and will use the same [protocol versions](https://github.com/ethereum-optimism/specs/blob/main/specs/protocol/superchain-upgrades.md) | ||
address as other chains on the Superchain. | ||
|
||
### Generating Genesis Files | ||
|
||
With the contracts deployed, you can generate a genesis file for any of your L2s. Run the following command to do so: | ||
|
||
``` | ||
./bin/op-deployer inspect genesis <l2-chain-id> --outfile genesis.json | ||
``` | ||
|
||
This will write the genesis file to `genesis.json`. You can change the `--outfile` parameter to write it somewhere | ||
else. You can run another member of the `inspect` family, `rollup`, to get the `rollup.json` file: | ||
|
||
``` | ||
./bin/op-deployer inspect rollup <l2-chain-id> --outfile rollup.json | ||
``` | ||
|
||
## More Information | ||
|
||
`op-deployer` uses the OP Contracts Manager (OPCM) under the hood to deploy contracts. | ||
|
||
## Next Steps | ||
|
||
* For more details, check out the tool and documentation in the [op-deployer repository](https://github.com/ethereum-optimism/optimism/tree/develop/op-chain-ops/cmd/op-deployer). | ||
* For more information on OP Contracts Manager, refer to the [OPCM documentation](/stack/opcm). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
--- | ||
title: Deprecation of the Optimism SDK | ||
lang: en-US | ||
description: This page outlines the details of the Optimism SDK deprecation and guides developers to migrate to using `viem` library. | ||
--- | ||
|
||
## Preparing for Optimism SDK deprecation | ||
|
||
The Optimism SDK will officially be deprecated in Q1 2025. The project is shifting to the `viem` library for a more modern, efficient, and flexible development experience. This change affects all tutorials and resources that previously relied on the Optimism SDK, and relevant documentation has been updated accordingly. | ||
|
||
### Breaking changes to expect | ||
|
||
The migration from the Optimism SDK to `viem` library brings several breaking changes: | ||
|
||
* **Transaction estimation**: Methods for estimating gas fees will now leverage `viem` APIs. | ||
* **Bridging**: All token bridging actions must be updated to use the `viem` library bridging methods. | ||
* **Cross-chain communication**: `viem` library simplifies the cross-domain messaging functionality. | ||
* **SDK method removal**: All deprecated SDK methods will be unavailable after Q1 2025. | ||
|
||
Developers and users are strongly encouraged to transition to `viem` before the deprecation date to avoid disruptions. | ||
|
||
### Updated tutorials | ||
|
||
We are updating our tutorials to use the `viem` library. | ||
|
||
{/* Below, you'll find links to the updated versions of popular tutorials: | ||
* [Estimating Transaction Costs on OP Mainnet](../tutorials/transaction-cost-estimation)\ | ||
Estimation of transaction costs now uses the `viem` gas estimation utilities. | ||
* [Triggering OP Mainnet Transactions from Ethereum](../tutorials/trigger-op-transactions)\ | ||
Learn how to trigger transactions using `viem` to interact with the OP Mainnet. | ||
* [Tracing Deposits and Withdrawals](../tutorials/tracing-deposits-withdrawals)\ | ||
The tracing functionalities have been adapted to use `opstack` for efficient results. | ||
* [Viewing Deposits and Withdrawals by Address](../tutorials/view-deposits-withdrawals)\ | ||
This tutorial outlines updated methods in `viem` for querying deposits and withdrawals by address. | ||
* [Bridging Your Standard ERC-20 Token Using the Standard Bridge](../tutorials/bridge-standard-erc20)\ | ||
The standard bridge tutorial now uses `opstack` for token transfers between Ethereum and OP Mainnet. | ||
* [Bridging Your Custom ERC-20 Token Using the Standard Bridge](../tutorials/bridge-custom-erc20)\ | ||
Custom ERC-20 tokens can now be bridged via `opstack`, making the process more streamlined. | ||
* [Bridging ERC-20 Tokens to OP Mainnet With the Optimism SDK](../tutorials/bridge-sdk-erc20)\ | ||
**Deprecated** – please use [Bridging Your Custom ERC-20 Token Using the Standard Bridge](../tutorials/bridge-custom-erc20). | ||
* [Bridging ETH to OP Mainnet With the Optimism SDK](../tutorials/bridge-sdk-eth)\ | ||
**Deprecated** – please use [Estimating Transaction Costs on OP Mainnet](../tutorials/transaction-cost-estimation). | ||
* [Communicating Between OP Mainnet and Ethereum in Solidity](../tutorials/cross-chain-solidity)\ | ||
Cross-chain communication now leverages `opstack` for all messaging. */} | ||
|
||
### For app developers | ||
|
||
If your application currently depends on the Optimism SDK, you will need to migrate to using the `viem` library. | ||
The tutorials have been updated to reflect these changes, and it is critical to update your applications before the deprecation date to maintain compatibility. | ||
|
||
Here are some key points to consider: | ||
|
||
Install new dependencies: Replace the Optimism SDK with `viem` in your project. | ||
|
||
```bash | ||
pnpm remove @eth-optimism/sdk | ||
pnpm add viem | ||
``` | ||
|
||
* Update imports: Replace Optimism SDK imports with `viem` imports. | ||
* Migrate SDK methods: Refactor your code to use equivalent `viem` methods. Refer to the viem documentation and opstack documentation for guidance. | ||
* Test thoroughly: After migration, extensively test your application to ensure all functionality works as expected. | ||
|
||
### For chain operators | ||
|
||
Chain operators utilizing the SDK for cross-chain operations, bridging, or other functions should switch to the `viem` library. | ||
The `viem` library offers more efficient methods to handle these operations. | ||
|
||
Chain operators should be aware of the following: | ||
|
||
* SDK removal: Remove any dependencies on the Optimism SDK in your infrastructure. | ||
* Update tooling: Ensure all tools and scripts are updated to use `viem`. | ||
* Monitor performance: After migration, closely monitor your chain's performance to ensure smooth operation. | ||
|
||
### For node operators | ||
|
||
Node operators will need to ensure that any scripts or services relying on the Optimism SDK are updated to use `viem` library. | ||
These updates will help align with future improvements and scalability efforts across the OP Stack. | ||
|
||
Node operators should take the following steps: | ||
|
||
* Update node software: Ensure your node software is compatible with the latest `viem` libraries. | ||
* Review configuration: Check and update any configuration files that may reference the Optimism SDK. | ||
* Test thoroughly: Perform comprehensive testing in a staging environment before updating production nodes. | ||
|
||
### Need Help? | ||
|
||
For further assistance or questions about this migration, feel free to reach through the following channels: | ||
|
||
* Join our [community forum](https://community.optimism.io/) for discussions and support | ||
* Connect with us on [Discord](https://discord.gg/optimism) for community support | ||
* Open an [issue on our GitHub repository](https://github.com/ethereum-optimism/docs/issues) for documentation-related concerns |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
--- | ||
title: OP Contracts Manager | ||
lang: en-US | ||
tags: ["opcm","eng-security"] | ||
description: Learn how OP Contracts Manager deploys of the OP Stack with one transaction. | ||
--- | ||
|
||
import { Callout, Tabs, Steps } from 'nextra/components' | ||
|
||
# OP Contracts Manager | ||
|
||
The OP Contracts Manager is a contract that deploys the L1 contracts for an OP Stack chain in a single transaction. It provides a minimal set of user-configurable parameters to ensure that the resulting chain meets the standard configuration requirements. | ||
|
||
The version deployed is always a governance-approved contract release. The set of governance approved contract releases can be found on the Optimism Monorepo releases page, and is the set of releases named `op-contracts/vX.Y.Z`. | ||
|
||
## Purpose | ||
|
||
OPCM simplifies the L1 contract deployments for new OP Stack chains. It addresses three aspects of deploying the OP Stack's L1 contracts: | ||
|
||
1. **Deploy Superchain Contracts.** Superchain contracts are shared between many OP chains, so this occurs only occasionally in production. | ||
2. **Deploy Shared Implementation Contracts.** This occurs once per contracts release in production. | ||
3. **Deploy OP Chain Contracts.** This occurs for every OP chain deployment in production. | ||
|
||
In a future iteration, it also is meant to handle upgrading the smart contracts. | ||
|
||
## Learn more | ||
|
||
* Checkout the [OPCM specs](https://specs.optimism.io/experimental/op-contracts-manager.html) | ||
* Checkout the [OPCM design document](https://github.com/ethereum-optimism/design-docs/blob/main/protocol/op-contracts-manager-arch.md) |