Skip to content

Conversation

@luiz-lvj
Copy link
Collaborator

@luiz-lvj luiz-lvj commented Jan 15, 2026

Updating pragma version to 0.8.30 due to requirements in external libraries.

Summary by CodeRabbit

  • Chores
    • Updated Solidity compiler version from 0.8.28 to 0.8.30 across the entire codebase, including all smart contracts, library files, interface definitions, and test suites. This standardizes the compiler version while preserving all existing functionality, behavior, and public APIs without introducing any breaking changes.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Jan 15, 2026

📝 Walkthrough

Walkthrough

Solidity compiler version bumped from 0.8.28 to 0.8.30 across 31 files including configuration, contracts, interfaces, libraries, provers, and tests. No logic, control flow, or behavioral changes.

Changes

Cohort / File(s) Summary
Configuration
foundry.toml
Updated default compiler version from 0.8.28 to 0.8.30
Core Contracts
src/contracts/BlockHashProverPointer.sol, src/contracts/Broadcaster.sol, src/contracts/Receiver.sol, src/contracts/ZkSyncBroadcaster.sol
Pragma version updated; no logic or interface changes
Interfaces
src/contracts/interfaces/IBlockHashProver.sol, src/contracts/interfaces/IBlockHashProverPointer.sol, src/contracts/interfaces/IBroadcaster.sol, src/contracts/interfaces/IReceiver.sol
Pragma version updated; no function signatures or declarations altered
Libraries & Utilities
src/contracts/libraries/ProverUtils.sol, src/contracts/provers/zksync/libraries/MessageHashing.sol
Pragma version updated; no logic or type changes
Provers
scripts/DeployBroadcaster.s.sol, scripts/DeployZkSyncBroadcaster.s.sol, src/contracts/provers/arbitrum/ChildToParentProver.sol, src/contracts/provers/arbitrum/ParentToChildProver.sol, src/contracts/provers/optimism/ChildToParentProver.sol, src/contracts/provers/optimism/ParentToChildProver.sol, src/contracts/provers/scroll/ParentToChildProver.sol, src/contracts/provers/zksync/ParentToChildProver.sol
Pragma version updated across all prover implementations
Tests
test/BlockHashProverPointer.t.sol, test/Broadcaster.t.sol, test/Receiver.ethereum.t.sol, test/Receiver.t.sol, test/VerifyBroadcastMessageBenchmark.t.sol, test/mocks/ArbitrumOutputMock.sol, test/mocks/MockProver.sol, test/provers/arbitrum/ChildToParentProver.t.sol, test/provers/arbitrum/ParentToChildProver.t.sol, test/provers/optimism/ChildToParentProver.t.sol, test/provers/zksync/ParentChildToProver.t.sol, test/utils/BlockHeaders.sol
Pragma version updated; no test logic or assertions modified

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

Possibly related PRs

Suggested reviewers

  • frangio
  • pepebndc
  • nahimterrazas

Poem

🐰 The compiler hops forward with glee,
From point two-eight to three-zero we flee,
No logic did change, just the version so grand,
Now Solidity's newest will help us expand!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the main change: updating the Solidity pragma version to 0.8.30 across all files in the repository.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.



📜 Recent review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4342e4b and 8db1647.

📒 Files selected for processing (31)
  • foundry.toml
  • scripts/DeployBroadcaster.s.sol
  • scripts/DeployZkSyncBroadcaster.s.sol
  • src/contracts/BlockHashProverPointer.sol
  • src/contracts/Broadcaster.sol
  • src/contracts/Receiver.sol
  • src/contracts/ZkSyncBroadcaster.sol
  • src/contracts/interfaces/IBlockHashProver.sol
  • src/contracts/interfaces/IBlockHashProverPointer.sol
  • src/contracts/interfaces/IBroadcaster.sol
  • src/contracts/interfaces/IReceiver.sol
  • src/contracts/libraries/ProverUtils.sol
  • src/contracts/provers/arbitrum/ChildToParentProver.sol
  • src/contracts/provers/arbitrum/ParentToChildProver.sol
  • src/contracts/provers/optimism/ChildToParentProver.sol
  • src/contracts/provers/optimism/ParentToChildProver.sol
  • src/contracts/provers/scroll/ParentToChildProver.sol
  • src/contracts/provers/zksync/ParentToChildProver.sol
  • src/contracts/provers/zksync/libraries/MessageHashing.sol
  • test/BlockHashProverPointer.t.sol
  • test/Broadcaster.t.sol
  • test/Receiver.ethereum.t.sol
  • test/Receiver.t.sol
  • test/VerifyBroadcastMessageBenchmark.t.sol
  • test/mocks/ArbitrumOutputMock.sol
  • test/mocks/MockProver.sol
  • test/provers/arbitrum/ChildToParentProver.t.sol
  • test/provers/arbitrum/ParentToChildProver.t.sol
  • test/provers/optimism/ChildToParentProver.t.sol
  • test/provers/zksync/ParentChildToProver.t.sol
  • test/utils/BlockHeaders.sol
🔇 Additional comments (31)
src/contracts/BlockHashProverPointer.sol (1)

2-2: LGTM! Valid pragma version update.

Solidity 0.8.30 is a maintenance release that sets the default EVM Version to prague for the Pectra upgrade. No breaking changes from 0.8.28.

src/contracts/provers/arbitrum/ChildToParentProver.sol (1)

2-2: LGTM!

Pragma version bump to 0.8.30 with no functional changes to the prover logic.

test/provers/arbitrum/ChildToParentProver.t.sol (1)

2-2: LGTM!

Test file pragma aligns with the contract's 0.8.30 version.

src/contracts/ZkSyncBroadcaster.sol (1)

2-2: LGTM!

Pragma version bump to 0.8.30 is appropriate. The contract logic and OpenZeppelin StorageSlot usage remain unchanged.

test/provers/optimism/ChildToParentProver.t.sol (1)

2-2: LGTM!

Test file pragma aligns with the contract's 0.8.30 version.

src/contracts/interfaces/IBroadcaster.sol (1)

2-2: LGTM!

Simple interface file with no logic changes. The pragma bump is consistent with the rest of the codebase.

src/contracts/provers/optimism/ChildToParentProver.sol (1)

2-2: LGTM!

The pragma version update is consistent with the PR-wide compiler upgrade. Contract logic and predeploy constants remain unchanged.

test/VerifyBroadcastMessageBenchmark.t.sol (1)

2-2: LGTM!

The pragma version update is consistent with the rest of the codebase. Consider re-running gas benchmarks after the version bump to verify no unexpected gas cost changes from the new compiler.

src/contracts/provers/scroll/ParentToChildProver.sol (1)

2-2: Pragma version update is correct.

The bump to Solidity 0.8.30 is a maintenance release with no breaking changes—only a default EVM version adjustment to prague and minor fixes. The contract logic is unaffected.

src/contracts/provers/arbitrum/ParentToChildProver.sol (1)

2-2: LGTM!

The pragma version update to 0.8.30 is straightforward with no logic changes. OpenZeppelin Contracts v5.5.0 (stable) was released October 31, 2025, so no further action is needed regarding the library version.

test/BlockHashProverPointer.t.sol (1)

2-2: LGTM - Pragma version bump to 0.8.30.

The version update aligns with the PR-wide compiler upgrade to accommodate external library requirements.

test/Receiver.t.sol (1)

2-2: LGTM - Pragma version bump to 0.8.30.

The version update is consistent with the coordinated compiler upgrade across the codebase.

src/contracts/provers/zksync/libraries/MessageHashing.sol (1)

3-3: LGTM - Pragma version bump to 0.8.30.

The version update is consistent with the PR-wide compiler upgrade. This library is adapted from matter-labs/era-contracts, and the logic remains unchanged.

test/provers/zksync/ParentChildToProver.t.sol (1)

2-2: LGTM - Pragma version bump to 0.8.30.

The version update aligns with the coordinated compiler upgrade across the codebase.

src/contracts/provers/optimism/ParentToChildProver.sol (1)

2-2: Pragma version correctly updated to 0.8.30.

