Skip to content

Bump up ibc-go from v8 to v10#5

Draft
zsystm wants to merge 5 commits intomainfrom
tests/ibc-e2e
Draft

Bump up ibc-go from v8 to v10#5
zsystm wants to merge 5 commits intomainfrom
tests/ibc-e2e

Conversation

@zsystm
Copy link
Copy Markdown

@zsystm zsystm commented Mar 31, 2025

Description

  • Bumped IBC from v8 to v10.
  • Implemented v2 middleware and added basic IBC v2 test cases to verify it works.
    • Note: This PR does not cover all test scenarios: Full E2E tests with dockerized evmd will be added in a separate PR.
  • Disabled feemarket base fee param for ExampleChain.
    • Without this, we cannot use ibctesting package's code because we should set fee higher than base fee.
  • Removed unused IBC testing code.
    • These were not used and can be replaced by components from the ibctesting package.

Notes

  • This PR is minimal and focuses on verifying that IBC v10 integration works as expected.
  • Tests for cases like receiving coins registered as erc20 token pair will be covered in future PRs.
  • Updating deprecated functions like ReceiverChainIsSource to new will also be covered in another PR.

Closes: #XXXX


Author Checklist

All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.

I have...

  • tackled an existing issue or discussed with a team member
  • left instructions on how to review the changes
  • targeted the main branch

Reviewers Checklist

All items are required.
Please add a note if the item is not applicable
and please add your handle next to the items reviewed
if you only reviewed selected items.

I have...

  • added a relevant changelog entry to the Unreleased section in CHANGELOG.md
  • confirmed all author checklist items have been addressed
  • confirmed that this PR does not change production code
  • reviewed content
  • tested instructions (if applicable)
  • confirmed all CI checks have passed

zsystm added 3 commits March 31, 2025 13:38
- bumped up ibc-go from v8 to v10
- removed unused ibc test codes because bumping unused testing codes are wasting time. we should use ibc testing package instead.
added ibc v1 test cases to make sure ExampleChain works with ibc v1.
disabled basefee param as default for ExampleChain to make test easier.
- added ibc v2 components
- copied basic v2 test cases from ibc-go v10 to make sure v2 components of ExampleChain works well.
@zsystm zsystm self-assigned this Mar 31, 2025
@zsystm zsystm requested a review from dongsam March 31, 2025 05:28
@zsystm zsystm changed the title Tests/ibc e2e Bump up ibc-go from v8 to v10 Mar 31, 2025
Copy link
Copy Markdown
Member

@dongsam dongsam left a comment

Choose a reason for hiding this comment

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

LGTM,

  • Regarding linting, except for significant or critical mistakes, we can gradually apply lint rules later.
  • The changelog can be added just before merging.

Instead of immediately merging this PR, it would be preferable to include test cases for existing features like ics20 Precompile and erc20 Middleware, along with new additions/verification planned for version 10, and then merge everything at once.

Thus, we have the following options:

  1. Create a separate PR for adding test code, setting the base branch as the current PR's branch (tests/ibc-e2e), and proceed accordingly.
  2. Alternatively, change the base branch of the current PR to something like feat/ibcv10, merge first, and then continue subsequent PRs for adding test cases targeting feat/ibcv10.

zsystm added 2 commits April 1, 2025 08:50
- added nil checks for app and keeper in NewIBCMiddleware to prevent nil pointer dereference.
- changed erc20 keeper from struct to interface type to enable proper nil checking.
To test certain key scenarios involving EVM messages (e.g., deploying an ERC20 contract), we needed a block header context with a proposer address. This required:
- A custom `TestChain` to handle these messages.
- A custom `SignAndDeliver` function to support the transaction signing and delivery process.
- A custom `Coordinator` to integrate this tailored `TestChain`.

Since `TestChain` and `SignAndDeliver` are directly or indirectly tied to most components in the testing package, and ibc-go cannot use a `TestChain` struct defined in our separate package, we had to copy and adapt nearly all related files to ensure compatibility and functionality.
Comment on lines +78 to +80
for _, chain := range coord.Chains {
coord.UpdateTimeForChain(chain)
}

Check warning

Code scanning / CodeQL

Iteration over map Warning test

Iteration over map may be a possible source of non-determinism
) (*abci.ResponseFinalizeBlock, error) {
tb.Helper()
tx, err := simtestutil.GenSignedMockTx(
rand.New(rand.NewSource(time.Now().UnixNano())),

Check warning

Code scanning / CodeQL

Calling the system time Warning test

Calling the system time may be a possible source of non-determinism
@dongsam dongsam mentioned this pull request Apr 3, 2025
9 tasks
@dongsam dongsam moved this to In Progress in cosmos/evm Phase 1 Apr 3, 2025
@dongsam dongsam moved this from In Progress to legacy repo in cosmos/evm Phase 1 Apr 4, 2025
dudong2 added a commit that referenced this pull request May 28, 2025
zsystm pushed a commit that referenced this pull request Dec 9, 2025
* stable features

* chore: sync with precomiple.go

* fix: receipts root encoding (#1)

* test: add github PAT to test.yml (#2)

* test: add PAT for test-fuzz

* test: add mock for ReceiptsRoot

* fix: build

* chore: update go.mod
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: legacy repo

Development

Successfully merging this pull request may close these issues.

2 participants