feat: support create_access_list
👮🏻👮🏻👮🏻 !!!! REFERENCE THE PROBLEM YOUR ARE SOLVING IN THE PR TITLE AND DESCRIBE YOUR SOLUTION HERE !!!! DO NOT FORGET !!!! 👮🏻👮🏻👮🏻
PR Checklist:
- [ ] Have you read the CONTRIBUTING.md?
- [ ] Does your PR follow the C4 patch requirements?
- [ ] Have you rebased your work on top of the latest master?
- [ ] Have you checked your code compiles? (
make) - [ ] Have you included tests for any non-trivial functionality?
- [ ] Have you checked your code passes the unit tests? (
make test) - [ ] Have you checked your code formatting is correct? (
go fmt) - [ ] Have you checked your basic code style is fine? (
golangci-lint run) - [ ] If you added any dependencies, have you checked they do not contain any known vulnerabilities? (
go list -json -m all | nancy sleuth) - [ ] If your changes affect the client infrastructure, have you run the integration test?
- [ ] If your changes affect public APIs, does your PR follow the C4 evolution of public contracts?
- [ ] If your code changes public APIs, have you incremented the crate version numbers and documented your changes in the CHANGELOG.md?
- [ ] If you are contributing for the first time, please read the agreement in CONTRIBUTING.md now and add a comment to this pull request stating that your PR is in accordance with the Developer's Certificate of Origin.
Thank you for your code, it's appreciated! :)
Summary by CodeRabbit
-
New Features
- Added support for create_access_list to improve transaction handling and storage access optimization.
-
Tests
- Added end-to-end tests validating access list behavior and contract interactions.
-
Chores
- Bumped Go/tooling module references to newer versions for build reproducibility.
-
Documentation
- Added an UNRELEASED changelog entry noting the new access list support.
✏️ Tip: You can customize this high-level summary in your review settings.
Walkthrough
Adds an integration test and Solidity test contract for access lists, registers the contract in test assets, updates integration test utility, bumps Go version, and updates the evmos/ethermint module mapping and hash; adds an UNRELEASED changelog entry referencing create_access_list.
Changes
| Cohort / File(s) | Summary |
|---|---|
Dependency updates go.mod, gomod2nix.toml |
Bumped Go version to 1.25.0 and updated the github.com/evmos/ethermint pseudo-version/hash replacement in both files. |
Changelog CHANGELOG.md |
Added an UNRELEASED improvement entry: "Support create_access_list" (references PR #1932). |
Test contract TestAccessList integration_tests/contracts/.../TestAccessList.sol |
New Solidity contract TestAccessList with public slotA, slotB, balances, and touchSlots(uint256 a, uint256 b) to exercise multiple storage slots. |
Integration tests & utilities integration_tests/test_basic.py, integration_tests/utils.py |
Added test_access_list(cronos) end-to-end test that builds/sends txns with access lists and verifies persisted access lists; registered TestAccessList in TEST_CONTRACTS. |
Estimated code review effort
🎯 3 (Moderate) | ⏱️ ~20 minutes
- Inspect
go.modandgomod2nix.tomlfor correct pseudo-version/hash and ensure replace semantics are intentional. - Review
integration_tests/test_basic.pyfor correctness of access-list construction and on-chain assertions. - Verify
TestAccessList.solstorage layout and thattouchSlotsupdates expected slots. - Confirm
TEST_CONTRACTSregistration path matches test build/deploy tooling.
Possibly related PRs
- crypto-org-chain/cronos#1906 — Also updates the
github.com/evmos/ethermintreplace/redirect entry (same dependency change).
Suggested labels
nix
Suggested reviewers
- XinyuCRO
- calvinaco
- songgaoye
Poem
🐇 I hopped through storage, two slots in sight,
I nudged the numbers till the state was right.
An access list I traced with gentle kicks,
Tests nodded yes — my ledger ticks.
Off I go, a cheerful coding sprite.
Pre-merge checks and finishing touches
✅ 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 'feat: support create_access_list' directly matches the PR's primary objective and accurately reflects the main changes across all modified files. |
| Docstring Coverage | ✅ Passed | Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. |
✨ Finishing touches
- [ ] 📝 Generate docstrings
🧪 Generate unit tests (beta)
- [ ] 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.
Comment @coderabbitai help to get the list of available commands and usage tips.
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
| Diff | Package | Supply Chain Security |
Vulnerability | Quality | Maintenance | License |
|---|---|---|---|---|---|---|
| golang/github.com/crypto-org-chain/ethermint@v0.22.1-0.20251210080935-9a1a449c16db ⏵ v0.22.1-0.20251212021209-7da2d575eebe |
Codecov Report
:white_check_mark: All modified and coverable lines are covered by tests.
:white_check_mark: Project coverage is 25.65%. Comparing base (a3c2f70) to head (6004300).
:warning: Report is 130 commits behind head on main.
Additional details and impacted files
@@ Coverage Diff @@
## main #1932 +/- ##
==========================================
+ Coverage 16.87% 25.65% +8.77%
==========================================
Files 72 78 +6
Lines 6163 5118 -1045
==========================================
+ Hits 1040 1313 +273
+ Misses 5000 3643 -1357
- Partials 123 162 +39
:rocket: New features to boost your workflow:
- :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
- :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.