The change aligns with the project's foundry configuration (solc = "0.8.30"). OpenZeppelin Contracts 5.5.0-rc.0 is compatible with this version. Note that @eth-optimism/contracts (v0.6.0) is an archived package—verify through testing that Lib_SecureMerkleTrie and Lib_RLPReader function correctly with 0.8.30, as the package was not officially updated for this compiler version.

test/provers/arbitrum/ParentToChildProver.t.sol (1)

2-2: Pragma version update is consistent with the repository-wide change.

Test file updated to 0.8.30 with no changes to test logic or assertions.

test/utils/BlockHeaders.sol (1)

2-2: Pragma version update is consistent.

Library structs and encoding functions remain unchanged.

test/mocks/ArbitrumOutputMock.sol (1)

2-2: Pragma version update is consistent.

Mock contract implementation remains unchanged and correctly implements the IOutbox interface.

test/Receiver.ethereum.t.sol (1)

2-2: Pragma version update is consistent.

Test file updated to 0.8.30 with no changes to test logic. Cross-chain verification tests remain intact.

src/contracts/interfaces/IBlockHashProver.sol (1)

2-2: Pragma version update is safe.

The version bump from 0.8.28 to 0.8.30 is a maintenance release with no breaking language changes. The interface definition and all four functions (verifyTargetBlockHash, getTargetBlockHash, verifyStorageSlot, version) remain unchanged.

src/contracts/Receiver.sol (1)

2-2: LGTM!

The pragma update is consistent with the repo-wide version bump. The contract's features (mappings, custom errors, loops, external calls) remain fully compatible.

src/contracts/interfaces/IReceiver.sol (1)

2-2: LGTM!

Interface definition is straightforward and compatible with the new version.

src/contracts/Broadcaster.sol (1)

2-2: LGTM!

The pragma update maintains compatibility with OpenZeppelin's StorageSlot utility and all existing contract features.

test/Broadcaster.t.sol (1)

2-2: LGTM!

Test file pragma correctly aligned with the contract under test.

src/contracts/provers/zksync/ParentToChildProver.sol (1)

2-2: Pragma version update to 0.8.30 is valid.

Solidity 0.8.30 is a maintenance release with no language-level breaking changes. All contract features (custom errors, immutables, view/pure functions) remain fully supported. Note that the default EVM version changed from "cancun" to "prague" in this release—verify your compiler configuration if gas behavior is critical.

src/contracts/interfaces/IBlockHashProverPointer.sol (1)

2-2: LGTM!

Straightforward pragma version bump with no changes to the interface definition.

test/mocks/MockProver.sol (1)

2-2: LGTM!

Pragma version update for test mock is consistent with the codebase-wide upgrade.

scripts/DeployBroadcaster.s.sol (1)

2-2: LGTM!

Pragma version update is consistent with the repository-wide upgrade to 0.8.30.

src/contracts/libraries/ProverUtils.sol (1)

2-2: LGTM!

The pragma update to 0.8.30 aligns with the stated goal of meeting external library requirements. This file imports from @eth-optimism/contracts and @openzeppelin/contracts, so this version bump likely ensures compatibility with those dependencies.

scripts/DeployZkSyncBroadcaster.s.sol (1)

2-2: Pragma version update is correct and properly configured.

The Solidity 0.8.30 upgrade aligns with the build configuration in foundry.toml and is a maintenance release with no language-level breaking changes. The project's dependencies—@openzeppelin/contracts (5.5.0-rc.0) and @eth-optimism/contracts (^0.6.0)—are compatible with this compiler version.

Note: Solidity 0.8.30 changes the default EVM target to prague, which affects gas semantics. Ensure existing gas benchmarks and tests account for calldata cost changes from the Pectra network upgrade.

foundry.toml (1)

5-5: Version bump to Solidity 0.8.30 is approved.

Solidity v0.8.30 changes the default EVM version from cancun to prague. Since evm_version is not explicitly set in this config, the compiler will now default to prague. Given that this project deploys to multiple chains (Arbitrum, Ethereum, Optimism, Taiko, Linea, Scroll), verify that all target chains support Prague opcodes, or explicitly set evm_version = "cancun" in foundry.toml if needed.

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@luiz-lvj luiz-lvj merged commit cc9b388 into main Jan 16, 2026
3 checks passed
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