Skip to content

Commit

Permalink
Merge pull request #965 from ethereum-optimism/update-cal
Browse files Browse the repository at this point in the history
Make tiny updates to the fjord calculator
  • Loading branch information
krofax authored Oct 7, 2024
2 parents 9c569f8 + 4ed6e92 commit f602f3c
Show file tree
Hide file tree
Showing 4 changed files with 261 additions and 5 deletions.
127 changes: 127 additions & 0 deletions pages/builders/chain-operators/tools/op-deployer 2.mdx
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).
101 changes: 101 additions & 0 deletions pages/builders/notices/sdk-deprecation 2.mdx
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
9 changes: 4 additions & 5 deletions pages/builders/tools/fee-calculator.mdx
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
---
title: Fjord Fee Parameter Calculator
lang: en-US
description: Use the Fjord Fee Parameter Calculator to estimate and calculate fees for transactions on the Fjord network.
description: Use the Fjord Fee Parameter Calculator to estimate and calculate fees for transactions.
---

import { ChainParametersForm } from '@/components/calculator/ChainParametersForm'

# Fjord Fee Parameter Calculator

The Fjord Fee Parameter Calculator helps you estimate transaction fees on the Fjord network. Use this tool to:
The Fjord Fee Parameter Calculator helps you estimate transaction fees. Use this tool to:

Calculate potential fees for different transaction types
Understand how network parameters affect fee calculations
Plan your transactions more effectively
* Calculate potential fees for different transaction types.
* Understand how network parameters affect fee calculations.

## How to use the calculator

Expand Down
29 changes: 29 additions & 0 deletions pages/stack/opcm 2.mdx
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)

0 comments on commit f602f3c

Please sign in to comment.