This repository was archived by the owner on Apr 6, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 335
fjord-notice #739
Merged
Merged
fjord-notice #739
Changes from 2 commits
Commits
Show all changes
19 commits
Select commit
Hold shift + click to select a range
4396d4e
fjord-notice
cpengilly 0a0817f
lint fixes, small updates
cpengilly 6bf9737
lint fixes
cpengilly 70b3614
Apply suggestions from code review
cpengilly e6569ee
Update lychee.toml
cpengilly 792b727
Apply suggestions from code review
cpengilly b15c3cf
updates from seb
cpengilly 152aae1
Update mips.mdx
cpengilly 0163251
Update pages/builders/notices/fjord-changes.mdx
cpengilly ecec6f1
Update releases.mdx
cpengilly 715ebe8
Merge branch 'fjord-notice' of https://github.com/ethereum-optimism/d…
cpengilly 3e27bf6
Apply suggestions from code review
cpengilly a82a0cb
feedback from soyboy
cpengilly c1747dc
Update fjord-changes.mdx
cpengilly ad4c7b2
Update pages/builders/notices/fjord-changes.mdx
cpengilly 89bf74a
add fjord to transaction fees
cpengilly 3b6cb11
lint fixes
cpengilly 8a8af5a
Merge branch 'main' into fjord-notice
cpengilly bf42f72
fix superchain reg broken link
cpengilly File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or 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 hidden or 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 |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
| { | ||
| "fp-changes": "Preparing for Fault Proofs Breaking Changes" | ||
| "fp-changes": "Preparing for Fault Proofs Breaking Changes", | ||
| "fjord-changes": "Preparing for Fjord Upgrade Breaking Changes" | ||
| } |
This file contains hidden or 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,126 @@ | ||
| --- | ||
| title: Preparing for Fjord Breaking Changes | ||
| lang: en-US | ||
| description: Learn how to prepare for Fjord upgrade breaking changes. | ||
| --- | ||
|
|
||
| import { Steps, Callout } from 'nextra/components' | ||
|
|
||
| # Preparing for Fjord Breaking Changes | ||
|
|
||
| This page outlines breaking changes related to Fjord network upgrade for wallets and front-end developers, chain operators, and node operators. | ||
|
cpengilly marked this conversation as resolved.
Outdated
|
||
| If you experience difficulty at any stage of this process, please reach out to [developer support](https://github.com/ethereum-optimism/developers/discussions). | ||
|
|
||
| <Callout type="info"> | ||
| The Fjord upgrade for OP Sepolia was activated on **1716998400 Wed May 29 16:00:00 UTC 2024**. The Fjord OP Mainnet upgrade will be activated **1720627201 Thu July 10 16:00:01 UTC 2024**, pending [governance approval](https://gov.optimism.io/t/upgrade-proposal-9-fjord-network-upgrade/8236). | ||
|
cpengilly marked this conversation as resolved.
Outdated
|
||
| </Callout> | ||
|
|
||
| ## What's Included in Fjord | ||
|
|
||
| The [Fjord network upgrade](https://specs.optimism.io/fjord/overview.html) includes the following: | ||
|
|
||
| * [RIP-7212](https://specs.optimism.io/protocol/precompiles.html#P256VERIFY): Precompile for secp256r1 Curve Support, to reduce gas costs of many smart wallet applications. | ||
| * [Brotli](https://specs.optimism.io/fjord/derivation.html#brotli-channel-compression) as a channel compression option, for \~5-15% lower data availability costs. | ||
| * [FastLZ](https://specs.optimism.io/fjord/exec-engine.html#fees) based L1 fee [cost calculation](https://specs.optimism.io/fjord/exec-engine.html#fees), including an upgraded [`GasPriceOracle` L2 predeploy](https://specs.optimism.io/fjord/derivation.html#gaspriceoracle-deployment) to compute it. | ||
| * Parameter changes: | ||
| * [Max sequencer drift](https://specs.optimism.io/fjord/derivation.html#constant-maximum-sequencer-drift) becomes a constant with value increased to 1800 seconds | ||
| * 10x increased values for `MAX_RLP_BYTES_PER_CHANNEL` and `MAX_CHANNEL_BANK_SIZE` ([spec](https://specs.optimism.io/fjord/derivation.html#increasing-max_rlp_bytes_per_channel-and-max_channel_bank_size)) | ||
| * The [Fjord hardfork activation block](https://specs.optimism.io/fjord/derivation.html#network-upgrade-automation-transactions) includes several transactions to perform all L2 contract deployments, upgrades, enablements, and proxy updates. | ||
| * L1 Gas Cost changes: | ||
| * `getL1GasUsed` method of the `GasPriceOracle` contract ([spec](https://specs.optimism.io/fjord/predeploys.html#l1-gas-usage-estimation)) is being deprecated | ||
| * the GPO gets a new function `getL1FeeUpperBound` as a cheap new way to calculate an upper bound for the max fee of a new transaction | ||
| * `L1GasUsed` field of the transaction receipt ([spec](https://specs.optimism.io/fjord/exec-engine.html)) is being deprecated | ||
|
cpengilly marked this conversation as resolved.
Outdated
|
||
|
|
||
| ## For Wallets and Front-End Developers | ||
|
|
||
| The proposed Fjord upgrade to the OP Stack and OP Mainnet changes the formula for estimating the [L1 Data Fee](/stack/transactions/fees#l1-data-fee) component of the [OP Stack Transaction Fee](/stack/transactions/fees). | ||
|
|
||
| * `getL1Fee` on the [GasPriceOracle contract](https://github.com/ethereum-optimism/optimism/blob/0dcb1b2c7dadec98a24f47e2e2d781a25800d9e1/packages/contracts-bedrock/src/L2/GasPriceOracle.sol#L54) has been updated. It now performs FastLZ compression on-chain, which is a better approximation of the compressibility of a transaction. Combined with a linear regression model, this gives a more accurate prediction of L1 data fees. | ||
| * `getL1GasUsed` and the corresponding `L1GasUsed` field of transaction receipts are being deprecated as they no longer accurately reflect gas usage as of Ecotone. The function and field will remain, however, their usefulness is limited as they still assume calldata batching. `getL1Fee` should be used when trying to predict L1 Data fees. | ||
|
cpengilly marked this conversation as resolved.
Outdated
|
||
| * `getL1FeeUpperBound` is a new method to estimate fee upper bounds when sending transactions. It is much cheaper, in gas costs, than previous methods. This is what wallets and front-ends should probably use in practice. | ||
|
cpengilly marked this conversation as resolved.
Outdated
|
||
|
|
||
| Your application may need to be updated to account for this change. Read below to learn how you can prepare for Fjord. | ||
|
cpengilly marked this conversation as resolved.
Outdated
|
||
|
|
||
| ### Preparing Your Wallet or Front-End | ||
|
|
||
| Changes to the L1 Data Fee formula may affect your application if you are computing this fee component on your own. It's strongly recommended that you use [existing tooling](/builders/app-developers/transactions/estimates#tooling) to estimate transaction fees instead of computing them yourself. | ||
|
|
||
| * If you cannot use existing tooling, use the `getL1Fee` function on the `GasPriceOracle` smart contract to compute the L1 Data Fee component of the transaction fee. Avoid implementing the formula yourself, as it may change in the future. | ||
| * Alternatively, you might consider using `getL1FeeUpperBound` if you need to estimate the transaction fee and also need to compute the correct value to set when sending transactions. | ||
|
cpengilly marked this conversation as resolved.
Outdated
|
||
|
|
||
| ## For Chain Operators | ||
|
|
||
| The proposed Fjord upgrade impacts OP chains and requires chain operators to upgrade their chain and configure the sequencer for Fjord. | ||
|
|
||
| * [Max sequencer drift](https://specs.optimism.io/fjord/derivation.html#constant-maximum-sequencer-drift) becomes a constant with value increased to 1800 seconds. This gives chain operators more time to respond to L1 node issues without facing a potential L2 chain halt. | ||
| * [Brotli](https://specs.optimism.io/fjord/derivation.html#brotli-channel-compression) is now supported as a channel compression option, for \~5-15% lower data availability costs. | ||
| * An update of the fee scalars on the `SystemConfig` is necessary, similar to Ecotone. | ||
|
|
||
| <Steps> | ||
| ### Prepare `SystemConfig` Transaction | ||
|
|
||
| An onchain transaction will be required to update the scalar for Fjord. This needs to be prepared days in advance before the activation to ensure chain operators don't operate at a loss when Fjord activates. | ||
|
|
||
| * Encode the scalar value using the [ecotone scalar encoding tool](https://github.com/ethereum-optimism/optimism/tree/develop/op-chain-ops/cmd/ecotone-scalar) | ||
| * Send a `setGasConfig` transaction to the `SystemConfig` | ||
|
cpengilly marked this conversation as resolved.
Outdated
|
||
| * Set `BaseFeeScalar` and `BlobBaseFeeScalar` values based on the [Fjord calculator](https://docs.google.com/spreadsheets/d/1V3CWpeUzXv5Iopw8lBSS8tWoSzyR4PDDwV9cu2kKOrs/edit#gid=186414307) | ||
|
|
||
| ### Prepare Sequencer Node | ||
|
|
||
| <Callout type="warning"> | ||
| If you are operating an OP Chain that has an entry in the [`superchain-registry`](https://github.com/ethereum-optimism/superchain-registry/blob/main/superchain/configs/chainids.json), the Fjord activation date is part of the `op-node` and `op-geth` nodes. So, no action is needed for the sequencer after preparing the `SystemConfig` **t**ransaction. Please skip to [Step 3: Prepare Batcher](#prepare-batcher). | ||
| </Callout> | ||
|
|
||
| For custom chains not included in the [`superchain-registry`](https://github.com/ethereum-optimism/superchain-registry/blob/main/superchain/configs/chainids.json), you will need to manually configure the [activation timestamp](https://github.com/ethereum-optimism/superchain-registry/blob/main/superchain/configs/mainnet/superchain.yaml). You have two configuration options for your sequencer node: | ||
|
|
||
| * **Option 1:** In your `rollup.json` config file, set `L2GenesisFjordTimeOffset` to the UNIX timestamp of the block you want to activate the Fjord hardfork. You will still need to set the `override.fjord` flag in `op-geth` with the UNIX timestamp. | ||
|
cpengilly marked this conversation as resolved.
Outdated
|
||
| * O**ption 2:** Alternatively, chain operators can use the override flags to configure your sequencer node by specifying a time in the future when Fjord will activate. | ||
| * Set `override.fjord` in both `op-node` and `op-geth` to the UNIX timestamp of the block you want to activate the Fjord hardfork or corresponding env vars for this. | ||
| * In general, run `op-node --help` or `op-geth --help` to see flags, their descriptions and env vars | ||
|
|
||
|
cpengilly marked this conversation as resolved.
|
||
| ### Prepare Batcher | ||
|
|
||
| Prepare your batcher to be restarted with the updated configuration in advance of the Fjord activation. You will also need to activate Brotli compression for the batcher. | ||
|
cpengilly marked this conversation as resolved.
Outdated
|
||
|
|
||
| * Run the batcher help to see available options: `go run ./op-batcher/cmd --help |less` | ||
|
|
||
| ```jsx | ||
| --compression-algo value (default: zlib) ($OP_BATCHER_COMPRESSION_ALGO) | ||
| The compression algorithm to use. Valid options: zlib, brotli, brotli-9, | ||
| brotli-10, brotli-11 | ||
| ``` | ||
|
cpengilly marked this conversation as resolved.
Outdated
|
||
|
|
||
| * Activate Brotli compression for your batcher. `brotli-10` is the default and works fine for most chain configurations, but chain operators can experiment with `brotli-11` if it gives them better compression and their batcher can still keep up with the increased compression computation needs. | ||
|
cpengilly marked this conversation as resolved.
Outdated
|
||
| </Steps> | ||
|
|
||
| ## For Node Operators | ||
|
|
||
| Node operators will need to upgrade to Fjord prior to the activation date. For Sepolia, the op-node release [v1.7.7-rc.1](https://github.com/ethereum-optimism/optimism/releases/tag/op-node%2Fv1.7.7-rc.1) and op-geth release v1.101315.1 contain these changes. | ||
|
cpengilly marked this conversation as resolved.
Outdated
|
||
|
|
||
| These following steps are necessary for EVERY node operator: | ||
|
|
||
| <Steps> | ||
| ### Update to the Latest Release | ||
|
|
||
| * [`op-geth`](https://github.com/ethereum-optimism/op-geth/releases/tag/v1.101315.1) | ||
| * [`op-node`](https://github.com/ethereum-optimism/optimism/releases/tag/op-node%2Fv1.7.7-rc.1) | ||
|
cpengilly marked this conversation as resolved.
Outdated
|
||
|
|
||
| ### Configure the Fjord Activation Date | ||
|
|
||
| <Callout type="warning"> | ||
| If you are operating a node for an OP Chain that has an entry in the [`superchain-registry`](https://github.com/ethereum-optimism/superchain-registry/blob/main/superchain/configs/chainids.json), the Fjord activation date is part of the `op-node` and `op-geth` nodes. So, no action is needed for the sequencer after upgrading to the latest release. Please skip to [Step 3: Verify Your Configuration](#verify-your-configuration). | ||
| </Callout> | ||
|
|
||
| For node operators of custom chains not included in the [`superchain-registry`](https://github.com/ethereum-optimism/superchain-registry/blob/main/superchain/configs/chainids.json), you will need to manually configure the [activation timestamp](https://github.com/ethereum-optimism/superchain-registry/blob/main/superchain/configs/mainnet/superchain.yaml). This can be done one of two ways: | ||
|
|
||
| * **Option 1:** Set the time in the `rollup.json` (set `fjord_time`) for `op-node`. You will still need to set the `override.fjord` flag in `op-geth` if you use this option. | ||
|
cpengilly marked this conversation as resolved.
Outdated
|
||
| * **Option 2:** Set the activation time via overrides (CLI) in both `op-node` and `op-geth`. These will need to be set on `op-node` and `op-geth` for the sequencer and all other nodes. | ||
|
|
||
| ### Verify Your Configuration | ||
|
|
||
| Make the following checks to verify that your node is properly configured. | ||
|
|
||
| * `op-node` and `op-geth` will log their configurations at startup | ||
| * Check that the Fjord time is set to `activation-timestamp` in the op-node startup logs | ||
| * Check that the Fjord time is set to `activation-timestamp` in the op-geth startup logs | ||
| </Steps> | ||
This file contains hidden or 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
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.