Skip to content

feat: bump ibc-go v10, sdk v0.53, cometbft v0.38.21 - #161

Merged
traviolus merged 7 commits into
mainfrom
feat/bump-ibc-v10
May 11, 2026
Merged

traviolus merged 7 commits into
mainfrom
feat/bump-ibc-v10

Conversation

@traviolus

@traviolus traviolus commented May 7, 2026 •

Copy link
Copy Markdown
Contributor

Description

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

  • included the correct type prefix in the PR title, you can find examples of the prefixes below:
  • confirmed ! in the type prefix if API or client breaking change
  • targeted the correct branch
  • provided a link to the relevant issue or specification
  • reviewed "Files changed" and left comments if necessary
  • included the necessary unit and integration tests
  • updated the relevant documentation or specification, including comments for documenting Go code
  • confirmed all CI checks have passed

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

  • confirmed the correct type prefix in the PR title
  • confirmed all author checklist items have been addressed
  • reviewed state machine logic, API design and naming, documentation is accurate, tests and test coverage

Summary by CodeRabbit

  • Dependencies

    • Upgraded IBC to v10, CosmWasm runtime to v3, Go to 1.26, and refreshed Cosmos SDK and related deps.
  • Removals

    • Dropped legacy crisis/capability invariant hooks, CLI init flags, and a deprecated denom helper.
  • Refactor

    • Rewired IBC↔WASM integration for v10 packet/versioning and channel handling; middleware, keeper and module wiring reorganized; light-client modules registered.
  • Migrations / Upgrades

    • v1.3.0 upgrade now deletes additional legacy stores during migration.

@traviolus
traviolus requested a review from a team as a code owner May 7, 2026 11:29
@coderabbitai

coderabbitai Bot commented May 7, 2026 •

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Upgrade IBC to v10 and CosmWasm wasmvm to v3, thread channelVersion through all IBC hook call paths (send/recv/ack/timeout), recompose IBC middleware (introduce legacy fee-ack wrapper, remove ibcfee), register Tendermint/Solomachine light-client modules, remove crisis/capability wiring, and refresh dependencies and tests.

Changes

IBC Hooks & Packet Flows

Layer / File(s) Summary
API / Signatures
app/ibc-hooks/{hooks,receive,ack,timeout,send}.go
Add channelVersion string to OnRecv/OnAcknowledgement/OnTimeout signatures; remove chanCap param from SendPacket helpers.
Core Handlers
app/ibc-hooks/{receive,send,ack,timeout,util}.go
Thread channelVersion through internal handlers and into im.App calls; adapt send/receive/ack/timeout helper callsites; remove LocalDenom helper.
Middleware Delegation
app/ibc-hooks/hooks.go
Delegate to updated im.App/im.ICS4Wrapper APIs with new parameter lists (sourcePort/sourceChannel strings and channelVersion).
Tests & Mocks
app/ibc-hooks/*_test.go, app/ibc-hooks/common_test.go
Update tests and mock IBC middleware to v10 signatures, pass explicit transfer/NFT versions and explicit sourcePort/sourceChannel, remove capability params from mocks.

IBC Keeper & Middleware Rewiring

Layer / File(s) Summary
Imports & Types
app/keepers/keepers.go, app/keepers/keys.go
Upgrade IBC imports to v10; add TMLightClientModule and SMLightClientModule fields to AppKeepers; update KV/mem store key set (remove capability/ibcfee keys).
Middleware Composition
app/keepers/keepers.go
Remove per-stack ibcfee; wrap stacks with legacyfeeack for pre-v10 ack compatibility; recompose transfer, OPChild, ICA host/controller, and wasm IBC stacks.
Keeper Construction
app/keepers/keepers.go
Register Tendermint & Solomachine light-client modules and pass ChannelKeeperV2 variant into wasm keeper constructor.
Tests / Keys
app/keepers/keys.go
Generate new KV/mem store keys consistent with IBC v10 changes.

App Initialization & Modules

Layer / File(s) Summary
Module API & Ordering
app/modules.go, app/app.go, app/getter.go
Remove skipGenesisInvariants param from appModules; drop crisis invariant registration and related CLI init flags; remove GetScopedIBCKeeper; revise begin/init/end blocker ordering.
Upgrade Handler
app/upgrades/v1_3_0/upgrade.go
Add capability, crisis, feeibc to deleted stores in upgrade StoreUpgrades; remove pre-migration OPChild port binding.
Tests
app/app_test.go
Update test imports/mocks to ibc-go v10 and gomock path; adjust key access assertions to new APIs.

Wasm Keeper Call Sites & Module Cleanups

Layer / File(s) Summary
Wasm keeper callsites
app/wasmtesting/common_test.go, x/wasmextension/keeper/common_test.go, x/tokenfactory/keeper/common_test.go
Adjust wasmkeeper.NewKeeper test callsites to match changed constructor argument positions/arity.
Wasm / Tokenfactory types
x/tokenfactory/types/before_send.go, x/tokenfactory/keeper/before_send.go
Switch wasmvm coin types to github.com/CosmWasm/wasmvm/v3/types for before-send messages and keeper calls.
Module invariants cleanup
x/tokenfactory/module.go, x/wasmextension/module.go
Remove no-op RegisterInvariants methods from module AppModule implementations.
Tests
x/tokenfactory/types/msgs_test.go
Omit MustSortJSON when serializing authz test JSON (use legacy Amino marshaling as changed).

Dependency & Tooling

Layer / File(s) Summary
Go Modules
go.mod
Bump Go to 1.26, migrate ibc-go v8→v10 and wasmvm v2→v3, refresh many transitive dependencies and update replace directives to new initia forks.
Compilation Targets
Various test files
Update imports and adjust callsites/tests to match upgraded dependency APIs across the codebase.

Sequence Diagram(s)

sequenceDiagram
    participant Relayer as Relayer
    participant Hooks as WasmHooks
    participant Middleware as IBCMiddleware
    participant App as Application
    participant Wasm as WasmContract

    Relayer->>Hooks: OnRecvPacket(channelVersion, packet)
    Hooks->>Middleware: OnRecvPacket(channelVersion, packet)
    Middleware->>App: OnRecvPacket(channelVersion, packet)
    App->>Wasm: Execute contract(msg, funds)
    Wasm-->>App: Exec result
    App-->>Middleware: Return Acknowledgement
    Middleware-->>Hooks: Return Acknowledgement
    Hooks-->>Relayer: Ack handled
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

"🥕
I hopped from v8 to v10 with glee,
Threaded versions through each packet tree,
Took crisis and capabilities away,
Woke light-clients to greet the day,
New deps and tests — a hopping spree!"

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 20.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: bumping three key dependencies (ibc-go v10, SDK v0.53, CometBFT v0.38.21), which is the primary objective of this pull request.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/bump-ibc-v10

Warning

Review ran into problems

🔥 Problems

Timed out fetching pipeline failures after 30000ms


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

@codecov

codecov Bot commented May 7, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 32.32323% with 67 lines in your changes missing coverage. Please review.
✅ Project coverage is 42.54%. Comparing base (f703c13) to head (286bb71).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
app/keepers/keepers.go 0.00% 53 Missing ⚠️
app/ibc-hooks/hooks.go 75.00% 4 Missing ⚠️
app/keepers/keys.go 0.00% 4 Missing ⚠️
app/upgrades/v1_3_0/upgrade.go 0.00% 3 Missing ⚠️
app/ibc-hooks/ack.go 66.66% 0 Missing and 1 partial ⚠️
app/ibc-hooks/receive.go 83.33% 1 Missing ⚠️
app/ibc-hooks/timeout.go 66.66% 0 Missing and 1 partial ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main     #161      +/-   ##
==========================================
+ Coverage   41.99%   42.54%   +0.55%     
==========================================
  Files          49       49              
  Lines        3243     3154      -89     
==========================================
- Hits         1362     1342      -20     
+ Misses       1743     1675      -68     
+ Partials      138      137       -1     
Files with missing lines Coverage Δ
app/abcipp.go 48.36% <ø> (ø)
app/ante/ante.go 0.00% <ø> (ø)
app/ante/minimal.go 0.00% <ø> (ø)
app/app.go 57.98% <100.00%> (-0.62%) ⬇️
app/genesis.go 91.12% <ø> (ø)
app/getter.go 20.00% <ø> (+1.25%) ⬆️
app/ibc-hooks/send.go 67.39% <100.00%> (ø)
app/ibc-hooks/util.go 89.65% <ø> (+14.04%) ⬆️
app/modules.go 100.00% <100.00%> (ø)
x/tokenfactory/keeper/before_send.go 76.74% <ø> (ø)
... and 7 more
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@go.mod`:
- Line 228: The go.mod declares a direct dependency
github.com/shamaton/msgpack/v2 v2.2.3 which has unpatched HIGH-severity DoS
issues; remove or stop importing that module and replace it with a maintained
msgpack implementation (e.g., github.com/vmihailenco/msgpack/v5) or add a
temporary replace directive to point to a safe fork, and update any imports in
the codebase to the new module path (or adjust code to use the alternative API);
also audit why CosmWasm/wasmd@v0.61.11 pulls this dependency and, if you cannot
avoid it, document the risk and add a dependency mitigation (replace or fork) in
go.mod to prevent the vulnerable version from being used.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 7cca01d7-71e8-447a-95f2-98e4fb770966

📥 Commits

Reviewing files that changed from the base of the PR and between a069f07 and ef051f3.

⛔ Files ignored due to path filters (1)
  • go.sum is excluded by !**/*.sum
