op-node: Delay BPO hardforks until Jovian for Celo chains#414
op-node: Delay BPO hardforks until Jovian for Celo chains#414karlb wants to merge 1 commit intopiersy/celo-rebase-16from
Conversation
When Ethereum L1 activates Fusaka, the BPO blob schedule changes the blob base fee calculation. For Celo chains, we missed that and now have to keep using the Prague blob parameters until Jovian activates on L2. This matches celo-org/celo-kona#121. Closes celo-org/celo-blockchain-planning#1301
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## piersy/celo-rebase-16 #414 +/- ##
=========================================================
+ Coverage 60.83% 66.42% +5.59%
=========================================================
Files 214 55 -159
Lines 12452 4030 -8422
=========================================================
- Hits 7575 2677 -4898
+ Misses 4733 1209 -3524
Partials 144 144
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
|
I don't think the CI failures relate to the changes in the PR. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
This is the final PR Bugbot will review for you during this billing cycle
Your free Bugbot reviews will reset on March 11
Details
Your team is on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle for each member of your team.
To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.
| // until Jovian activates, to gate BPO activation on Jovian. | ||
| if needsFusakaBlobScheduleFix(rollupCfg.L2ChainID) && !rollupCfg.IsJovian(l2Timestamp) { | ||
| l1BlockInfo.BlobBaseFee = calcBlobFeePrague(*block.ExcessBlobGas()) | ||
| } |
There was a problem hiding this comment.
Unchecked blob gas pointer dereference
Medium Severity
The new Celo branch dereferences *block.ExcessBlobGas() without checking for nil. eth.BlockInfo.ExcessBlobGas() is nil for pre-4844 L1 blocks, so this path can panic inside L1InfoDeposit instead of following the existing fallback behavior in op-node/rollup/derive/l1_block_info.go.
There was a problem hiding this comment.
All Celo chains only build on post-Cancun L1 blocks, so this will always be true. I could still add an additional assertion here. I initially skipped it to keep this workaround code as small as possible, but I don't mind either way.
|
See also #417 |
|
Duplicate of #417 |


When Ethereum L1 activates Fusaka, the BPO blob schedule changes the blob base fee calculation. For Celo chains, we missed that and now have to keep using the Prague blob parameters until Jovian activates on L2.
This matches celo-org/celo-kona#121.
Closes https://github.com/celo-org/celo-blockchain-planning/issues/1301
Note
Medium Risk
Changes L1 attribute derivation for
BlobBaseFeeon specific networks, which can affect fee accounting and block validity if miscomputed, but is narrowly gated to Celo chain IDs and pre-Jovian timing.Overview
Adjusts
L1InfoDepositblob base fee computation for Ecotone-era blocks on Celo L2s to keep using Prague blob schedule parameters until Jovian activates, avoiding premature Fusaka/BPO fee parameter changes.Adds chain-ID gating via
needsFusakaBlobScheduleFix(Celo mainnet/sepolia/chaos) and a helpercalcBlobFeePrague(usingeip4844.CalcBlobFeewith a Prague-configured dummy chain config) to overrideBlobBaseFeewhen applicable.Written by Cursor Bugbot for commit d477277. This will update automatically on new commits. Configure here.