-
Notifications
You must be signed in to change notification settings - Fork 619
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
tests(e2e): ics20 v2 multidenom #6290
Conversation
* chore: adding proto files for ics20-v2 * chore: add newline
* add CurrentVersion, EscrowVersion, update tests * update hardcoded transfer channel version from interchaintest
--------- Co-authored-by: Charly <[email protected]>
…shalling/conversion (#6226) * chore: adding proto files for ics20-v2 * chore: add newline * chore: modify MsgTransfer to accept coins instead of coin * chore: reverted unintentional comment changes * chore: reverted unintentional comment changes * chore: adding test for conversion fn * chore: fix e2e linter * chore: adding docs * chore: addressing PR feedback * chore: remove duplicate import * chore: addressing PR feedback * chore: moved extration logic into internal package * chore: commented out failing test * chore: adding link to issue * chore: remove duplicate import * chore: fix linting errors * FungibleTokenPacketData interface methods + tests * linter * wip: token validation * update trace identifier validation in Token + tests * rm Printf * update with pr review * add CurrentVersion, EscrowVersion, update tests * pr review * fix e2e tests * pr review * update e2e test version * linter * update hardcoded transfer channel version from interchaintest * update hardcoded transfer channel version from interchaintest * wip packet unmarshaller * wip * wip testing * update test * linter * rm unnecessary version changes * rm unnecessary artifacts * update callbacks test * update comment * pr review * rename getMultiDenomFungibleTokenPacketData to unmarshalPacketDataBytesToICS20V2 --------- Co-authored-by: chatton <[email protected]> Co-authored-by: Carlos Rodriguez <[email protected]>
…allbacks (#6175) * add SupportedVersions array for different ics20 versions, add version checking on channel handshake application callbacks * add tests * update pr review * pr review * last few pr review nits * linter * add version counter proposing * fix missing app versino * update code + tests to return our proposed version if counterparty version is invalid * remove if statement * address review comments: return ics20-2 if counterparty version is not supported --------- Co-authored-by: Carlos Rodriguez <[email protected]>
…transfers (#6252) * add transfer authz code + tests * linter * address review comments --------- Co-authored-by: Carlos Rodriguez <[email protected]>
…ks (#6189) * chore: adding proto files for ics20-v2 * chore: add newline * chore: modify MsgTransfer to accept coins instead of coin * chore: reverted unintentional comment changes * chore: reverted unintentional comment changes * chore: adding test for conversion fn * chore: fix e2e linter * chore: adding docs * chore: addressing PR feedback * chore: remove duplicate import * chore: addressing PR feedback * chore: moved extration logic into internal package * chore: commented out failing test * chore: adding link to issue * chore: remove duplicate import * chore: fix linting errors * FungibleTokenPacketData interface methods + tests * linter * wip: token validation * update trace identifier validation in Token + tests * rm Printf * update with pr review * pr review * linter * rm unused function: linter * wip pr feedback * fix test * pr review * lintttttt * wip: backwards compatibility for transfer rpc * implement changes for ics20-v2 packet data for onRecvPacket, onAcknowledgePacket and onTimeoutPacket * fix callbacks tests * lint --------- Co-authored-by: chatton <[email protected]> Co-authored-by: Charly <[email protected]>
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (invoked as PR comments)
Additionally, you can add CodeRabbit Configration File (
|
# Conflicts: # e2e/tests/core/02-client/client_test.go # e2e/tests/core/03-connection/connection_test.go # e2e/tests/transfer/base_test.go # e2e/tests/transfer/localhost_test.go # e2e/tests/transfer/upgrades_test.go # e2e/tests/upgrades/genesis_test.go # e2e/tests/upgrades/upgrade_test.go # e2e/testsuite/testsuite.go # e2e/testsuite/tx.go
} | ||
|
||
// TestChannelDowngrade_WithICS20v1_Succeeds tests downgrading a transfer channel from ICS20 v2 to ICS20 v1. | ||
func (s *TransferChannelUpgradesTestSuite) TestChannelDowngrade_WithICS20v1_Succeeds() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If people think is worth it, I can add a another test to downgrade from fee middleware + ICS2 v2 to ICS20 v1.
e2e/tests/transfer/base_test.go
Outdated
|
||
s.Require().NoError(test.WaitForBlocks(ctx, 5, chainA, chainB), "failed to wait for blocks") | ||
|
||
t.Run("native chainB tokens are escrowed", func(t *testing.T) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
def seems like a race condition that could lead to flakyness, why can't this be placed right after the s.AssertTxSuccess
call on line 322?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's to wait on the relayer. When you s.StartRelayer
that blocks on clearing all packets, but as the relayer is already started, we need some wait condition. I think the quick trick is to wait on blocks. There's probably an issue somewhere to wait on the relayer
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Look at that #1981
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
but is this needed to query the balance on chain B right after the msg transfer is submitted to it? this should be query-able right after the tx succeeds? waiting for blocks means that this query might happen right after the tokens are returned to sender hence failing the assertion on lin 332?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks like if we are checking the escrow amounts, the wait for block could actually be moved down
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yup! think that would take care of failure in this test.
s.Require().NoError(test.WaitForBlocks(ctx, 5, chainA, chainB), "failed to wait for blocks") | ||
|
||
t.Run("native chainA tokens are escrowed", func(t *testing.T) { | ||
actualBalance, err := s.GetChainANativeBalance(ctx, chainAWallet) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
food for thought: I feel like there's a lot of repeated code in our e2e's. Would cut down review time on new pr's if we deduplicated this
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On my list of ideas for a focus week 👀
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @crodriguezvega! Great that all these test cases could be written in such a straightforward manner. Excellent work 👏
e2e/tests/transfer/upgrades_test.go
Outdated
}) | ||
|
||
t.Run("tokens are un-escrowed", func(t *testing.T) { | ||
actualTotalEscrow, err := query.TotalEscrowForDenom(ctx, chainA, chainADenom) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should we check total escrow of the second token?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These tests look amazing @crodriguezvega great job!
Definitely agree with @colin-axner and think we should probably spend some time de-duplicating these tests.
Left a couple small nits but nothing blocking 🚀
chainAIBCToken := testsuite.GetIBCToken(chainBDenom, channelA.PortID, channelA.ChannelID) | ||
|
||
t.Run("native IBC token transfer from chainA to chainB, sender is source of tokens", func(t *testing.T) { | ||
transferTxResp := s.Transfer(ctx, chainA, chainAWallet, channelA.PortID, channelA.ChannelID, sdk.NewCoins(testvalues.DefaultTransferAmount(chainADenom)), chainAAddress, chainBAddress, s.GetTimeoutHeight(ctx, chainB), 0, "") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nit] there is a testvaluesDefaultTransferCoins
fn that does this sdk.NewCoins call to reduce boilerplate.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Happy to do this, but I prefer to do it in a separate PR, since there is already a bunch of places that could benefit from that.
s.Require().NoError(test.WaitForBlocks(ctx, 5, chainA, chainB), "failed to wait for blocks") | ||
|
||
t.Run("native chainA tokens are escrowed", func(t *testing.T) { | ||
actualBalance, err := s.GetChainANativeBalance(ctx, chainAWallet) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On my list of ideas for a focus week 👀
e2e/tests/transfer/base_test.go
Outdated
denoms := []string{chainBIBCToken.IBCDenom(), chainBDenom} | ||
var transferCoins []sdk.Coin | ||
for _, denom := range denoms { | ||
transferCoins = append(transferCoins, testvalues.DefaultTransferAmount(denom)) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nit] with just two items it might be more readable to just do 2 appends instead of a for loop
ctx := context.TODO() | ||
|
||
relayer, channelA := s.SetupChainsRelayerAndChannel(ctx, func(opts *ibc.CreateChannelOptions) { | ||
opts.Version = transfertypes.V1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nit] this is the only required change, happy to leave it all in if you want to be explicit
transferTxResp, err := chainA.SendIBCTransfer(ctx, channelA.ChannelID, chainAWallet.KeyName(), chainBWalletAmount, ibc.TransferOptions{}) | ||
s.Require().NoError(err) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this ends up using the cli, is there a reason not to use s.Transfer
to broadcast a MsgTransfer directly?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No particular reason, but I will address this together with the other places in tests where we still call the CLI to do everything in one sweep.
Quality Gate passed for 'ibc-go'Issues Measures |
* Adding proto files for ics20-v2 (#6110) * chore: adding proto files for ics20-v2 * chore: add newline * update amount -> string (#6120) * Update MsgTransfer to accept sdk.Coins instead of sdk.Coin (#6113) * fix: allow base denom with trailing slash (#6148) * imp: add CurrentVersion, EscrowVersion (#6160) * add CurrentVersion, EscrowVersion, update tests * update hardcoded transfer channel version from interchaintest * chore: add function for converting packet data from v1 to v3 (#6116) --------- Co-authored-by: Charly <[email protected]> * chore: implement required `FungibleTokenPacketData` v3 interface methods (#6126) * imp: `getMultiDenomFungibleTokenPacketData`to be used in packet unmarshalling/conversion (#6226) * chore: adding proto files for ics20-v2 * chore: add newline * chore: modify MsgTransfer to accept coins instead of coin * chore: reverted unintentional comment changes * chore: reverted unintentional comment changes * chore: adding test for conversion fn * chore: fix e2e linter * chore: adding docs * chore: addressing PR feedback * chore: remove duplicate import * chore: addressing PR feedback * chore: moved extration logic into internal package * chore: commented out failing test * chore: adding link to issue * chore: remove duplicate import * chore: fix linting errors * FungibleTokenPacketData interface methods + tests * linter * wip: token validation * update trace identifier validation in Token + tests * rm Printf * update with pr review * add CurrentVersion, EscrowVersion, update tests * pr review * fix e2e tests * pr review * update e2e test version * linter * update hardcoded transfer channel version from interchaintest * update hardcoded transfer channel version from interchaintest * wip packet unmarshaller * wip * wip testing * update test * linter * rm unnecessary version changes * rm unnecessary artifacts * update callbacks test * update comment * pr review * rename getMultiDenomFungibleTokenPacketData to unmarshalPacketDataBytesToICS20V2 --------- Co-authored-by: chatton <[email protected]> Co-authored-by: Carlos Rodriguez <[email protected]> * chore: implement version checking for channel handshake application callbacks (#6175) * add SupportedVersions array for different ics20 versions, add version checking on channel handshake application callbacks * add tests * update pr review * pr review * last few pr review nits * linter * add version counter proposing * fix missing app versino * update code + tests to return our proposed version if counterparty version is invalid * remove if statement * address review comments: return ics20-2 if counterparty version is not supported --------- Co-authored-by: Carlos Rodriguez <[email protected]> * imp: update transfer authz implementation to account for multi denom transfers (#6252) * add transfer authz code + tests * linter * address review comments --------- Co-authored-by: Carlos Rodriguez <[email protected]> * ics20-v2: backwards compatibility for transfer rpc and packet callbacks (#6189) * chore: adding proto files for ics20-v2 * chore: add newline * chore: modify MsgTransfer to accept coins instead of coin * chore: reverted unintentional comment changes * chore: reverted unintentional comment changes * chore: adding test for conversion fn * chore: fix e2e linter * chore: adding docs * chore: addressing PR feedback * chore: remove duplicate import * chore: addressing PR feedback * chore: moved extration logic into internal package * chore: commented out failing test * chore: adding link to issue * chore: remove duplicate import * chore: fix linting errors * FungibleTokenPacketData interface methods + tests * linter * wip: token validation * update trace identifier validation in Token + tests * rm Printf * update with pr review * pr review * linter * rm unused function: linter * wip pr feedback * fix test * pr review * lintttttt * wip: backwards compatibility for transfer rpc * implement changes for ics20-v2 packet data for onRecvPacket, onAcknowledgePacket and onTimeoutPacket * fix callbacks tests * lint --------- Co-authored-by: chatton <[email protected]> Co-authored-by: Charly <[email protected]> * multidenom transfer test + ics20-v2 channel upgrade test * some fixes * changes to transfer tx CLI to support multiple denoms * lint * import renaming * Use type with V2 suffix for package data (#6330) * Adding additional comments and changing version variable names (#6345) * chore: correctly claim capability * lint * imp: change ics20 events to emit token set (#6348) * refactor: quick change to tokens event attribute * fix: various tests * lint * lint:fixeroni * imp: remove events variable in favour of direct event emission --------- Co-authored-by: DimitrisJim <[email protected]> * imp: check length tokens array against maximum allowed (#6349) * check length of tokens array against maximum allowed * chore: add note on arbitrary selection --------- Co-authored-by: Colin Axnér <[email protected]> * Modify UnmarshalPacketData interface to allow additional args (#6341) * api(port)!: Allow passing of context, port and channel identifier to unmarshal packet data interface as disussed. This allows us to grab the app version in transfer and unmarshal the packet based on that instead of a hacky unmarshal v2 then v1 and whatever happens. * lint: as we do * callbacks: fix signature of UnmarshalPacketData as per changes, make refactors to hopefully simplify signatures. * chore: lint and remove some todos. * review: address feedback. * Refactor packet data unmarshalling to use specific version (#6354) * chore: specifically unmarshal v1 or v2 without brute force * chore: fix TestPacketDataUnmarshalerInterface test in transfer module * Pass dest values OnRecv, refactor GetExpectedEvents * chore: fixing TestGetCallbackData test * chore: fixed remaining tests in callbacks module * test: simplify callbacks test, revert back to previous behaviour * chore: fix test case name * chore: addressing PR feedback * chore: added docstring for unmarshalPacketDataBytesToICS20V2 --------- Co-authored-by: DimitrisJim <[email protected]> Co-authored-by: Colin Axnér <[email protected]> * chore: fixing tests * imp: self review comments for ics20-v2 (#6360) * refactor: address various self review comments * revert: unnecessary change * lint * imp: self review on ics20-v2 part 2 (#6364) * refactor: apply review suggestions * imp: additional updates * refactor: make ValidateIBCDenom private * Update modules/apps/transfer/types/msgs.go Co-authored-by: Cian Hatton <[email protected]> * apply review suggestions --------- Co-authored-by: Cian Hatton <[email protected]> * chore: move functions from internal/denom back to trace.go (#6368) * chore: move functions from internal/denom to trace.go * lint * lint: the comeback * imp: ics20 v2 self review part 3 (#6373) * imp: self review items * apply jim's suggestion * Update modules/apps/transfer/keeper/msg_server_test.go * Update modules/apps/transfer/ibc_module.go * Update modules/apps/transfer/ibc_module.go * chore: remove duplicate test case * chore: address minor nits (#6374) * Refactor msgs_test.go to use expError (#6367) * chore: refactoring msgs_test.go to use expError * chore: updating expected errors * chore: update MsgUpdateParams and lint --------- Co-authored-by: DimitrisJim <[email protected]> * chore: remove unused chain variable in setup (#6371) * use new queries in e2e * add test for error ack multidenom transfer * downgrade test to ics20-1 * add test to upgrade channel to fee middleware and ICS20 v2 * revert some unnecessary changes * add transfer failure multidenom test to compatibility * updates to multidenom invalid adress test * fix value comparison * review comments --------- Co-authored-by: Cian Hatton <[email protected]> Co-authored-by: Charly <[email protected]> Co-authored-by: Charly <[email protected]> Co-authored-by: chatton <[email protected]> Co-authored-by: Colin Axnér <[email protected]> Co-authored-by: DimitrisJim <[email protected]>
* Adding proto files for ics20-v2 (#6110) * chore: adding proto files for ics20-v2 * chore: add newline * update amount -> string (#6120) * Update MsgTransfer to accept sdk.Coins instead of sdk.Coin (#6113) * fix: allow base denom with trailing slash (#6148) * imp: add CurrentVersion, EscrowVersion (#6160) * add CurrentVersion, EscrowVersion, update tests * update hardcoded transfer channel version from interchaintest * chore: add function for converting packet data from v1 to v3 (#6116) --------- Co-authored-by: Charly <[email protected]> * chore: implement required `FungibleTokenPacketData` v3 interface methods (#6126) * imp: `getMultiDenomFungibleTokenPacketData`to be used in packet unmarshalling/conversion (#6226) * chore: adding proto files for ics20-v2 * chore: add newline * chore: modify MsgTransfer to accept coins instead of coin * chore: reverted unintentional comment changes * chore: reverted unintentional comment changes * chore: adding test for conversion fn * chore: fix e2e linter * chore: adding docs * chore: addressing PR feedback * chore: remove duplicate import * chore: addressing PR feedback * chore: moved extration logic into internal package * chore: commented out failing test * chore: adding link to issue * chore: remove duplicate import * chore: fix linting errors * FungibleTokenPacketData interface methods + tests * linter * wip: token validation * update trace identifier validation in Token + tests * rm Printf * update with pr review * add CurrentVersion, EscrowVersion, update tests * pr review * fix e2e tests * pr review * update e2e test version * linter * update hardcoded transfer channel version from interchaintest * update hardcoded transfer channel version from interchaintest * wip packet unmarshaller * wip * wip testing * update test * linter * rm unnecessary version changes * rm unnecessary artifacts * update callbacks test * update comment * pr review * rename getMultiDenomFungibleTokenPacketData to unmarshalPacketDataBytesToICS20V2 --------- Co-authored-by: chatton <[email protected]> Co-authored-by: Carlos Rodriguez <[email protected]> * chore: implement version checking for channel handshake application callbacks (#6175) * add SupportedVersions array for different ics20 versions, add version checking on channel handshake application callbacks * add tests * update pr review * pr review * last few pr review nits * linter * add version counter proposing * fix missing app versino * update code + tests to return our proposed version if counterparty version is invalid * remove if statement * address review comments: return ics20-2 if counterparty version is not supported --------- Co-authored-by: Carlos Rodriguez <[email protected]> * imp: update transfer authz implementation to account for multi denom transfers (#6252) * add transfer authz code + tests * linter * address review comments --------- Co-authored-by: Carlos Rodriguez <[email protected]> * ics20-v2: backwards compatibility for transfer rpc and packet callbacks (#6189) * chore: adding proto files for ics20-v2 * chore: add newline * chore: modify MsgTransfer to accept coins instead of coin * chore: reverted unintentional comment changes * chore: reverted unintentional comment changes * chore: adding test for conversion fn * chore: fix e2e linter * chore: adding docs * chore: addressing PR feedback * chore: remove duplicate import * chore: addressing PR feedback * chore: moved extration logic into internal package * chore: commented out failing test * chore: adding link to issue * chore: remove duplicate import * chore: fix linting errors * FungibleTokenPacketData interface methods + tests * linter * wip: token validation * update trace identifier validation in Token + tests * rm Printf * update with pr review * pr review * linter * rm unused function: linter * wip pr feedback * fix test * pr review * lintttttt * wip: backwards compatibility for transfer rpc * implement changes for ics20-v2 packet data for onRecvPacket, onAcknowledgePacket and onTimeoutPacket * fix callbacks tests * lint --------- Co-authored-by: chatton <[email protected]> Co-authored-by: Charly <[email protected]> * multidenom transfer test + ics20-v2 channel upgrade test * some fixes * changes to transfer tx CLI to support multiple denoms * lint * import renaming * Use type with V2 suffix for package data (#6330) * Adding additional comments and changing version variable names (#6345) * chore: correctly claim capability * lint * imp: change ics20 events to emit token set (#6348) * refactor: quick change to tokens event attribute * fix: various tests * lint * lint:fixeroni * imp: remove events variable in favour of direct event emission --------- Co-authored-by: DimitrisJim <[email protected]> * imp: check length tokens array against maximum allowed (#6349) * check length of tokens array against maximum allowed * chore: add note on arbitrary selection --------- Co-authored-by: Colin Axnér <[email protected]> * Modify UnmarshalPacketData interface to allow additional args (#6341) * api(port)!: Allow passing of context, port and channel identifier to unmarshal packet data interface as disussed. This allows us to grab the app version in transfer and unmarshal the packet based on that instead of a hacky unmarshal v2 then v1 and whatever happens. * lint: as we do * callbacks: fix signature of UnmarshalPacketData as per changes, make refactors to hopefully simplify signatures. * chore: lint and remove some todos. * review: address feedback. * Refactor packet data unmarshalling to use specific version (#6354) * chore: specifically unmarshal v1 or v2 without brute force * chore: fix TestPacketDataUnmarshalerInterface test in transfer module * Pass dest values OnRecv, refactor GetExpectedEvents * chore: fixing TestGetCallbackData test * chore: fixed remaining tests in callbacks module * test: simplify callbacks test, revert back to previous behaviour * chore: fix test case name * chore: addressing PR feedback * chore: added docstring for unmarshalPacketDataBytesToICS20V2 --------- Co-authored-by: DimitrisJim <[email protected]> Co-authored-by: Colin Axnér <[email protected]> * chore: fixing tests * imp: self review comments for ics20-v2 (#6360) * refactor: address various self review comments * revert: unnecessary change * lint * imp: self review on ics20-v2 part 2 (#6364) * refactor: apply review suggestions * imp: additional updates * refactor: make ValidateIBCDenom private * Update modules/apps/transfer/types/msgs.go Co-authored-by: Cian Hatton <[email protected]> * apply review suggestions --------- Co-authored-by: Cian Hatton <[email protected]> * chore: move functions from internal/denom back to trace.go (#6368) * chore: move functions from internal/denom to trace.go * lint * lint: the comeback * imp: ics20 v2 self review part 3 (#6373) * imp: self review items * apply jim's suggestion * Update modules/apps/transfer/keeper/msg_server_test.go * Update modules/apps/transfer/ibc_module.go * Update modules/apps/transfer/ibc_module.go * chore: remove duplicate test case * chore: address minor nits (#6374) * Refactor msgs_test.go to use expError (#6367) * chore: refactoring msgs_test.go to use expError * chore: updating expected errors * chore: update MsgUpdateParams and lint --------- Co-authored-by: DimitrisJim <[email protected]> * chore: remove unused chain variable in setup (#6371) * use new queries in e2e * add test for error ack multidenom transfer * downgrade test to ics20-1 * add test to upgrade channel to fee middleware and ICS20 v2 * revert some unnecessary changes * add transfer failure multidenom test to compatibility * updates to multidenom invalid adress test * fix value comparison * review comments --------- Co-authored-by: Cian Hatton <[email protected]> Co-authored-by: Charly <[email protected]> Co-authored-by: Charly <[email protected]> Co-authored-by: chatton <[email protected]> Co-authored-by: Colin Axnér <[email protected]> Co-authored-by: DimitrisJim <[email protected]>
* Adding proto files for ics20-v2 (#6110) * chore: adding proto files for ics20-v2 * chore: add newline * update amount -> string (#6120) * Update MsgTransfer to accept sdk.Coins instead of sdk.Coin (#6113) * fix: allow base denom with trailing slash (#6148) * imp: add CurrentVersion, EscrowVersion (#6160) * add CurrentVersion, EscrowVersion, update tests * update hardcoded transfer channel version from interchaintest * chore: add function for converting packet data from v1 to v3 (#6116) --------- Co-authored-by: Charly <[email protected]> * chore: implement required `FungibleTokenPacketData` v3 interface methods (#6126) * imp: `getMultiDenomFungibleTokenPacketData`to be used in packet unmarshalling/conversion (#6226) * chore: adding proto files for ics20-v2 * chore: add newline * chore: modify MsgTransfer to accept coins instead of coin * chore: reverted unintentional comment changes * chore: reverted unintentional comment changes * chore: adding test for conversion fn * chore: fix e2e linter * chore: adding docs * chore: addressing PR feedback * chore: remove duplicate import * chore: addressing PR feedback * chore: moved extration logic into internal package * chore: commented out failing test * chore: adding link to issue * chore: remove duplicate import * chore: fix linting errors * FungibleTokenPacketData interface methods + tests * linter * wip: token validation * update trace identifier validation in Token + tests * rm Printf * update with pr review * add CurrentVersion, EscrowVersion, update tests * pr review * fix e2e tests * pr review * update e2e test version * linter * update hardcoded transfer channel version from interchaintest * update hardcoded transfer channel version from interchaintest * wip packet unmarshaller * wip * wip testing * update test * linter * rm unnecessary version changes * rm unnecessary artifacts * update callbacks test * update comment * pr review * rename getMultiDenomFungibleTokenPacketData to unmarshalPacketDataBytesToICS20V2 --------- Co-authored-by: chatton <[email protected]> Co-authored-by: Carlos Rodriguez <[email protected]> * chore: implement version checking for channel handshake application callbacks (#6175) * add SupportedVersions array for different ics20 versions, add version checking on channel handshake application callbacks * add tests * update pr review * pr review * last few pr review nits * linter * add version counter proposing * fix missing app versino * update code + tests to return our proposed version if counterparty version is invalid * remove if statement * address review comments: return ics20-2 if counterparty version is not supported --------- Co-authored-by: Carlos Rodriguez <[email protected]> * imp: update transfer authz implementation to account for multi denom transfers (#6252) * add transfer authz code + tests * linter * address review comments --------- Co-authored-by: Carlos Rodriguez <[email protected]> * ics20-v2: backwards compatibility for transfer rpc and packet callbacks (#6189) * chore: adding proto files for ics20-v2 * chore: add newline * chore: modify MsgTransfer to accept coins instead of coin * chore: reverted unintentional comment changes * chore: reverted unintentional comment changes * chore: adding test for conversion fn * chore: fix e2e linter * chore: adding docs * chore: addressing PR feedback * chore: remove duplicate import * chore: addressing PR feedback * chore: moved extration logic into internal package * chore: commented out failing test * chore: adding link to issue * chore: remove duplicate import * chore: fix linting errors * FungibleTokenPacketData interface methods + tests * linter * wip: token validation * update trace identifier validation in Token + tests * rm Printf * update with pr review * pr review * linter * rm unused function: linter * wip pr feedback * fix test * pr review * lintttttt * wip: backwards compatibility for transfer rpc * implement changes for ics20-v2 packet data for onRecvPacket, onAcknowledgePacket and onTimeoutPacket * fix callbacks tests * lint --------- Co-authored-by: chatton <[email protected]> Co-authored-by: Charly <[email protected]> * multidenom transfer test + ics20-v2 channel upgrade test * some fixes * changes to transfer tx CLI to support multiple denoms * lint * import renaming * Use type with V2 suffix for package data (#6330) * Adding additional comments and changing version variable names (#6345) * chore: correctly claim capability * lint * imp: change ics20 events to emit token set (#6348) * refactor: quick change to tokens event attribute * fix: various tests * lint * lint:fixeroni * imp: remove events variable in favour of direct event emission --------- Co-authored-by: DimitrisJim <[email protected]> * imp: check length tokens array against maximum allowed (#6349) * check length of tokens array against maximum allowed * chore: add note on arbitrary selection --------- Co-authored-by: Colin Axnér <[email protected]> * Modify UnmarshalPacketData interface to allow additional args (#6341) * api(port)!: Allow passing of context, port and channel identifier to unmarshal packet data interface as disussed. This allows us to grab the app version in transfer and unmarshal the packet based on that instead of a hacky unmarshal v2 then v1 and whatever happens. * lint: as we do * callbacks: fix signature of UnmarshalPacketData as per changes, make refactors to hopefully simplify signatures. * chore: lint and remove some todos. * review: address feedback. * Refactor packet data unmarshalling to use specific version (#6354) * chore: specifically unmarshal v1 or v2 without brute force * chore: fix TestPacketDataUnmarshalerInterface test in transfer module * Pass dest values OnRecv, refactor GetExpectedEvents * chore: fixing TestGetCallbackData test * chore: fixed remaining tests in callbacks module * test: simplify callbacks test, revert back to previous behaviour * chore: fix test case name * chore: addressing PR feedback * chore: added docstring for unmarshalPacketDataBytesToICS20V2 --------- Co-authored-by: DimitrisJim <[email protected]> Co-authored-by: Colin Axnér <[email protected]> * chore: fixing tests * imp: self review comments for ics20-v2 (#6360) * refactor: address various self review comments * revert: unnecessary change * lint * imp: self review on ics20-v2 part 2 (#6364) * refactor: apply review suggestions * imp: additional updates * refactor: make ValidateIBCDenom private * Update modules/apps/transfer/types/msgs.go Co-authored-by: Cian Hatton <[email protected]> * apply review suggestions --------- Co-authored-by: Cian Hatton <[email protected]> * chore: move functions from internal/denom back to trace.go (#6368) * chore: move functions from internal/denom to trace.go * lint * lint: the comeback * imp: ics20 v2 self review part 3 (#6373) * imp: self review items * apply jim's suggestion * Update modules/apps/transfer/keeper/msg_server_test.go * Update modules/apps/transfer/ibc_module.go * Update modules/apps/transfer/ibc_module.go * chore: remove duplicate test case * chore: address minor nits (#6374) * Refactor msgs_test.go to use expError (#6367) * chore: refactoring msgs_test.go to use expError * chore: updating expected errors * chore: update MsgUpdateParams and lint --------- Co-authored-by: DimitrisJim <[email protected]> * chore: remove unused chain variable in setup (#6371) * use new queries in e2e * add test for error ack multidenom transfer * downgrade test to ics20-1 * add test to upgrade channel to fee middleware and ICS20 v2 * revert some unnecessary changes * add transfer failure multidenom test to compatibility * updates to multidenom invalid adress test * fix value comparison * review comments --------- Co-authored-by: Cian Hatton <[email protected]> Co-authored-by: Charly <[email protected]> Co-authored-by: Charly <[email protected]> Co-authored-by: chatton <[email protected]> Co-authored-by: Colin Axnér <[email protected]> Co-authored-by: DimitrisJim <[email protected]>
* Adding proto files for ics20-v2 (#6110) * chore: adding proto files for ics20-v2 * chore: add newline * update amount -> string (#6120) * Update MsgTransfer to accept sdk.Coins instead of sdk.Coin (#6113) * fix: allow base denom with trailing slash (#6148) * imp: add CurrentVersion, EscrowVersion (#6160) * add CurrentVersion, EscrowVersion, update tests * update hardcoded transfer channel version from interchaintest * chore: add function for converting packet data from v1 to v3 (#6116) --------- Co-authored-by: Charly <[email protected]> * chore: implement required `FungibleTokenPacketData` v3 interface methods (#6126) * imp: `getMultiDenomFungibleTokenPacketData`to be used in packet unmarshalling/conversion (#6226) * chore: adding proto files for ics20-v2 * chore: add newline * chore: modify MsgTransfer to accept coins instead of coin * chore: reverted unintentional comment changes * chore: reverted unintentional comment changes * chore: adding test for conversion fn * chore: fix e2e linter * chore: adding docs * chore: addressing PR feedback * chore: remove duplicate import * chore: addressing PR feedback * chore: moved extration logic into internal package * chore: commented out failing test * chore: adding link to issue * chore: remove duplicate import * chore: fix linting errors * FungibleTokenPacketData interface methods + tests * linter * wip: token validation * update trace identifier validation in Token + tests * rm Printf * update with pr review * add CurrentVersion, EscrowVersion, update tests * pr review * fix e2e tests * pr review * update e2e test version * linter * update hardcoded transfer channel version from interchaintest * update hardcoded transfer channel version from interchaintest * wip packet unmarshaller * wip * wip testing * update test * linter * rm unnecessary version changes * rm unnecessary artifacts * update callbacks test * update comment * pr review * rename getMultiDenomFungibleTokenPacketData to unmarshalPacketDataBytesToICS20V2 --------- Co-authored-by: chatton <[email protected]> Co-authored-by: Carlos Rodriguez <[email protected]> * chore: implement version checking for channel handshake application callbacks (#6175) * add SupportedVersions array for different ics20 versions, add version checking on channel handshake application callbacks * add tests * update pr review * pr review * last few pr review nits * linter * add version counter proposing * fix missing app versino * update code + tests to return our proposed version if counterparty version is invalid * remove if statement * address review comments: return ics20-2 if counterparty version is not supported --------- Co-authored-by: Carlos Rodriguez <[email protected]> * imp: update transfer authz implementation to account for multi denom transfers (#6252) * add transfer authz code + tests * linter * address review comments --------- Co-authored-by: Carlos Rodriguez <[email protected]> * ics20-v2: backwards compatibility for transfer rpc and packet callbacks (#6189) * chore: adding proto files for ics20-v2 * chore: add newline * chore: modify MsgTransfer to accept coins instead of coin * chore: reverted unintentional comment changes * chore: reverted unintentional comment changes * chore: adding test for conversion fn * chore: fix e2e linter * chore: adding docs * chore: addressing PR feedback * chore: remove duplicate import * chore: addressing PR feedback * chore: moved extration logic into internal package * chore: commented out failing test * chore: adding link to issue * chore: remove duplicate import * chore: fix linting errors * FungibleTokenPacketData interface methods + tests * linter * wip: token validation * update trace identifier validation in Token + tests * rm Printf * update with pr review * pr review * linter * rm unused function: linter * wip pr feedback * fix test * pr review * lintttttt * wip: backwards compatibility for transfer rpc * implement changes for ics20-v2 packet data for onRecvPacket, onAcknowledgePacket and onTimeoutPacket * fix callbacks tests * lint --------- Co-authored-by: chatton <[email protected]> Co-authored-by: Charly <[email protected]> * multidenom transfer test + ics20-v2 channel upgrade test * some fixes * changes to transfer tx CLI to support multiple denoms * lint * import renaming * Use type with V2 suffix for package data (#6330) * Adding additional comments and changing version variable names (#6345) * chore: correctly claim capability * lint * imp: change ics20 events to emit token set (#6348) * refactor: quick change to tokens event attribute * fix: various tests * lint * lint:fixeroni * imp: remove events variable in favour of direct event emission --------- Co-authored-by: DimitrisJim <[email protected]> * imp: check length tokens array against maximum allowed (#6349) * check length of tokens array against maximum allowed * chore: add note on arbitrary selection --------- Co-authored-by: Colin Axnér <[email protected]> * Modify UnmarshalPacketData interface to allow additional args (#6341) * api(port)!: Allow passing of context, port and channel identifier to unmarshal packet data interface as disussed. This allows us to grab the app version in transfer and unmarshal the packet based on that instead of a hacky unmarshal v2 then v1 and whatever happens. * lint: as we do * callbacks: fix signature of UnmarshalPacketData as per changes, make refactors to hopefully simplify signatures. * chore: lint and remove some todos. * review: address feedback. * Refactor packet data unmarshalling to use specific version (#6354) * chore: specifically unmarshal v1 or v2 without brute force * chore: fix TestPacketDataUnmarshalerInterface test in transfer module * Pass dest values OnRecv, refactor GetExpectedEvents * chore: fixing TestGetCallbackData test * chore: fixed remaining tests in callbacks module * test: simplify callbacks test, revert back to previous behaviour * chore: fix test case name * chore: addressing PR feedback * chore: added docstring for unmarshalPacketDataBytesToICS20V2 --------- Co-authored-by: DimitrisJim <[email protected]> Co-authored-by: Colin Axnér <[email protected]> * chore: fixing tests * imp: self review comments for ics20-v2 (#6360) * refactor: address various self review comments * revert: unnecessary change * lint * imp: self review on ics20-v2 part 2 (#6364) * refactor: apply review suggestions * imp: additional updates * refactor: make ValidateIBCDenom private * Update modules/apps/transfer/types/msgs.go Co-authored-by: Cian Hatton <[email protected]> * apply review suggestions --------- Co-authored-by: Cian Hatton <[email protected]> * chore: move functions from internal/denom back to trace.go (#6368) * chore: move functions from internal/denom to trace.go * lint * lint: the comeback * imp: ics20 v2 self review part 3 (#6373) * imp: self review items * apply jim's suggestion * Update modules/apps/transfer/keeper/msg_server_test.go * Update modules/apps/transfer/ibc_module.go * Update modules/apps/transfer/ibc_module.go * chore: remove duplicate test case * chore: address minor nits (#6374) * Refactor msgs_test.go to use expError (#6367) * chore: refactoring msgs_test.go to use expError * chore: updating expected errors * chore: update MsgUpdateParams and lint --------- Co-authored-by: DimitrisJim <[email protected]> * chore: remove unused chain variable in setup (#6371) * use new queries in e2e * add test for error ack multidenom transfer * downgrade test to ics20-1 * add test to upgrade channel to fee middleware and ICS20 v2 * revert some unnecessary changes * add transfer failure multidenom test to compatibility * updates to multidenom invalid adress test * fix value comparison * review comments --------- Co-authored-by: Cian Hatton <[email protected]> Co-authored-by: Charly <[email protected]> Co-authored-by: Charly <[email protected]> Co-authored-by: chatton <[email protected]> Co-authored-by: Colin Axnér <[email protected]> Co-authored-by: DimitrisJim <[email protected]>
Description
TestMsgTransfer_Succeeds_Nonincentivized_MultiDenom
TestMsgTransfer_Fails_InvalidAddress_MultiDenom
TestChannelUpgrade_WithICS20v2_Succeeds
TestChannelUpgrade_WithFeeMiddlewareAndICS20v2_Succeeds
TestChannelDowngrade_WithICS20v1_Succeeds
closes: #6469
Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.
docs/
).godoc
comments.Files changed
in the GitHub PR explorer.SonarCloud Report
in the comment section below once CI passes.