📒 Files selected for processing (30)
  • app/abcipp.go
  • app/ante/ante.go
  • app/ante/minimal.go
  • app/app.go
  • app/app_test.go
  • app/genesis.go
  • app/getter.go
  • app/ibc-hooks/ack.go
  • app/ibc-hooks/ack_test.go
  • app/ibc-hooks/common_test.go
  • app/ibc-hooks/hooks.go
  • app/ibc-hooks/receive.go
  • app/ibc-hooks/receive_test.go
  • app/ibc-hooks/send.go
  • app/ibc-hooks/send_test.go
  • app/ibc-hooks/timeout.go
  • app/ibc-hooks/timeout_test.go
  • app/ibc-hooks/util.go
  • app/ibc-hooks/util_test.go
  • app/keepers/keepers.go
  • app/keepers/keys.go
  • app/modules.go
  • app/upgrades/v1_3_0/upgrade.go
  • app/wasmtesting/common_test.go
  • cmd/minitiad/root.go
  • go.mod
  • x/tokenfactory/keeper/before_send.go
  • x/tokenfactory/keeper/common_test.go
  • x/tokenfactory/types/before_send.go
  • x/wasmextension/keeper/common_test.go
💤 Files with no reviewable changes (4)
  • app/wasmtesting/common_test.go
  • x/tokenfactory/keeper/common_test.go
  • x/wasmextension/keeper/common_test.go
  • cmd/minitiad/root.go

Comment thread go.mod Resolved
Comment thread app/keepers/keepers.go Resolved
@traviolus
traviolus requested a review from beer-1 May 8, 2026 06:43

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
app/keepers/keepers.go (1)

401-401: 💤 Low value

Consider extracting shared WasmHooks instance.

The same ibcwasmhooks.NewWasmHooks(appCodec, ac, appKeepers.WasmKeeper, appKeepers.OPChildKeeper) is instantiated twice—once for the transfer stack (line 401) and once for the wasm IBC stack (line 484). These could be consolidated into a single shared instance if the hooks are stateless.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/keepers/keepers.go` at line 401, Extract a single shared WasmHooks
instance instead of calling ibcwasmhooks.NewWasmHooks(...) twice: create a
variable (e.g., wasmHooks := ibcwasmhooks.NewWasmHooks(appCodec, ac,
appKeepers.WasmKeeper, appKeepers.OPChildKeeper)) near the keeper initialization
and reuse wasmHooks wherever NewWasmHooks(...) is currently invoked (the
transfer stack and the wasm IBC stack); ensure the new variable is in scope for
both usages and confirm the hooks are indeed stateless before consolidating.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@app/keepers/keepers.go`:
- Line 401: Extract a single shared WasmHooks instance instead of calling
ibcwasmhooks.NewWasmHooks(...) twice: create a variable (e.g., wasmHooks :=
ibcwasmhooks.NewWasmHooks(appCodec, ac, appKeepers.WasmKeeper,
appKeepers.OPChildKeeper)) near the keeper initialization and reuse wasmHooks
wherever NewWasmHooks(...) is currently invoked (the transfer stack and the wasm
IBC stack); ensure the new variable is in scope for both usages and confirm the
hooks are indeed stateless before consolidating.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e3d4c284-7e10-4d5d-81c1-c37e54b68493

📥 Commits

Reviewing files that changed from the base of the PR and between d21cff2 and 31c009b.

📒 Files selected for processing (1)
  • app/keepers/keepers.go

@beer-1 beer-1 left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, but seems there is conflict

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@go.mod`:
- Line 3: Update the Dockerfile's LIBWASMVM_VERSION variable to match the bumped
wasmvm module in go.mod: change LIBWASMVM_VERSION from v2.2.4 to v3.0.4 so the
Docker build uses the same wasmvm/v3 v3.0.4 version referenced in go.mod; ensure
the Dockerfile ENV or ARG named LIBWASMVM_VERSION is set to "v3.0.4" wherever
it's defined.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 08a5a01d-2d46-44f0-af11-9ad6486fc9b2

📥 Commits

Reviewing files that changed from the base of the PR and between 94f1947 and 50ee93f.

⛔ Files ignored due to path filters (1)
  • go.sum is excluded by !**/*.sum
📒 Files selected for processing (1)
  • go.mod

Comment thread go.mod Resolved
@traviolus
traviolus requested a review from beer-1 May 11, 2026 08:17
Comment thread go.mod Resolved

@beer-1 beer-1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@traviolus
traviolus merged commit 325d4ab into main May 11, 2026
9 checks passed
@traviolus
traviolus deleted the feat/bump-ibc-v10 branch May 11, 2026 08:24
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.

2 participants