Skip to content

op-node: Delay BPO hardforks until Jovian for Celo chains#414

Closed
karlb wants to merge 1 commit intopiersy/celo-rebase-16from
karlb/fusaka-bpo-fix
Closed

op-node: Delay BPO hardforks until Jovian for Celo chains#414
karlb wants to merge 1 commit intopiersy/celo-rebase-16from
karlb/fusaka-bpo-fix

Conversation

@karlb
Copy link
Copy Markdown

@karlb karlb commented Feb 16, 2026

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 BlobBaseFee on 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 L1InfoDeposit blob 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 helper calcBlobFeePrague (using eip4844.CalcBlobFee with a Prague-configured dummy chain config) to override BlobBaseFee when applicable.

Written by Cursor Bugbot for commit d477277. This will update automatically on new commits. Configure here.

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-commenter
Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 66.42%. Comparing base (7bfb38a) to head (d477277).

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              
Flag Coverage Δ
cannon-go-tests-64 66.42% <ø> (ø)
contracts-bedrock-tests ?

Flags with carried forward coverage won't be shown. Click here to find out more.
see 159 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@karlb karlb marked this pull request as ready for review February 16, 2026 11:51
@karlb
Copy link
Copy Markdown
Author

karlb commented Feb 16, 2026

I don't think the CI failures relate to the changes in the PR.

Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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())
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Fix in Cursor Fix in Web

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@palango
Copy link
Copy Markdown

palango commented Feb 17, 2026

See also #417

@karlb
Copy link
Copy Markdown
Author

karlb commented Feb 17, 2026

Duplicate of #417

@karlb karlb marked this as a duplicate of #417 Feb 17, 2026
@karlb karlb closed this Feb 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants