Feat/v15 packet forward middleware#665
Closed
TheAlchemist616 wants to merge 3 commits into
Closed
Conversation
added 3 commits
June 1, 2026 04:50
Wire cosmos/ibc-apps packet-forward-middleware/v10 into the IBC transfer stack (channel -> ibc-hooks -> packet-forward -> transfer), enabling multi-hop IBC routing. Adds the packetforward module (store key, module account, params subspace, module-manager + ordering registration) and a v15 software-upgrade handler that mounts the new store and initializes default params (FeePercentage = 0) via RunMigrations.
TestTerraAsPFMHop drives gaia -> terra(PFM) -> osmosis and asserts Terra itself emits the onward send_packet (the coverage gap: existing PFM tests only use Osmosis as the hop). go mod tidy locks packet-forward-middleware v10.6.0, which transitively bumps ibc-go v10.5.0 -> v10.6.0 (minor patch, compiles clean).
Document the Packet Forward Middleware integration (stack order, dependency changes incl. ibc-go v10.5.0->v10.6.0, default fee_percentage=0, interchaintest coverage) and provide a governance MsgSoftwareUpgrade proposal runbook. Also commit the tidied tests/interchaintest go.mod/go.sum.
StrathCole
reviewed
Jun 1, 2026
Author
|
Apologies, pull request made by mistake
…On Mon, Jun 1, 2026, 5:51 AM StrathCole ***@***.***> wrote:
***@***.**** commented on this pull request.
------------------------------
On app/upgrades/v15/PROPOSAL.md
<#665 (comment)>:
Readme/proposal data for upgrades don't belong in the main repo. There is
a specific repo for docs. https://github.com/classic-terra/documents/
—
Reply to this email directly, view it on GitHub
<#665?email_source=notifications&email_token=BWMNGROCGECA3RZSSIOSAWD45VG3NA5CNFSNUABKM5UWIORPF5TWS5BNNB2WEL2QOVWGYUTFOF2WK43UKJSXM2LFO4XTINBQGAYTKNJYGQ42M4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KYZTPN52GK4S7MNWGSY3L#pullrequestreview-4400155849>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BWMNGRLUJP5UTIEKRVKORAT45VG3NAVCNFSM6AAAAACZVJAHBOVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHM2DIMBQGE2TKOBUHE>
.
Triage notifications, keep track of coding agent tasks and review pull
requests on the go with GitHub Mobile for iOS
<https://github.com/notifications/mobile/ios/BWMNGRIJZCUJMIRQRRI25LT45VG3NA5CNFSNUABKM5UWIORPF5TWS5BNNB2WEL2QOVWGYUTFOF2WK43UKJSXM2LFO4XTINBQGAYTKNJYGQ42M4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KUZTPN52GK4S7NFXXG>
and Android
<https://github.com/notifications/mobile/android/BWMNGROMNM73RIU5MLCHE6T45VG3NA5CNFSNUABKM5UWIORPF5TWS5BNNB2WEL2QOVWGYUTFOF2WK43UKJSXM2LFO4XTINBQGAYTKNJYGQ42M4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2K4ZTPN52GK4S7MFXGI4TPNFSA>.
Download it today!
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Collaborator
Shall I close it? |
Author
|
Done |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Integrates Packet Forward Middleware (PFM,
v10.6.0) into the IBC transfer stack as thev15upgrade, giving Terra Classic multi-hop IBC routing: a singleMsgTransfercan route atomically through Terra Classic to a third chain (chain-A → Terra Classic → chain-B), with automatic refund/timeout handling.Motivation
Today Terra Classic can only move assets across channels it holds directly — reaching a chain it has no direct channel with takes multiple manual transactions, or isn't possible in a single flow. PFM is the standard multi-hop component run by Osmosis, Stride, Injective, Sei and most major Cosmos chains. Adding it:
ibc-hooksmodule (a routed packet can also trigger a CosmWasm contract);fee_percentagethat skims forwarded packets to the community pool (shipped at 0 here; governance can raise it later viaMsgUpdateParams).Changes
packetfowardmiddleware(name is the upstream spelling, frozen for state compat): one KV store, one module account (intermediate receiver for in-flight forwarded packets), one params subspace. Registered inModuleBasics, the module manager, and the begin/end/init-genesis orderings.channel → ibc-hooks → packet-forward → transfer(the Osmosis ordering), inapp/keepers/routers.go.v15upgrade handler (app/upgrades/v15/): adds the PFM store viaStoreUpgrades.Added;RunMigrationsinitializes the module's default genesis (fee_percentage = 0). No bespoke state migration.Dependency changes (please review)
cosmos/ibc-apps/middleware/packet-forward-middleware/v10v10.6.0(new)cosmos/ibc-go/v10v10.5.0v10.6.0(transitive minor bump pulled by PFM)Flagging the
ibc-gobump explicitly so it's clear this PR is not only PFM — it's a minor patch release pulled in transitively, and it compiles + tests clean.Testing
go build ./...— clean.terrad init— module registers and appears in default genesis.tests/interchaintest/ibc_pfm_terra_hop_test.go::TestTerraAsPFMHop— a new live 3-chain test (gaia → Terra (this build) → osmosis) with a relayer. It asserts that Terra itself emits the onwardsend_packetafter receiving from gaia, and that osmosis credits the forwarded funds. Passes end-to-end (ok … 202s).Risk
Low. Consensus-breaking only in that it adds a module store, so it must be applied at a governance-set height via the standard Cosmovisor / coordinated-swap drill. No parameter changes to any existing module. PFM is battle-tested across the Cosmos ecosystem, and non-forwarded IBC transfers are unaffected.
Notes for reviewers
app/upgrades/v15/README.mddocuments the change;app/upgrades/v15/PROPOSAL.mdcontains the governanceMsgSoftwareUpgraderunbook.ics4Wrapperis wired toIBCKeeper.ChannelKeeper; theibc-hooks+ PFM stack ordering matches the Osmosis reference and is confirmed working byTestTerraAsPFMHop.Checklist
go build ./...)TestTerraAsPFMHop)v15)