Skip to content

Conversation

@XinyuCRO
Copy link
Contributor

@XinyuCRO XinyuCRO commented Jun 5, 2025

Related PR

git history being reset due to missing signature, too many history hard to rebase, the full history is here: https://github.com/XinyuCRO/cronos/commits/feat/geth-1.15-backup/

Summary by CodeRabbit

  • New Features

    • Ethereum genesis updated for upcoming network upgrades; governance adds expedited voting.
  • Bug Fixes

    • Adjusted transaction trace expectations in integration tests for failed transfers.
    • Improved bloom filter generation for transaction receipts and logs.
  • Chores

    • Bumped Go to 1.23 and refreshed many dependencies (including Ethereum client updates and replace pins).
    • Development/test tooling and CI actions updated for compatibility.
    • Ethereum client startup switched to dev mode with expanded debug APIs.
    • Added a configurable query gas limit for EVM queries.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jun 5, 2025

Walkthrough

Imports moved from ethermint/app to evmd, EvmKeeper is initialized with a query gas limit, large dependency and Nix/tooling upgrades redirect go-ethereum/ethermint to forks, EVM/tracing and bloom APIs updated, precompiles and tests adjusted, and scripts/genesis/devnet configs modified.

Changes

Cohort / File(s) Change Summary
Dependency manifests
go.mod, gomod2nix.toml
Large dependency refresh: Cosmos SDK family bumps, many indirect upgrades/additions, new replace directives redirecting go-ethereum/ethermint to forks, hash/lock updates.
Nix & Go toolchain
nix/default.nix, nix/go-ethereum.nix, nix/build_overlay.nix, integration_tests/shell.nix
Bump Go 1.22→1.23 (overlay and builder), switch go-ethereum source to crypto-org-chain commit with updated rev/shas/vendor, add pkgs.go to shell inputs and use mkdir -p.
Application imports & construction
app/app.go, app/sim_test.go, app/test_helpers.go
Change Ethermint imports to github.com/evmos/ethermint/evmd (evmd/ante) and pass server.FlagQueryGasLimit (from appOpts) into EvmKeeper constructor.
Changelog
CHANGELOG.md
Add unreleased entry noting go-ethereum update (PR #1807).
Genesis & devnet scripts
scripts/cronos-devnet.yaml, scripts/geth-genesis.json, scripts/start-geth
Rename consensus_paramsconsensus.params, add expedited_voting_period; add cancunTime/pragueTime/terminalTotalDifficulty, set genesis difficulty to 0; switch geth run to --dev --dev.period 1, enable debug API, disable IPC.
Integration tests
integration_tests/test_basic.py
Update expected debug_traceTransaction output for failed tx: "failed": true, "returnValue": "0x".
EVM keeper & bloom/tracing changes
x/cronos/keeper/evm.go, x/cronos/keeper/evm_hooks.go, x/cronos/rpc/api.go, x/cronos/keeper/grpc_query.go
Replace SkipAccountChecks with SkipNonceChecks/SkipFromEOACheck in core.Message; switch bloom creation to ethtypes.CreateBloom(&ethtypes.Receipt{Logs: ...}); update IsShanghai call to accept (height, time).
Precompiles & relayer
x/cronos/keeper/precompiles/bank.go, x/cronos/keeper/precompiles/ica.go, x/cronos/keeper/precompiles/relayer.go
Use contract.Caller() instead of contract.CallerAddress; adjust core.IntrinsicGas args (insert nil) and use contract.Caller() for relayer caller assignment.
Types / interface
x/cronos/types/interfaces.go
Change EvmKeeper.ApplyMessage tracer parameter type from vm.EVMLogger to *tracing.Hooks.
Event/topic tests
x/cronos/keeper/evmhandlers_test.go
Replace sender.Hash() with common.BytesToHash(sender.Bytes()) when building topics in tests.
CI/workflows & misc
.github/workflows/*, scripts/*, integration_tests/shell.nix
Update cachix/install-nix-action version across workflows; minor shell hook and script flag tweaks for developer environments.

Sequence Diagram(s)

sequenceDiagram
    actor User
    participant App as Cronos App
    participant Evmd as Evmd (ethermint)
    participant EVM as go-ethereum
    participant RPC as Cronos RPC

    User->>App: submit tx / query
    App->>Evmd: construct core.Message (SkipNonceChecks/SkipFromEOACheck), include queryGasLimit
    Evmd->>EVM: ApplyMessage(..., tracer:*tracing.Hooks, commit)
    EVM-->>Evmd: execution result, logs, receipts
    Evmd->>Evmd: CreateBloom(&Receipt{Logs: ...})
    Evmd->>RPC: return receipts / traces
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~35 minutes

Possibly related PRs

Suggested labels

ci

Suggested reviewers

  • devashishdxt
  • thomas-nguy
  • leejw51crypto

Poem

"I hopped through imports and hashes bright,
moved evmd burrows into the light.
Bloomed the logs and hooked the trace,
bumped Go and Nix to speed the race.
🐰 Build, test, and sprint — a rabbit's delight!"

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@XinyuCRO XinyuCRO changed the title feat: geth v1.15 upgrade Problem: geth 1.15 is not integrated Jun 5, 2025
@codecov
Copy link

codecov bot commented Jun 5, 2025

Codecov Report

❌ Patch coverage is 52.17391% with 11 lines in your changes missing coverage. Please review.
✅ Project coverage is 35.79%. Comparing base (a3c2f70) to head (890131d).
⚠️ Report is 92 commits behind head on main.

Files with missing lines Patch % Lines
x/cronos/rpc/api.go 0.00% 3 Missing ⚠️
x/cronos/keeper/evm_hooks.go 0.00% 2 Missing ⚠️
x/cronos/keeper/precompiles/bank.go 0.00% 2 Missing ⚠️
x/cronos/keeper/precompiles/relayer.go 0.00% 2 Missing ⚠️
x/cronos/keeper/grpc_query.go 0.00% 1 Missing ⚠️
x/cronos/keeper/precompiles/ica.go 0.00% 1 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##             main    #1807       +/-   ##
===========================================
+ Coverage   16.87%   35.79%   +18.91%     
===========================================
  Files          72      127       +55     
  Lines        6163    11812     +5649     
===========================================
+ Hits         1040     4228     +3188     
- Misses       5000     7161     +2161     
- Partials      123      423      +300     
Files with missing lines Coverage Δ
x/cronos/keeper/evm.go 53.95% <100.00%> (+53.95%) ⬆️
x/cronos/keeper/grpc_query.go 0.00% <0.00%> (ø)
x/cronos/keeper/precompiles/ica.go 14.55% <0.00%> (+6.96%) ⬆️
x/cronos/keeper/evm_hooks.go 40.00% <0.00%> (+21.81%) ⬆️
x/cronos/keeper/precompiles/bank.go 8.02% <0.00%> (ø)
x/cronos/keeper/precompiles/relayer.go 33.54% <0.00%> (+10.83%) ⬆️
x/cronos/rpc/api.go 0.36% <0.00%> (ø)

... and 69 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.

@socket-security
Copy link

socket-security bot commented Jun 19, 2025

All alerts resolved. Learn more about Socket for GitHub.

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

View full report

@thomas-nguy thomas-nguy changed the title Problem: geth 1.15 is not integrated feat: geth 1.15 is not integrated Jun 26, 2025
@XinyuCRO XinyuCRO changed the title feat: geth 1.15 is not integrated feat: geth v1.15 integration Jul 17, 2025
@XinyuCRO XinyuCRO marked this pull request as ready for review July 31, 2025 03:25
@XinyuCRO XinyuCRO requested a review from a team as a code owner July 31, 2025 03:25
@XinyuCRO XinyuCRO requested review from JayT106 and thomas-nguy and removed request for a team July 31, 2025 03:25
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🧹 Nitpick comments (1)
nix/go-ethereum.nix (1)

22-22: Consider using semantic versioning instead of commit hash.

Using a commit hash as the version makes it difficult to understand what actual geth version this represents and complicates dependency tracking.

Consider tagging the fork with a semantic version that clearly indicates the base geth version and any custom modifications (e.g., "1.15.0-cronos-estimategas").

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c3b7449 and c4351a6.

⛔ Files ignored due to path filters (1)
  • go.sum is excluded by !**/*.sum
📒 Files selected for processing (22)
  • CHANGELOG.md (1 hunks)
  • app/app.go (1 hunks)
  • app/sim_test.go (1 hunks)
  • app/test_helpers.go (1 hunks)
  • go.mod (12 hunks)
  • gomod2nix.toml (23 hunks)
  • integration_tests/shell.nix (2 hunks)
  • integration_tests/test_basic.py (1 hunks)
  • nix/default.nix (1 hunks)
  • nix/go-ethereum.nix (2 hunks)
  • scripts/cronos-devnet.yaml (2 hunks)
  • scripts/geth-genesis.json (2 hunks)
  • scripts/start-geth (1 hunks)
  • x/cronos/keeper/evm.go (1 hunks)
  • x/cronos/keeper/evm_hooks.go (1 hunks)
  • x/cronos/keeper/evmhandlers_test.go (3 hunks)
  • x/cronos/keeper/grpc_query.go (1 hunks)
  • x/cronos/keeper/precompiles/bank.go (2 hunks)
  • x/cronos/keeper/precompiles/ica.go (1 hunks)
  • x/cronos/keeper/precompiles/relayer.go (2 hunks)
  • x/cronos/rpc/api.go (3 hunks)
  • x/cronos/types/interfaces.go (2 hunks)
🧰 Additional context used
🧠 Learnings (3)
x/cronos/keeper/precompiles/ica.go (2)

Learnt from: mmsqe
PR: #1247
File: app/app.go:536-546
Timestamp: 2024-07-27T19:02:34.919Z
Learning: evmkeeper.CustomContractFn is a type alias for a function that returns a vm.PrecompiledContract.

Learnt from: mmsqe
PR: #1247
File: app/app.go:536-546
Timestamp: 2024-10-12T22:09:46.096Z
Learning: evmkeeper.CustomContractFn is a type alias for a function that returns a vm.PrecompiledContract.

x/cronos/keeper/precompiles/bank.go (2)

Learnt from: mmsqe
PR: #1247
File: app/app.go:536-546
Timestamp: 2024-10-12T22:09:46.096Z
Learning: evmkeeper.CustomContractFn is a type alias for a function that returns a vm.PrecompiledContract.

Learnt from: mmsqe
PR: #1247
File: app/app.go:536-546
Timestamp: 2024-07-27T19:02:34.919Z
Learning: evmkeeper.CustomContractFn is a type alias for a function that returns a vm.PrecompiledContract.

gomod2nix.toml (2)

Learnt from: yihuang
PR: #1618
File: memiavl/db_test.go:193-194
Timestamp: 2024-10-08T19:00:42.142Z
Learning: In Go version 1.21 and later, the max function is defined and available.

Learnt from: yihuang
PR: #1618
File: memiavl/db_test.go:193-194
Timestamp: 2024-10-04T16:08:45.617Z
Learning: In Go version 1.21 and later, the max function is defined and available.

🧬 Code Graph Analysis (3)
app/sim_test.go (1)
x/cronos/keeper/evm_test.go (1)
  • TestSourceTokenConversion (74-124)
x/cronos/keeper/precompiles/bank.go (2)
x/cronos/keeper/keeper_test.go (1)
  • TestDenomContractMap (144-204)
x/cronos/keeper/keeper.go (3)
  • SetAutoContractForDenom (191-195)
  • SetExternalContractForDenom (133-149)
  • GetContractByDenom (113-119)
scripts/start-geth (1)
integration_tests/network.py (1)
  • function (106-138)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (18)
  • GitHub Check: Run golangci-lint
  • GitHub Check: unittest
  • GitHub Check: build (macos-latest)
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: gomod2nix
  • GitHub Check: build (macos-14)
  • GitHub Check: integration_tests (gas)
  • GitHub Check: integration_tests (gov)
  • GitHub Check: integration_tests (slow)
  • GitHub Check: integration_tests (ibc_timeout)
  • GitHub Check: integration_tests (upgrade)
  • GitHub Check: integration_tests (ica)
  • GitHub Check: integration_tests (unmarked)
  • GitHub Check: integration_tests (ibc_rly_gas)
  • GitHub Check: integration_tests (ibc_update_client)
  • GitHub Check: integration_tests (ibc)
  • GitHub Check: integration_tests (ibc_rly_evm)
  • GitHub Check: Analyze (go)
🔇 Additional comments (33)
scripts/cronos-devnet.yaml (2)

32-36: LGTM! Consensus parameters structure updated correctly.

The migration from flat consensus_params to nested consensus.params structure aligns with Cosmos SDK upgrades. Block parameters are preserved correctly.


48-48: LGTM! Governance parameter enhancement.

Addition of expedited_voting_period parameter aligns with governance module improvements in newer Cosmos SDK versions.

app/test_helpers.go (1)

19-19: LGTM! Import path updated correctly.

The import path change from "github.com/evmos/ethermint/app" to "github.com/evmos/ethermint/evmd" reflects the ethermint module reorganization and is properly aliased to maintain compatibility.

app/sim_test.go (1)

18-18: LGTM! Import path updated consistently.

The import path change from "github.com/evmos/ethermint/app/ante" to "github.com/evmos/ethermint/evmd/ante" is consistent with the ethermint module reorganization and maintains proper aliasing.

CHANGELOG.md (1)

15-15: LGTM! Changelog entry properly documents the geth upgrade.

The changelog entry clearly documents the go-ethereum update to v1.15.11 and provides a helpful link to the official release notes for reference.

nix/default.nix (1)

14-14: LGTM! Go version upgrade properly coordinated.

The upgrade from Go 1.22 to Go 1.23 is consistently applied to both the runtime (go_1_23) and the module builder (buildGo123Module), supporting the geth v1.15.11 integration.

Also applies to: 18-18

x/cronos/keeper/evmhandlers_test.go (1)

251-251: LGTM! Correct adaptation for go-ethereum v1.15.11 upgrade.

The replacement of sender.Hash() with common.BytesToHash(sender.Bytes()) aligns with the go-ethereum v1.15.11 upgrade mentioned in the PR objectives. This change maintains the same functionality while adapting to the updated API where the Hash() method was likely removed from common.Address.

Also applies to: 278-278, 305-305

integration_tests/shell.nix (2)

10-10: Good addition for development environment.

Adding pkgs.go to buildInputs ensures Go tooling is available in the shell environment, which is essential for development workflows that depend on Go commands.


19-19: Improved robustness with mkdir -p.

Using mkdir -p instead of mkdir prevents errors if the ./coverage directory already exists, making the shell hook more robust.

x/cronos/keeper/precompiles/ica.go (1)

126-126: LGTM! Consistent API update for contract caller access.

The change from contract.CallerAddress to contract.Caller() is consistent with similar updates across other precompile contracts and aligns with the go-ethereum v1.15.11 upgrade. The functionality remains the same while adapting to the updated API.

app/app.go (1)

67-68: Correct import path updates for Ethermint reorganization.

The updated import paths from "github.com/evmos/ethermint/app" to "github.com/evmos/ethermint/evmd" and "github.com/evmos/ethermint/app/ante" to "github.com/evmos/ethermint/evmd/ante" properly reflect the Ethermint code reorganization into the evmd submodule as part of the dependency upgrades.

x/cronos/keeper/precompiles/bank.go (1)

126-126: LGTM! Consistent API update for contract caller access.

The replacement of contract.CallerAddress with contract.Caller() in both the mint/burn and transfer method cases is consistent with similar updates across other precompile contracts (e.g., ica.go). This change maintains the same functionality for EVMDenom construction while adapting to the updated contract API from the go-ethereum v1.15.11 upgrade.

Also applies to: 182-182

scripts/geth-genesis.json (2)

18-20: LGTM! Ethereum fork configuration updates are appropriate.

These additions align with the geth v1.15 integration, adding support for Cancun and Prague fork activation times along with terminal total difficulty configuration. Setting cancunTime and pragueTime to null means these forks are not yet activated, which is appropriate for a development environment.


30-30: LGTM! Difficulty reset to zero is appropriate.

Changing difficulty from "0x1" to "0x0" is consistent with Proof of Stake transition or development chain configuration where mining difficulty is not relevant.

integration_tests/test_basic.py (1)

825-827: LGTM! Test updated to match new trace output format.

The test correctly reflects the updated debug_traceTransaction behavior in geth v1.15, where failed transactions now properly report "failed": True and include an explicit "returnValue": "0x". This makes the trace output more accurate and consistent.

x/cronos/keeper/precompiles/relayer.go (2)

164-164: LGTM! Updated for go-ethereum v1.15 API compatibility.

The core.IntrinsicGas call is correctly updated to pass nil instead of false for the access list parameter, matching the new function signature in go-ethereum v1.15.


204-204: LGTM! Updated to use the new Caller() method.

The change from contract.CallerAddress to contract.Caller() correctly adapts to the updated go-ethereum v1.15 API where the CallerAddress field was replaced with a Caller() method.

x/cronos/keeper/grpc_query.go (1)

72-72: LGTM! Updated Shanghai fork detection with timestamp parameter.

The IsShanghai method call is correctly updated to include both block height and block timestamp, aligning with the updated Ethereum fork activation logic that considers both block number and time-based activation.

x/cronos/keeper/evm_hooks.go (1)

66-67: LGTM! Improved bloom filter computation using CreateBloom API.

The bloom filter computation is correctly updated to use ethtypes.CreateBloom with a temporary receipt, which is more consistent with Ethereum's standard bloom filter generation and likely more efficient than the previous approach.

x/cronos/keeper/evm.go (1)

26-39: LGTM! Proper adaptation to go-ethereum v1.15.11 API changes.

The core.Message struct construction has been correctly updated to use the new field structure where the single SkipAccountChecks boolean has been replaced with two separate fields: SkipNonceChecks and SkipFromEOACheck. Both are appropriately set to false to maintain the previous behavior of not skipping account validation checks.

scripts/start-geth (1)

53-65: LGTM! Improved development configuration.

The updated geth startup configuration provides several improvements:

  • Development mode: --dev --dev.period 1 ensures consistent 1-second block periods, which is more reliable than the previous mining setup
  • Enhanced debugging: Added debug namespace to the HTTP API enables better debugging capabilities for integration tests
  • Cleaner setup: Disabled IPC interface (--ipcdisable) is appropriate for containerized/scripted environments
  • Better readability: The reformatted command line arguments are much easier to read and maintain

The configuration aligns well with the integration tests that expect the debug API to be available.

x/cronos/rpc/api.go (3)

192-192: LGTM! Proper bloom filter API migration.

Updated to use the new ethtypes.CreateBloom API which takes a Receipt pointer containing logs instead of the deprecated BytesToBloom(LogsBloom(...)) pattern. This aligns with go-ethereum v1.15.11 API changes.


325-325: LGTM! Consistent bloom filter API update.

Correctly applies the same ethtypes.CreateBloom API migration for replayed transaction receipts, maintaining consistency with the updated go-ethereum interface.


363-363: LGTM! Proper handling of edge case with new API.

The bloom filter construction for the block gas limit exceeded scenario is correctly updated to use the new API. Using an empty logs array with CreateBloom properly generates an empty bloom filter for the reverted transaction case.

x/cronos/types/interfaces.go (2)

14-14: LGTM! Updated import for new tracing API.

Correctly updated the import from core/vm to core/tracing to access the new tracing hooks interface in go-ethereum v1.15.11.


61-61: LGTM! Interface updated for new tracing API.

The ApplyMessage method signature is properly updated to use *tracing.Hooks instead of vm.EVMLogger. This aligns with the go-ethereum v1.15.11 tracing API changes, providing more flexible and comprehensive tracing capabilities.

go.mod (1)

8-17: Ensure thorough testing for Cosmos SDK v0.53.0 upgrade

We’ve upgraded from v0.50.13 → v0.53.0 and bumped core cosmossdk.io modules. The codebase has widespread imports of Cosmos SDK APIs in:

  • x/cronos (types, keeper, client, simulation, migrations)
  • x/e2ee (types, keeper, codec, client)
  • versiondb & store packages (multistore, rootmulti, memiavl, tsrocksdb)
  • app package (app.go, upgrades.go, state, sim_test)
  • cmd/cronosd (main, root, config, opendb)

Please verify:

  1. All existing functionality and edge cases behave correctly
  2. No deprecated or breaking SDK API usages remain
  3. Performance benchmarks and profiling are unaffected
  4. All unit, integration and simulation tests pass with the new SDK
nix/go-ethereum.nix (2)

20-22: Verify the rationale for using the old estimateGas implementation.

The comments indicate intentional use of an older estimateGas implementation. This could have implications for transaction fee estimation accuracy and compatibility with other Ethereum clients.

Please clarify why the old estimateGas implementation is preferred over the standard geth v1.15 implementation, and document any known limitations or compatibility considerations.


31-32: LGTM! Proper Nix configuration updates.

The addition of proxyVendor = true and updated vendorHash are appropriate for the dependency changes.

gomod2nix.toml (4)

34-36: Verify Cosmos SDK compatibility with major version updates.

Multiple Cosmos SDK modules have been updated to newer versions. Ensure these updates are compatible with each other and don't introduce breaking changes.

The updated modules include:

  • cosmossdk.io/collections: v1.2.0
  • cosmossdk.io/errors: v1.0.2
  • cosmossdk.io/log: v1.5.1
  • cosmossdk.io/math: v1.5.3
  • cosmossdk.io/x/upgrade: v0.2.0

Please verify these versions are compatible and test critical functionality after the upgrade.

Also applies to: 44-45, 47-48, 50-51, 76-77


249-251: New cryptographic dependencies for KZG and BLS.

Several new cryptographic libraries have been added for KZG commitments and BLS signatures, which are likely related to geth v1.15's support for EIP-4844 (Proto-Danksharding).

These dependencies are expected for geth v1.15 integration and support for blob transactions.

Also applies to: 306-308, 653-655


151-156: New performance optimization dependencies.

Several new dependencies have been added that appear to be performance optimizations:

  • github.com/bytedance/sonic - High-performance JSON library
  • github.com/cloudwego/base64x - Optimized base64 encoding
  • github.com/twitchyliquid64/golang-asm - Assembly utilities

These additions suggest focus on performance improvements, which aligns with geth v1.15 optimizations.

Also applies to: 166-168, 691-693


310-312: go-ethereum fork mismatch is safe—both forks share the same commit

The SHA 1c9b194657000b1593a6162a0d889b801548bf27 exists in both XinyuCRO/go-ethereum and crypto-org-chain/go-ethereum, so although the TOML and Nix files reference different remotes, they point at an identical code state. No build break will occur.

Copy link
Collaborator

@thomas-nguy thomas-nguy left a comment

Choose a reason for hiding this comment

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

LGTM, is there any new configurations devops need to be aware of?

@XinyuCRO
Copy link
Contributor Author

XinyuCRO commented Aug 6, 2025

@thomas-nguy no need for now

we need to enable CancunTime and PragueTime in the ChainConfig, will add the migration in code level in the following PR

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🔭 Outside diff range comments (1)
go.mod (1)

30-31: Forked go-ethereum replace target must be tagged at v1.15.x
Although the commit 0af6c9899f11 includes “apply patches v1.15”, no v1.15.* annotated tag exists on the crypto-org-chain/go-ethereum fork. Go modules anchor pseudo-versions on the highest semantic tag in the history (v1.10.20), so your replace directive still yields a v1.10-based pseudo-version and breaks the intended Geth v1.15 integration.

Please add an annotated tag (e.g. v1.15.11) on the fork at commit 0af6c9899f11—or rebase/merge onto upstream v1.15.x and tag accordingly—and then update your go.mod replace to point to that tag.

Locations to update:

  • File: go.mod
    Lines: ~30–31

Suggested diff:

-   github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250812022812-0af6c9899f11
+   github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.15.11-0.20250812022812-0af6c9899f11
♻️ Duplicate comments (1)
gomod2nix.toml (1)

52-54: Remove cosmossdk.io/schema if unused (repeat)

Previous review already flagged this as unused. If not required by tooling/codegen, drop it here and run go mod tidy to remove from go.mod.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 652fbcd and 9a01568.

⛔ Files ignored due to path filters (1)
  • go.sum is excluded by !**/*.sum
📒 Files selected for processing (3)
  • go.mod (12 hunks)
  • gomod2nix.toml (23 hunks)
  • nix/build_overlay.nix (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (18)
  • GitHub Check: Socket Security: Pull Request Alerts
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: build (macos-14)
  • GitHub Check: unittest
  • GitHub Check: gomod2nix
  • GitHub Check: integration_tests (ica)
  • GitHub Check: integration_tests (gov)
  • GitHub Check: integration_tests (ibc_rly_evm)
  • GitHub Check: integration_tests (ibc_timeout)
  • GitHub Check: integration_tests (ibc_update_client)
  • GitHub Check: integration_tests (slow)
  • GitHub Check: integration_tests (gas)
  • GitHub Check: integration_tests (upgrade)
  • GitHub Check: integration_tests (ibc_rly_gas)
  • GitHub Check: Analyze (go)
  • GitHub Check: integration_tests (unmarked)
  • GitHub Check: integration_tests (ibc)
  • GitHub Check: semgrep-cloud-platform/scan
🔇 Additional comments (2)
nix/build_overlay.nix (1)

13-17: Go 1.23.12 bump and SRI hash look correct

Version and SRI-style hash align with modern Nix fetchurl usage. No issues spotted.

go.mod (1)

21-24: cosmos-sdk require v0.53.0 vs replace to v0.50.6-… (fork) — clarify intended target

require lists github.com/cosmos/cosmos-sdk v0.53.0, but replace pins to github.com/crypto-org-chain/cosmos-sdk v0.50.6-0… This is semver-major divergent and can confuse tooling/reviewers. If you intend to stay on the v0.50.x fork, align the require or move the fork to a v0.53.x-based branch/tag.

If the intention is v0.50.x, consider this change to reduce confusion:

-	github.com/cosmos/cosmos-sdk v0.53.0
+	github.com/cosmos/cosmos-sdk v0.50.6

Then keep the replace pointing to your forked v0.50.6-0… commit. Conversely, if v0.53.x is intended, update the fork/replace to v0.53.x and run: go mod tidy, gomod2nix.

Also applies to: 284-289

@github-actions github-actions bot added the ci label Aug 12, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (8)
.github/workflows/lint.yml (2)

81-81: Same note as above: align nixpkgs and consider pinning to a commit.

The action bump is good; please also consider nixpkgs pinning and cross-workflow consistency as mentioned for Line 27.


107-107: Repeat: unify nixpkgs usage across workflows to reduce drift.

Same suggestion as Line 27; otherwise the upgrade looks good.

.github/workflows/test.yml (2)

95-95: Repeat: unify nixpkgs or pin to a commit for reproducible builds.

Change itself looks fine.


119-119: Repeat: consider nixpkgs pinning for the testground job as well.

Consistency helps prevent environment skew across jobs.

.github/workflows/release.yml (1)

58-58: Same consideration for macOS release job.

Pin nixpkgs (or align channel) here as well to avoid drift between Linux and macOS release environments.

.github/workflows/build.yml (3)

56-56: Repeat: apply the same nixpkgs policy to unittest job.

Upgrade itself is good.


107-107: Repeat: use the same nixpkgs approach for gomod2nix job.

Prevents toolchain mismatches vs build/unittest.


141-141: Repeat: unify nixpkgs approach for contracts job as well.

Keeps CI environments consistent end-to-end.

🧹 Nitpick comments (5)
.github/workflows/lint.yml (1)

27-27: Action bump LGTM; consider nixpkgs pinning and channel alignment.

Nice upgrade and pin to a commit SHA. For reproducibility and to avoid channel drift, consider pinning nixpkgs to a commit (or consistently using the same stable channel across workflows). Other workflows use 22.11 and 24.05; aligning them reduces CI flakiness.

If you want, I can prepare a patch that switches all nix_path to a single pinned nixpkgs commit (or 24.05 everywhere). Would you prefer a commit pin or the 24.05 channel?

.github/workflows/container.yml (1)

24-24: Good upgrade; prefer uniform nixpkgs policy across CI.

Pinned action SHA is good. This job uses nixpkgs=channel:nixos-24.05 while others use 22.11. Consider standardizing (or pinning nixpkgs to a specific commit) for reproducibility and to avoid subtle env differences across jobs.

.github/workflows/test.yml (1)

38-38: SHA pin LGTM; align nixpkgs strategy with other jobs.

Same suggestion as in lint/build: consider pinning nixpkgs to a commit or using a single stable channel across workflows to avoid divergence (22.11 vs 24.05).

Would you like me to open a follow-up PR to unify nixpkgs across CI and pin it?

.github/workflows/release.yml (1)

17-17: Upgrade looks good; consider pinning nixpkgs for supply-chain reproducibility.

Release workflows benefit most from a pinned nixpkgs commit (or a single agreed channel) to ensure identical toolchains over time.

.github/workflows/build.yml (1)

23-23: Nice: action pinned to commit; suggest nixpkgs pin/channel alignment.

Recommend using a pinned nixpkgs commit (or a uniform stable channel across CI) to reduce non-determinism and future breakages.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ee8335c and 890131d.

📒 Files selected for processing (5)
  • .github/workflows/build.yml (4 hunks)
  • .github/workflows/container.yml (1 hunks)
  • .github/workflows/lint.yml (3 hunks)
  • .github/workflows/release.yml (2 hunks)
  • .github/workflows/test.yml (3 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (19)
  • GitHub Check: integration_tests (ibc_rly_gas)
  • GitHub Check: integration_tests (ibc_update_client)
  • GitHub Check: integration_tests (slow)
  • GitHub Check: integration_tests (unmarked)
  • GitHub Check: integration_tests (gov)
  • GitHub Check: integration_tests (gas)
  • GitHub Check: integration_tests (ica)
  • GitHub Check: integration_tests (ibc_timeout)
  • GitHub Check: integration_tests (upgrade)
  • GitHub Check: integration_tests (ibc_rly_evm)
  • GitHub Check: integration_tests (ibc)
  • GitHub Check: build (macos-latest)
  • GitHub Check: gomod2nix
  • GitHub Check: build (macos-14)
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: unittest
  • GitHub Check: Run golangci-lint
  • GitHub Check: Analyze (go)
  • GitHub Check: semgrep-cloud-platform/scan

@XinyuCRO XinyuCRO added this pull request to the merge queue Aug 12, 2025
Merged via the queue into crypto-org-chain:main with commit 568edb9 Aug 12, 2025
46 checks passed
@XinyuCRO XinyuCRO deleted the feat/geth-1.15 branch August 12, 2025 05:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants