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-fees.mdx b/pages/notices/pectra-fees.mdx new file mode 100644 index 000000000..51da493a3 --- /dev/null +++ b/pages/notices/pectra-fees.mdx @@ -0,0 +1,84 @@ +--- +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 that will affect OP Stack chain profitability in specific configurations. This notice outlines the potential impact on your chain and recommends specific actions. + +The Optimism protocol's current fee pricing formula does not account for the Pectra upgrade's 10/4 increase in calldata costs (from 16 gas per byte to 40 gas per byte). While most chains using blob data availability remain unaffected, chains with specific configurations will experience reduced profitability. + +## Actions required + +Review your chain configuration if your chain uses a zero blob fee scalar (`sB=0`), meaning it's configured to price for calldata only, AND your chain uses calldata (not blobs) to post batches to L1. + +No action is needed if your chain uses blob data availability (the default and recommended configuration) or your ecotone scalars already account for blob pricing. + +## Technical background + +Since the Ecotone upgrade, the Optimism protocol prices L2 transactions using a function that incorporates L1 base fee, L1 blob base fee, and estimated data availability costs. "Ecotone scalars" in the SystemConfig contract determine this pricing. + +The current fee pricing formula is: + +``` +c = e(16sC·C + sB·B)·10^-6 +``` + +Where: + +* e = estimated transaction size +* C = L1 base fee +* B = L1 blob base fee +* sC = L1 base fee scalar +* sB = L1 blob base fee scalar +* 16 = calldata cost per byte (pre-Pectra) + +## Impact on chains + +The Pectra upgrade through EIP-7623 increases calldata gas costs by a factor of 10/4 (from 16 to 40 gas per byte). + +**No impact for chains that:** + +* Use blob data availability (most OP Stack chains) +* Have ecotone scalars configured for a healthy profit margin (\~5%) + +**Potential impact for chains that:** + +* Use calldata exclusively for batch posting +* Have scalars configured only for calldata pricing (sB=0) + +In extreme cases of unchecked negative profitability, a batcher might eventually exhaust its funds, resulting in a safe head stall. + +### Detection + +Chain operators should monitor their profitability by tracking the L1 Fee Vault balance and comparing this to the batcher balance. + +### Mitigation + +If adjustments are needed: + +1. **For chains using calldata by design:** // What is the fix here?? + +2. **For chains using or able to use blobs:** Ensure your blob fee scalar (sB) properly accounts for blob pricing, as the Pectra changes do not affect blob transactions. + +Chain operators can update their ecotone scalars through the standard governance process for their deployment. + +### 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) +* [EIP-7623](https://eips.ethereum.org/EIPS/eip-7623) diff --git a/words.txt b/words.txt index 44b65d42a..1b1791a8e 100644 --- a/words.txt +++ b/words.txt @@ -1,7 +1,7 @@ -accountqueue ACCOUNTQUEUE -accountslots +accountqueue ACCOUNTSLOTS +accountslots ACDC ADDI ADDIU @@ -9,58 +9,58 @@ ADDU airgap Allnodes allocs -alphanet Alphanet -alphanets +alphanet Alphanets +alphanets altda ANDI Ankr Apeworx Arweave authrpc -autorelay Autorelay +autorelay autorelayer basefee bcde -betanet Betanet -betanets +betanet Betanets +betanets BGEZ BGTZ Biconomy BLEZ -blobpool BLOBPOOL +blobpool blobspace Blockdaemon blockhash blocklists -blocklogs BLOCKLOGS -blockprofilerate +blocklogs BLOCKPROFILERATE +blockprofilerate Blockscout -blockspace Blockspace +blockspace blocktime -blocktimes Blocktimes -bloomfilter +blocktimes BLOOMFILTER +bloomfilter BLTZ Bootcamp bootnode -bootnodes -Bootnodes BOOTNODES +Bootnodes +bootnodes bottlenecked -brotli Brotli -callouts +brotli Callouts +callouts CCIP cdef Celestia @@ -72,68 +72,65 @@ chaosnet Chugsplash Clabby codebases -collateralized Collateralized +collateralized compr Comprensive -computependingblock COMPUTEPENDINGBLOCK +computependingblock confs -command Consen corsdomain counterfactually -crosschain Crosschain +crosschain Crossmint Dapphub daserver -datacap DATACAP -datadir +datacap DATADIR -devnet -Devnet -devnets -Devs -Devdocs +datadir devdocs +Devnet +devnet Devnets +devnets direnv -disabletxpoolgossip DISABLETXPOOLGOSSIP -discv +disabletxpoolgossip Discv +discv DIVU Drand dripcheck Drippie Eigen EIPs -enabledeprecatedpersonal ENABLEDEPRECATEDPERSONAL +enabledeprecatedpersonal enginekind -erigon Erigon -etherbase +erigon ETHERBASE +etherbase Ethernity Ethernow -ethstats ETHSTATS -evmtimeout +ethstats EVMTIMEOUT +evmtimeout excercise executability exfiltrate -exitwhensynced EXITWHENSYNCED -extradata +exitwhensynced EXTRADATA +extradata Farcaster Faultproof -fdlimit FDLIMIT +fdlimit Flashblocks Flashbots forkable @@ -144,52 +141,52 @@ Fraxtal funcationality Funct gameplay -gascap GASCAP +gascap gaslessly -gcmode GCMODE +gcmode Gelato gifs -globalqueue GLOBALQUEUE -globalslots +globalqueue GLOBALSLOTS +globalslots gokzg growthepie hardfork hardforks -healthcheck HEALTHCHECK +healthcheck healthchecks -historicalrpc HISTORICALRPC -historicalrpctimeout +historicalrpc HISTORICALRPCTIMEOUT -holesky -Holesky +historicalrpctimeout HOLESKY +Holesky +holesky IERC -ignoreprice IGNOREPRICE +ignoreprice Immunefi -inator Inator -influxdbv +inator INFLUXDBV +influxdbv initcode -ipcdisable IPCDISABLE +ipcdisable ipcfile -ipcpath IPCPATH +ipcpath IPFS Isthumus JALR -journalremotes JOURNALREMOTES -jspath +journalremotes JSPATH +jspath jwtsecret Keccak leveldb @@ -198,34 +195,34 @@ Lisk logfile logfmt Mainnets -maxage MAXAGE -maxbackups +maxage MAXBACKUPS -maxpeers +maxbackups MAXPEERS -maxpendpeers +maxpeers MAXPENDPEERS -maxprice +maxpendpeers MAXPRICE -memprofilerate +maxprice MEMPROFILERATE -merkle +memprofilerate Merkle +merkle MFHI MFLO Mgas Minato -minfreedisk MINFREEDISK -minsuggestedpriorityfee +minfreedisk MINSUGGESTEDPRIORITYFEE +minsuggestedpriorityfee Mintable Mintplex MIPSEVM Mitigations -monitorism Monitorism +monitorism Moralis Mordor mountpoint @@ -235,44 +232,44 @@ MTHI MTLO MULT multiaddr -multichain Multichain +multichain multiclient multisigs MULTU nethermind -netrestrict NETRESTRICT -networkid +netrestrict NETWORKID -newpayload +networkid NEWPAYLOAD +newpayload nextra -nocompaction NOCOMPACTION -nodekey +nocompaction NODEKEY -nodekeyhex +nodekey NODEKEYHEX +nodekeyhex nodename Nodies -nodiscover NODISCOVER -nolocals +nodiscover NOLOCALS -noprefetch +nolocals NOPREFETCH -nopruning +noprefetch NOPRUNING -nosyncserve +nopruning NOSYNCSERVE +nosyncserve Numba -offchain Offchain +offchain opchaina opchainb -opcm OPCM +opcm Openfort oplabs opnode's @@ -280,96 +277,96 @@ opstack outfile Pausability pcscdpath -pectra Pectra +pectra Pectra's -peerstore Peerstore +peerstore peerstores -permissioned Permissioned -permissionless +permissioned Permissionless +permissionless permissionlessly Perps Peta Pimlico POAP POAPs -pprof PPROF -precommitments +pprof Precommitments +precommitments preconfigured predeploy -predeployed Predeployed -predeploys +predeployed Predeploys +predeploys prefunded -preimage Preimage -preimages +preimage PREIMAGES +preimages preinstall -preinstalls Preinstalls -prestate +preinstalls Prestate +prestate prestates PREVRANDAO -pricebump PRICEBUMP -pricelimit +pricebump PRICELIMIT +pricelimit productionize productionized Protip Proxied -proxyd Proxyd +proxyd Pyth Pyth's QRNG -quicknode Quicknode +quicknode quickstarts rebalancing -regenesis Regenesis +regenesis Reimagine -rejournal REJOURNAL -remotedb +rejournal REMOTEDB +remotedb Reown Reown's replayability replayor reposts reproven -requiredblocks REQUIREDBLOCKS +requiredblocks rollouts -rollups Rollups +rollups Routescan rpckind -rpcprefix RPCPREFIX +rpcprefix rpcs RPGF -runbooks Runbooks +runbooks RWAs safedb Schnorr -sepolia -Sepolia SEPOLIA +Sepolia +sepolia seqnr -sequencerhttp SEQUENCERHTTP +sequencerhttp serv signup SLLV @@ -378,16 +375,16 @@ SLTIU SLTU smartcard snapshotlog -snapsync Snapsync +snapsync Solana Soneium soyboy Spearbit SRAV SRLV -stablecoins Stablecoins +stablecoins statefulset structs subcomponents @@ -396,21 +393,21 @@ subheaders subsecond SUBU Sunnyside -superchain -Superchain SUPERCHAIN +Superchain +superchain Superchain's superchainerc Superlend Superloans Superscan Superseed -supersim Supersim -syncmode +supersim SYNCMODE -synctarget +syncmode SYNCTARGET +synctarget syscalls SYSCON thirdweb @@ -423,8 +420,8 @@ Twei txfeecap txmgr txns -txpool TXPOOL +txpool txproxy txproxyd uncensorable @@ -435,21 +432,21 @@ Unprotect unsubmitted UPNP upstreaming -verkle VERKLE -vhosts +verkle VHOSTS -viem +vhosts Viem -viem's +viem Viem's -vmdebug +viem's VMDEBUG -vmodule +vmdebug VMODULE +vmodule xlarge XORI ZKPs ZKVM -zora Zora +zora