Karlb/celo rebase 17 preview#427
Closed
karlb wants to merge 80 commits intokarlb/celo-rebase-17-upstreamfrom
Closed
Karlb/celo rebase 17 preview#427karlb wants to merge 80 commits intokarlb/celo-rebase-17-upstreamfrom
karlb wants to merge 80 commits intokarlb/celo-rebase-17-upstreamfrom
Conversation
d15f31e to
e83c290
Compare
Adding funding.json file required to apply for retropgf
github: use step-security replacement for tj-actions/changed-files
* Add script to update `celo-org/op-geth` dependencies Signed-off-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com> * Add github action for update-geth script Signed-off-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com> * Use inline geth base-ref Signed-off-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com> * Discard automatic fields Signed-off-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com> * token perms Signed-off-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com> * Use read-only GCP SA Signed-off-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com> * Better parameter handling in update-geth action Signed-off-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com> * Remove `update-celo-geth` cmd from justfile --------- Signed-off-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com> Co-authored-by: alvarof2 <fernandez.f.alvaro@gmail.com> github: improve update-geth.sh * mark it as executable * allow running on both MacOS and linux (GNU vs BSD tool differences) * terminate on errors * less strict go.mod matching to allow applying it directly to upstream github: Fix update-geth.sh (#304) The script was not substituting the go.mod file and the Dockerfile since the regexes were not matching. The regex for the Dockerfile contained '@sha256:' which perl was interpreting as a global symbol, in order to interpret it literally we needed to escape the '@'. The regex for the go.mod file contained an extra space before the arrow 'go-ethereum .* => ', in a tidied go.mod file there is one space between the package name and the arrow '=>'. Also adds failure output so that it's easier to debug where this is going wrong. --------- Co-authored-by: Karl Bartel <karl@karl.berlin> Co-authored-by: Paul Lange <palango@users.noreply.github.com> github: The substitution was failing in the docker file since (#309) The substitution \1 and the beginning of the image hash together created \150 which perl interprets as the octal character code for h. To prevent this we need to use the \${1} notation to reference captured groups. github: Change base-branch for update-geth workflow github: Add `celo-org/op-geth` dependencies update script and gh-action (#263) * Add script to update `celo-org/op-geth` dependencies Signed-off-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com> * Add github action for update-geth script Signed-off-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com> * Use inline geth base-ref Signed-off-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com> * Discard automatic fields Signed-off-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com> * token perms Signed-off-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com> * Use read-only GCP SA Signed-off-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com> * Better parameter handling in update-geth action Signed-off-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com> * Remove `update-celo-geth` cmd from justfile --------- Signed-off-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com> Co-authored-by: alvarof2 <fernandez.f.alvaro@gmail.com> github: Update update geth approach (#319) Removed the old script because it referenced ops-bedrock which has been removed. Added a copy of the op-geth provided update script, decided on a copy to avoid conflicts. Updated the update-geth workflow to reference the new script github: Change update-geth base-branch to 'celo-rebase-13' (#382) github: Change update-geth base-branch to 'celo-rebase-14'
Setting `open-pull-requests-limit: 0` prevent version updates but should keep the security scans and updates according to https://docs.github.com/en/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates#overriding-the-default-behavior-with-a-configuration-file > If you only require security updates and want to exclude version > updates, you can set open-pull-requests-limit to 0 in order to prevent > version updates for a given package-ecosystem.
…ckchain-public registry (#395) * Build op-node using docker-bake and push to devopsre/celo-blockchain-public registry * Set-Tags
e83c290 to
3e68010
Compare
The op config set this to a private URL that we couldn't access, instead we now set this to now be the MAINNET_RPC_URL which is defined as a project env var.
Currently we set this to celo-rebase-15-upstream, but once we've constructed celo-rebase-15 we will want to set the base branch to that.
This cheatcode is used to store the Celo L2 predeploy addresses in a JSON file when run with forge. Inside TestEndToEndApply/initial_chain , the same code is called but we don't care for the generated JSON file. So just returning `nil` makes the test work without any disadvantages.
Remove common/interfaces/IExchange.sol (duplicate) We keep the one in the `mento` directory. Remove common/libraries/ReentrancyGuard.sol (duplicate) Directly use the original from OpenZeppelin. contracts: Skip Celo contracts in test_cannotReinitialize_succeeds
Add console2 import in L2Genesis.s.sol
Until we fix the errors caused by enabling it.
It needs a kona version and I'm not clear what this is, but we don't actually use op-challenger so simply disabling it seems to be a good solution.
* Fix TestFees acceptance test * Skip TestBatcherFullChannelsAfterDowntime, as upstream does This test is also skipped upstream (01a4115) due to a nonce tracking race condition in the async event system. * Increase retry attempts to make acceptance tests likelier to pass * Hardcode Cel2Time to 0 op-geth requires all pre-Cel2 blocks to come from migrated Celo L1 chaindata. If Cel2 is after genesis, op-geth expects blocks between genesis and Cel2 to already exist, causing test failures. * Skip TestSyncTesterHFS acceptance tests, not applicable to Celo These tests sync across hard-fork activation boundaries on op-sepolia. Celo activates all forks through Granite at genesis (Cel2Time=0), so there are no fork boundaries to cross. The Holocene/Isthmus tests also target op-sepolia endpoints and block numbers, not Celo infrastructure. We could keep running the test against the OP testnet, but we're lacking the respective node RPCs to do that cheaply and reliably. * Skip flashblocks acceptance tests, not applicable to Celo Skip both flashblocks tests since Celo doesn't use flashblocks.
…num to da-server (#45) * feat(altda-client): pass l1_inclusion_block_number as query param to da server This is used to perform punctuality check on EigenDA, but is generic and should be used by all da layers for the same purpose. * feat(altda): drop invalid certs Defined generic protocol where da-server will return a 418 (TEAPOT) error when a cert is invalid, along with the reason (250 bytes) in the body. The 418 error is transformed into an internal golang InvalidCommitmentError which when received by the derivation pipeline, causes it to skip the commitment and move forward. * chore(daclient): use uint64 for blocknum directly instead of L1BlockRef struct The struct was confusing to use in tests because it wasnt sure only the .Number field of it was used, so made implementers unsure whether they needed to populate the whole struct. Since we only used the .Number field, I opted to just take a uint64 directly as argument to GetInput. * style(daclient): use MaxBytesReader Use MaxBytesReader and document why we restrict error body to 1000 characters (upped from 250 previously): to prevent DDoS
) feat: InvalidCommitmentError contains status code This commit goes hand-in-hand with Layr-Labs/eigenda-proxy#406, as it now parses the StatusCodes that are returned during 418 TEAPOT errors by proxy.
feat(altda): implement all teapot statuscodes This should (hopefully!) be the last PR changing the teapot error handling. I think (??) we've finally nailed it with the recent spec: https://github.com/Layr-Labs/eigenda/blob/f4ef5cd55633d70bed0d54416c2d253684f0639c/docs/spec/src/integration/spec/6-secure-integration.md#derivation-process This PR thus implements handling of the 4 types of TEAPOT errors possible. Still need to update proxy to return those errors.
* op-node/derive: Gate BPO activation in L1InfoDeposit per L2 chain Disable BPO/Osaka blob fee formula for Celo L2 chains (mainnet, sepolia, chaos) until Jovian hardfork, matching the gating in celo-kona PR #121. For non-Celo chains, BPO remains enabled by default (preserving upstream behavior). * Update op-geth Updates op-geth to a version that specifies CeloChaosChainID * Fix TestBlobBaseFeeFromSepolia: use stripBPOActivations and inline header data The test was failing because it computed BlobBaseFee using the full SepoliaChainConfig (which includes BPO activation times), but the expected value was the Prague-era blob fee from the actual Celo Sepolia L2 block (derived before BPO was known). Fix by: - Using stripBPOActivations on the config, which is exactly what the production code does for Celo chains - Inlining the header data (ExcessBlobGas, Time) instead of making a live RPC call, so the test runs in CI's -short mode - Removing unused context and ethclient imports * ci: Skip OP mainnet upgrade tests not relevant to Celo The contracts-bedrock-tests-upgrade and coverage-upgrade tests fork OP mainnet to test OP-specific upgrade paths. These fail on the Celo fork because ForkLive.s.sol is out of sync with upstream (the DelayedWETHProxy deployment lookup fails). Since these tests are not relevant to Celo chains, skip them: - Comment out contracts-bedrock-tests-upgrade workflow jobs - Use coverage-lcov instead of coverage-lcov-all (which includes upgrade coverage) --------- Co-authored-by: Karl Bartel <karl.bartel@clabs.co> Refactor bpo hardfork gating (#420) The previous implementation was broken since it was using block numbers to determine if jovian was active, but in fact jovian is activated by timestamp.
It does not have Celo support yet, so skip the failing e2e tests that rely on op-reth and kona-node.
The Rust RollupConfig uses deny_unknown_fields and doesn't have the Celo-specific cel2_time field, causing kona-node and kona-host to crash when parsing the rollup config JSON. Skip these tests until celo-reth is integrated.
3e68010 to
eff39e1
Compare
The fault proof program cannot parse the RollupConfig with the Celo-specific cel2_time field, causing these tests to timeout. Skip until celo-reth is integrated.
palango
reviewed
Apr 7, 2026
| description: "Version of the cache" | ||
| type: string | ||
| default: "15" | ||
| default: &rust-cache-version "16" |
Author
There was a problem hiding this comment.
The cache for version 15 had the wrong content, so I had to bump the cache version. This is not tied to the rebase number.
palango
reviewed
Apr 7, 2026
| description: "Whether to save the cache at the end of the build" | ||
| type: boolean | ||
| default: true | ||
| persist_to_workspace: |
Author
There was a problem hiding this comment.
This is actually from upstream, I just forgot to move karlb/celo-rebase-17-upstream after the last rebase to a minor update. Should be right now.
palango
reviewed
Apr 7, 2026
| @@ -0,0 +1,99 @@ | |||
| name: Alfajores-Holesky Deploy Celo4 L1 Contracts | |||
There was a problem hiding this comment.
Not sure if this is still required, if it deploys to sepolia, we should update the comment.
Author
There was a problem hiding this comment.
With L1_RPC_URL: 'https://ethereum-holesky-rpc.publicnode.com' it can't deploy to sepolia. I assume it is outdated, but just preserved it during the rebased since I didn't know the context.
palango
reviewed
Apr 7, 2026
| @@ -0,0 +1,117 @@ | |||
| name: Alfajores-Holesky Deploy OP-Stack L1 Contracts | |||
Co-authored-by: Paul Lange <palango@users.noreply.github.com>
Consolidates op-geth bumps from celo-rebase-16: - d3383ca (chore: update op-geth) - 16a22f4 (chore: update op-geth (#429)) - a590fbd (chore: update op-geth (#432), go.mod/go.sum only) Updates to an op-geth version that includes both Karst support (from newer upstream) and Celo superchain registry with Cel2Time in HardforkConfig. Note: build is broken until the next commit removes applyCeloHardforks.
Port of 958f0ce (Use config from celo's fork of superchain registry (#426)) and e3d03df (Update to an op-geth with superchain config lacking the gingerbread block (#428)). The op-geth now embeds valid celo superchain config from our fork of the superchain registry, so we can remove the hardcoded config overrides in applyCeloHardforks(). The Cel2Time field is now read from the superchain registry's HardforkConfig.
Cherry-pick of a590fbd, go.mod/go.sum conflicts resolved (op-geth already bumped in prior commit). Adds ProtocolVersionsProxy override in op-deployer to use addresses from Celo's superchain registry, and updates chaincfg test addresses to match.
Span batch encoding/decoding failed on Celo CIP-64 transactions (type 0x7b) because the tx type switch statements only handled legacy, access list, dynamic fee, and set code types. Add spanBatchCeloDynamicFeeTxV2Data to carry the FeeCurrency field through the encode/decode round trip, and wire it into all 5 switch sites: newSpanBatchTx, decodeTyped, convertToFullTx, recoverV, and convertVToYParity.
Author
|
It's the default branch now. |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Based on op-node/v1.16.8
CI failures
The following CI jobs must fail until celo-rebase-17 is pushed since they reference that branch:
Manual changes after rebase
karlb/circleci-utils@1.0.26orb, which uses version 1.0.24, but I had to increase the version number due to a bad immutable deployment. We don't have any changes to the orb compared to OP, but their orb is not public. See also https://clabsco.slack.com/archives/C05G2P1LJ1L/p1772553632130619.LLM summary of merge conflicts: