diff --git a/pages/notices/_meta.json b/pages/notices/_meta.json index 018dfcbe6..f58c0a90b 100644 --- a/pages/notices/_meta.json +++ b/pages/notices/_meta.json @@ -1,4 +1,5 @@ { + "pectra-fees": "Pectra user fees notice", "superchain-withdrawal-pause-test": "Superchain withdrawal pause test", "upgrade-15": "Upgrade 15: Isthmus Hard Fork", "upgrade-14": "Upgrade 14: MT-Cannon and Isthmus L1 Contracts", diff --git a/pages/notices/pectra-changes.mdx b/pages/notices/pectra-changes.mdx index 6dadec94f..bdf2fd0b1 100644 --- a/pages/notices/pectra-changes.mdx +++ b/pages/notices/pectra-changes.mdx @@ -102,6 +102,9 @@ The following sections are how chain operators can prepare the first part of the * [`op-batcher/v1.11.5`](https://github.com/ethereum-optimism/optimism/releases/tag/op-batcher%2Fv1.11.5). * [`op-proposer/v1.10.0`](https://github.com/ethereum-optimism/optimism/releases/tag/op-proposer%2Fv1.10.0). + + ### Double-check your fee scalars + See [this notice about modifying fee scalars after the Pectra upgrade on L1](/notices/pectra-fees). ## For fault proof enabled chains diff --git a/pages/notices/pectra-fees.mdx b/pages/notices/pectra-fees.mdx new file mode 100644 index 000000000..09eda9321 --- /dev/null +++ b/pages/notices/pectra-fees.mdx @@ -0,0 +1,48 @@ +--- +title: L1 Pectra user fees and chain profitability +description: L1 Pectra affect on user fees and chain profitability analysis +lang: en-US +content_type: notice +topic: pectra-fees +personas: + - chain-operator + - node-operator +categories: + - security + - protocol + - infrastructure + - l1-contracts +is_imported_content: 'false' +--- + +# Pectra impact on user fees and chain profitability + +The Ethereum L1 Pectra upgrade has introduced changes to calldata gas costs via [EIP-7623](https://eips.ethereum.org/EIPS/eip-7623) that may affect OP Stack chain profitability in specific configurations and market conditions. This notice outlines the potential impact on your chain and recommends specific actions. + +[EIP-7623](https://eips.ethereum.org/EIPS/eip-7623) increases the amount of gas payable for calldata transactions. These include such transactions as those used by OPStack chains *before the [Ecotone upgrade](https://specs.optimism.io/protocol/ecotone/overview.html)* when blob data availability (blob DA) was introduced. + +Blob DA has now been the default and recommended option for the OPStack for some time, so almost all chains make use of it. In order to continue to optimize for chains operating with blob DA, the Optimism protocol's current DA fee pricing formula has remained unchanged despite Pectra activating on Ethereum. + +Chains configured for blob data availability remain entirely unaffected by the Pectra upgrade. However, chains configured for calldata (i.e. operating in a legacy DA mode) may experience a reduction in profitability. It possible for such chains to be making a loss on data availabilty costs under certain market conditions. Therefore all chains should check their fee scalar config. + +## Actions required + +Since the Ecotone upgrade, the Optimism protocol prices L2 transactions using a function that incorporates the L1 base fee as well as the L1 blob base fee. The other inputs are the so-called "Ecotone scalars": operator-controlled parameters stored in the SystemConfig contract which can be used to tune the chain's (approximate) target profit margin for DA. + +Please review your [Ecotone scalar chain configuration](/operators/chain-operators/management/blobs). If your chain uses a zero blob base fee scalar, meaning it's configured to price for calldata only, you may need to update the base fee scalar and or the blob base fee scalar. Otherwise, no action is necessary. + +If your batcher is configured to submit using calldata *only*, then you should: + +* scale your base fee scalar by 10/4. + +This will ensure that, since you are paying exclusively for calldata DA, you are charging users appropriately such that your target profit margin is the same as it was before Pectra. + +If your batcher is configured to submit using blob DA, or configured to automatically choose the cheaper of the two DA modes, then you should adjust your Ecotone scalars for blob DA pricing (meaning a nonzero blob base fee scalar). You are referred back to [this guide](/operators/chain-operators/management/blobs). Doing so will ensure that you are charging accurately for using blob DA. Without such a change it is likely that you are overcharging users most of the time, and undercharging them in the rare occasions where blob DA is more expensive than calldata DA on Ethereum mainnet. + +As ever, you may continue to tweak the Ecotone scalars as desired in order to adjust the profitability of your chain. + +### Technical References + +* [Optimism Protocol Specification - Ecotone L1 Cost Fee Changes](https://specs.optimism.io/protocol/exec-engine.html#ecotone-l1-cost-fee-changes-eip-4844-da) +* [Optimism Protocol Specification - Fjord Execution Engine Fees](https://specs.optimism.io/protocol/fjord/exec-engine.html#fees) +* [Implementation Source Code](https://github.com/ethereum-optimism/op-geth/blob/3d7afdc2701b74c5987e31521e2c336c4511afdf/core/types/rollup_cost.go#L527) diff --git a/pages/operators/chain-operators/management/blobs.mdx b/pages/operators/chain-operators/management/blobs.mdx index 9fe416312..c67b2bfb4 100644 --- a/pages/operators/chain-operators/management/blobs.mdx +++ b/pages/operators/chain-operators/management/blobs.mdx @@ -49,7 +49,7 @@ This guide walks you through how to switch to using blobs for your chain after E For example, if you wished to increase your margin on L1 data costs by \~10%, you would do: ``` - newBaseFeeScalar= prevBaseFeeScalar * 1.1 + newBaseFeeScalar = prevBaseFeeScalar * 1.1 newBlobBaseFeeScalar = prevBlobBaseFeeScalar * 1.1 ``` @@ -121,6 +121,10 @@ blobs back to using calldata. to get a better estimate for scalar values on your chain. The following information is tuned to a network like OP Mainnet. + + Since the Pectra upgrade on L1, chains which exclusively use calldata DA need to scale up their BaseFeeScalar by 16/10. See [this notice](/notices/pectra-fees). + + Chains can update their fees to increase or decrease their margin. If using calldata, then `BaseFeeScalar` should be scaled to achieve the desired margin. For example, to increase your L1 Fee margin by 10%: @@ -145,6 +149,10 @@ blobs back to using calldata. * Ensure your `OP_BATCHER_MAX_CHANNEL_DURATION` is properly set to maximize savings. **NOTE:** While setting a high value here will lower costs, it will be less meaningful than for low throughput chains using blobs. See [OP Batcher Max Channel Configuration](/operators/chain-operators/configuration/batcher#set-your--op_batcher_max_channel_duration) for more details. +## Use auto DA mode in your batcher +The batcher now supports automatically switching from blobs to calldata depending on which DA type is more affordable. This is an optimization which allows for a slightly better DA profit margin for your chain. +To enable this mode, set `OP_BATCHER_DATA_AVAILABILITY_TYPE=auto`. + ## Other considerations * For information on L1 Data Fee changes related to the Ecotone upgrade, visit the [Transaction Fees page](/stack/transactions/fees#ecotone). diff --git a/words.txt b/words.txt index 44b65d42a..f78b478ab 100644 --- a/words.txt +++ b/words.txt @@ -22,6 +22,7 @@ authrpc autorelay Autorelay autorelayer +availabilty basefee bcde betanet @@ -79,7 +80,6 @@ Comprensive computependingblock COMPUTEPENDINGBLOCK confs -command Consen corsdomain counterfactually @@ -92,12 +92,10 @@ datacap DATACAP datadir DATADIR +devdocs devnet Devnet devnets -Devs -Devdocs -devdocs Devnets direnv disabletxpoolgossip