From 6795b0632efb5075297694e7966543ed16f0ced2 Mon Sep 17 00:00:00 2001 From: Carlos Rodriguez Date: Fri, 31 May 2024 13:35:56 +0200 Subject: [PATCH 1/5] remove GetPrefixedDenom --- e2e/tests/wasm/grandpa_test.go | 4 +- modules/apps/callbacks/replay_test.go | 14 ++-- modules/apps/callbacks/transfer_test.go | 6 +- .../apps/transfer/keeper/migrations_test.go | 3 +- modules/apps/transfer/keeper/relay_test.go | 75 +++++++++---------- modules/apps/transfer/types/coin.go | 10 --- modules/apps/transfer/types/denom.go | 8 ++ 7 files changed, 58 insertions(+), 62 deletions(-) delete mode 100644 modules/apps/transfer/types/coin.go diff --git a/e2e/tests/wasm/grandpa_test.go b/e2e/tests/wasm/grandpa_test.go index 448cd840e31..227529e95a3 100644 --- a/e2e/tests/wasm/grandpa_test.go +++ b/e2e/tests/wasm/grandpa_test.go @@ -206,8 +206,8 @@ func (s *GrandpaTestSuite) TestMsgTransfer_Succeeds_GrandpaContract() { s.Require().True(cosmosUserStakeBal.Equal(finalStakeBal)) // Verify cosmos user's final "unit" balance - unitDenomTrace := transfertypes.ParseDenomTrace(transfertypes.GetPrefixedDenom("transfer", "channel-0", "UNIT")) - cosmosUserUnitBal, err := cosmosChain.GetBalance(ctx, cosmosUser.FormattedAddress(), unitDenomTrace.IBCDenom()) + denom := transfertypes.NewDenom("UNIT", transfertypes.NewTrace("transfer", "channel-0")) + cosmosUserUnitBal, err := cosmosChain.GetBalance(ctx, cosmosUser.FormattedAddress(), denom.IBCDenom()) s.Require().NoError(err) s.Require().True(cosmosUserUnitBal.Equal(amountUnits)) diff --git a/modules/apps/callbacks/replay_test.go b/modules/apps/callbacks/replay_test.go index 04a8e5900fb..186b7b09eb3 100644 --- a/modules/apps/callbacks/replay_test.go +++ b/modules/apps/callbacks/replay_test.go @@ -286,8 +286,8 @@ func (s *CallbacksTestSuite) TestTransferRecvPacketReplayProtection() { } // save initial balance of receiver - voucherDenomTrace := transfertypes.ParseDenomTrace(transfertypes.GetPrefixedDenom(s.path.EndpointB.ChannelConfig.PortID, s.path.EndpointB.ChannelID, sdk.DefaultBondDenom)) - initialBalance := GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenomTrace.IBCDenom()) + voucherDenom := transfertypes.NewDenom(sdk.DefaultBondDenom, transfertypes.NewTrace(s.path.EndpointB.ChannelConfig.PortID, s.path.EndpointB.ChannelID)) + initialBalance := GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenom.IBCDenom()) // execute the transfer s.ExecuteTransfer(tc.transferMemo) @@ -296,9 +296,9 @@ func (s *CallbacksTestSuite) TestTransferRecvPacketReplayProtection() { s.Require().Equal(1, callbackCount) // expected is not a malicious amount - expBalance := initialBalance.Add(sdk.NewCoin(voucherDenomTrace.IBCDenom(), ibctesting.TestCoin.Amount)) + expBalance := initialBalance.Add(sdk.NewCoin(voucherDenom.IBCDenom(), ibctesting.TestCoin.Amount)) - afterBalance := GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenomTrace.IBCDenom()) + afterBalance := GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenom.IBCDenom()) s.Require().Equal(expBalance.Amount, afterBalance.Amount) }) @@ -319,8 +319,8 @@ func (s *CallbacksTestSuite) ExecuteFailedTransfer(memo string) { // record the balance of the escrow address before the transfer escrowBalance := GetSimApp(s.chainA).BankKeeper.GetBalance(s.chainA.GetContext(), escrowAddress, sdk.DefaultBondDenom) // record the balance of the receiving address before the transfer - voucherDenomTrace := transfertypes.ParseDenomTrace(transfertypes.GetPrefixedDenom(s.path.EndpointB.ChannelConfig.PortID, s.path.EndpointB.ChannelID, sdk.DefaultBondDenom)) - receiverBalance := GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenomTrace.IBCDenom()) + voucherDenom := transfertypes.NewDenom(sdk.DefaultBondDenom, transfertypes.NewTrace(s.path.EndpointB.ChannelConfig.PortID, s.path.EndpointB.ChannelID)) + receiverBalance := GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenom.IBCDenom()) amount := ibctesting.TestCoin msg := transfertypes.NewMsgTransfer( @@ -347,5 +347,5 @@ func (s *CallbacksTestSuite) ExecuteFailedTransfer(memo string) { // check that the escrow address balance hasn't changed s.Require().Equal(escrowBalance, GetSimApp(s.chainA).BankKeeper.GetBalance(s.chainA.GetContext(), escrowAddress, sdk.DefaultBondDenom)) // check that the receiving address balance hasn't changed - s.Require().Equal(receiverBalance, GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenomTrace.IBCDenom())) + s.Require().Equal(receiverBalance, GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenom.IBCDenom())) } diff --git a/modules/apps/callbacks/transfer_test.go b/modules/apps/callbacks/transfer_test.go index 16698f074e6..63b8da45576 100644 --- a/modules/apps/callbacks/transfer_test.go +++ b/modules/apps/callbacks/transfer_test.go @@ -182,8 +182,8 @@ func (s *CallbacksTestSuite) ExecuteTransfer(memo string) { // record the balance of the escrow address before the transfer escrowBalance := GetSimApp(s.chainA).BankKeeper.GetBalance(s.chainA.GetContext(), escrowAddress, sdk.DefaultBondDenom) // record the balance of the receiving address before the transfer - voucherDenomTrace := transfertypes.ParseDenomTrace(transfertypes.GetPrefixedDenom(s.path.EndpointB.ChannelConfig.PortID, s.path.EndpointB.ChannelID, sdk.DefaultBondDenom)) - receiverBalance := GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenomTrace.IBCDenom()) + voucherDenom := transfertypes.NewDenom(sdk.DefaultBondDenom, transfertypes.NewTrace(s.path.EndpointB.ChannelConfig.PortID, s.path.EndpointB.ChannelID)) + receiverBalance := GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenom.IBCDenom()) amount := ibctesting.TestCoin msg := transfertypes.NewMsgTransfer( @@ -210,7 +210,7 @@ func (s *CallbacksTestSuite) ExecuteTransfer(memo string) { // check that the escrow address balance increased by 100 s.Require().Equal(escrowBalance.Add(amount), GetSimApp(s.chainA).BankKeeper.GetBalance(s.chainA.GetContext(), escrowAddress, sdk.DefaultBondDenom)) // check that the receiving address balance increased by 100 - s.Require().Equal(receiverBalance.AddAmount(sdkmath.NewInt(100)), GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenomTrace.IBCDenom())) + s.Require().Equal(receiverBalance.AddAmount(sdkmath.NewInt(100)), GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenom.IBCDenom())) } // ExecuteTransferTimeout executes a transfer message on chainA for 100 denom. diff --git a/modules/apps/transfer/keeper/migrations_test.go b/modules/apps/transfer/keeper/migrations_test.go index 17e47fb797c..ebe086e5df7 100644 --- a/modules/apps/transfer/keeper/migrations_test.go +++ b/modules/apps/transfer/keeper/migrations_test.go @@ -207,7 +207,8 @@ func (suite *KeeperTestSuite) TestMigrateTotalEscrowForDenom() { "success: valid ibc denom escrowed in one channel", func() { escrowAddress := transfertypes.GetEscrowAddress(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID) - trace := transfertypes.ParseDenomTrace(transfertypes.GetPrefixedDenom(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, sdk.DefaultBondDenom)) + voucherDenom := transfertypes.NewDenom(sdk.DefaultBondDenom, transfertypes.NewTrace(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID)) + trace := transfertypes.ParseDenomTrace(voucherDenom.FullPath()) coin := sdk.NewCoin(trace.IBCDenom(), sdkmath.NewInt(100)) denom = trace.IBCDenom() diff --git a/modules/apps/transfer/keeper/relay_test.go b/modules/apps/transfer/keeper/relay_test.go index e506866c258..7b65933c642 100644 --- a/modules/apps/transfer/keeper/relay_test.go +++ b/modules/apps/transfer/keeper/relay_test.go @@ -263,8 +263,8 @@ func (suite *KeeperTestSuite) TestSendTransferSetsTotalEscrowAmountForSourceIBCT suite.Require().NoError(err) // execute - trace := types.ParseDenomTrace(types.GetPrefixedDenom(path1.EndpointB.ChannelConfig.PortID, path1.EndpointB.ChannelID, sdk.DefaultBondDenom)) - coin = sdk.NewCoin(trace.IBCDenom(), sdkmath.NewInt(100)) + voucherDenom := types.NewDenom(sdk.DefaultBondDenom, types.NewTrace(path1.EndpointB.ChannelConfig.PortID, path1.EndpointB.ChannelID)) + coin = sdk.NewCoin(voucherDenom.IBCDenom(), sdkmath.NewInt(100)) msg := types.NewMsgTransfer( path2.EndpointB.ChannelConfig.PortID, path2.EndpointB.ChannelID, @@ -353,19 +353,19 @@ func (suite *KeeperTestSuite) TestOnRecvPacket_ReceiverIsNotSource() { expEscrowAmount = sdkmath.ZeroInt() // total amount in escrow of voucher denom on receiving chain // denom trace of tokens received on chain B and the associated expected metadata - denomTraceOnB := types.ParseDenomTrace(types.GetPrefixedDenom(path.EndpointB.ChannelConfig.PortID, path.EndpointB.ChannelID, sdk.DefaultBondDenom)) + denomOnB := types.NewDenom(sdk.DefaultBondDenom, types.NewTrace(path.EndpointB.ChannelConfig.PortID, path.EndpointB.ChannelID)) expDenomMetadataOnB := banktypes.Metadata{ - Description: fmt.Sprintf("IBC token from %s", denomTraceOnB.GetFullDenomPath()), + Description: fmt.Sprintf("IBC token from %s", denomOnB.FullPath()), DenomUnits: []*banktypes.DenomUnit{ { - Denom: denomTraceOnB.GetBaseDenom(), + Denom: denomOnB.Base, Exponent: 0, }, }, - Base: denomTraceOnB.IBCDenom(), - Display: denomTraceOnB.GetFullDenomPath(), - Name: fmt.Sprintf("%s IBC token", denomTraceOnB.GetFullDenomPath()), - Symbol: strings.ToUpper(denomTraceOnB.GetBaseDenom()), + Base: denomOnB.IBCDenom(), + Display: denomOnB.FullPath(), + Name: fmt.Sprintf("%s IBC token", denomOnB.FullPath()), + Symbol: strings.ToUpper(denomOnB.Base), } // send coin from chainA to chainB @@ -399,7 +399,7 @@ func (suite *KeeperTestSuite) TestOnRecvPacket_ReceiverIsNotSource() { if expPass { suite.Require().NoError(err) - denomMetadata, found := suite.chainB.GetSimApp().BankKeeper.GetDenomMetaData(suite.chainB.GetContext(), denomTraceOnB.IBCDenom()) + denomMetadata, found := suite.chainB.GetSimApp().BankKeeper.GetDenomMetaData(suite.chainB.GetContext(), denomOnB.IBCDenom()) suite.Require().True(found) suite.Require().Equal(expDenomMetadataOnB, denomMetadata) } else { @@ -416,7 +416,7 @@ func (suite *KeeperTestSuite) TestOnRecvPacket_ReceiverIsNotSource() { // for all cases. The malleate function allows for testing invalid cases. func (suite *KeeperTestSuite) TestOnRecvPacket_ReceiverIsSource() { var ( - denomTrace types.DenomTrace + denom types.Denom amount sdkmath.Int receiver string memo string @@ -459,7 +459,7 @@ func (suite *KeeperTestSuite) TestOnRecvPacket_ReceiverIsSource() { { "failure: empty denom", func() { - denomTrace = types.DenomTrace{} + denom = types.Denom{} expEscrowAmount = sdkmath.NewInt(100) }, types.ErrInvalidDenomForTransfer, @@ -521,17 +521,16 @@ func (suite *KeeperTestSuite) TestOnRecvPacket_ReceiverIsSource() { seq++ // NOTE: trace must be explicitly changed in malleate to test invalid cases - denomTrace = types.ParseDenomTrace(types.GetPrefixedDenom(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, sdk.DefaultBondDenom)) + denom = types.NewDenom(sdk.DefaultBondDenom, types.NewTrace(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID)) // send coin back from chainA to chainB - coin = sdk.NewCoin(denomTrace.IBCDenom(), amount) + coin = sdk.NewCoin(denom.IBCDenom(), amount) transferMsg = types.NewMsgTransfer(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, sdk.NewCoins(coin), suite.chainA.SenderAccount.GetAddress().String(), receiver, clienttypes.NewHeight(1, 110), 0, memo) _, err = suite.chainA.SendMsgs(transferMsg) suite.Require().NoError(err) // message committed tc.malleate() - denom := types.ExtractDenomFromFullPath(denomTrace.GetFullDenomPath()) data := types.NewFungibleTokenPacketDataV2( []types.Token{ { @@ -665,7 +664,7 @@ func (suite *KeeperTestSuite) TestOnAcknowledgementPacket() { var ( successAck = channeltypes.NewResultAcknowledgement([]byte{byte(1)}) failedAck = channeltypes.NewErrorAcknowledgement(fmt.Errorf("failed packet transfer")) - denomTrace types.DenomTrace + denom types.Denom amount sdkmath.Int path *ibctesting.Path expEscrowAmount sdkmath.Int @@ -681,7 +680,7 @@ func (suite *KeeperTestSuite) TestOnAcknowledgementPacket() { "success ack: no-op", successAck, func() { - denomTrace = types.ParseDenomTrace(types.GetPrefixedDenom(path.EndpointB.ChannelConfig.PortID, path.EndpointB.ChannelID, sdk.DefaultBondDenom)) + denom = types.NewDenom(sdk.DefaultBondDenom, types.NewTrace(path.EndpointB.ChannelConfig.PortID, path.EndpointB.ChannelID)) }, nil, }, @@ -690,7 +689,7 @@ func (suite *KeeperTestSuite) TestOnAcknowledgementPacket() { failedAck, func() { escrow := types.GetEscrowAddress(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID) - denomTrace = types.ParseDenomTrace(sdk.DefaultBondDenom) + denom = types.NewDenom(sdk.DefaultBondDenom) coin := sdk.NewCoin(sdk.DefaultBondDenom, amount) suite.Require().NoError(banktestutil.FundAccount(suite.chainA.GetContext(), suite.chainA.GetSimApp().BankKeeper, escrow, sdk.NewCoins(coin))) @@ -705,8 +704,8 @@ func (suite *KeeperTestSuite) TestOnAcknowledgementPacket() { failedAck, func() { escrow := types.GetEscrowAddress(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID) - denomTrace = types.ParseDenomTrace(types.GetPrefixedDenom(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, sdk.DefaultBondDenom)) - coin := sdk.NewCoin(denomTrace.IBCDenom(), amount) + denom = types.NewDenom(sdk.DefaultBondDenom, types.NewTrace(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID)) + coin := sdk.NewCoin(denom.IBCDenom(), amount) suite.Require().NoError(banktestutil.FundAccount(suite.chainA.GetContext(), suite.chainA.GetSimApp().BankKeeper, escrow, sdk.NewCoins(coin))) }, @@ -716,7 +715,7 @@ func (suite *KeeperTestSuite) TestOnAcknowledgementPacket() { "failed ack: funds cannot be refunded because escrow account has zero balance", failedAck, func() { - denomTrace = types.ParseDenomTrace(sdk.DefaultBondDenom) + denom = types.NewDenom(sdk.DefaultBondDenom) // set escrow amount that would have been stored after successful execution of MsgTransfer suite.chainA.GetSimApp().TransferKeeper.SetTotalEscrowForDenom(suite.chainA.GetContext(), sdk.NewCoin(sdk.DefaultBondDenom, amount)) @@ -740,7 +739,6 @@ func (suite *KeeperTestSuite) TestOnAcknowledgementPacket() { tc.malleate() - denom := types.ExtractDenomFromFullPath(denomTrace.GetFullDenomPath()) data := types.NewFungibleTokenPacketDataV2( []types.Token{ { @@ -749,18 +747,18 @@ func (suite *KeeperTestSuite) TestOnAcknowledgementPacket() { }, }, suite.chainA.SenderAccount.GetAddress().String(), suite.chainB.SenderAccount.GetAddress().String(), "") packet := channeltypes.NewPacket(data.GetBytes(), 1, path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, path.EndpointB.ChannelConfig.PortID, path.EndpointB.ChannelID, clienttypes.NewHeight(1, 100), 0) - preAcknowledgementBalance := suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), suite.chainA.SenderAccount.GetAddress(), denomTrace.IBCDenom()) + preAcknowledgementBalance := suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), suite.chainA.SenderAccount.GetAddress(), denom.IBCDenom()) err := suite.chainA.GetSimApp().TransferKeeper.OnAcknowledgementPacket(suite.chainA.GetContext(), packet, data, tc.ack) // check total amount in escrow of sent token denom on sending chain - totalEscrow := suite.chainA.GetSimApp().TransferKeeper.GetTotalEscrowForDenom(suite.chainA.GetContext(), denomTrace.IBCDenom()) + totalEscrow := suite.chainA.GetSimApp().TransferKeeper.GetTotalEscrowForDenom(suite.chainA.GetContext(), denom.IBCDenom()) suite.Require().Equal(expEscrowAmount, totalEscrow.Amount) expPass := tc.expError == nil if expPass { suite.Require().NoError(err) - postAcknowledgementBalance := suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), suite.chainA.SenderAccount.GetAddress(), denomTrace.IBCDenom()) + postAcknowledgementBalance := suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), suite.chainA.SenderAccount.GetAddress(), denom.IBCDenom()) deltaAmount := postAcknowledgementBalance.Amount.Sub(preAcknowledgementBalance.Amount) if tc.ack.Success() { @@ -877,7 +875,7 @@ func (suite *KeeperTestSuite) TestOnTimeoutPacket() { path *ibctesting.Path amount sdkmath.Int sender string - denomTrace types.DenomTrace + denom types.Denom expEscrowAmount sdkmath.Int ) @@ -890,8 +888,8 @@ func (suite *KeeperTestSuite) TestOnTimeoutPacket() { "successful timeout: sender is source of coin", func() { escrow := types.GetEscrowAddress(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID) - denomTrace = types.ParseDenomTrace(sdk.DefaultBondDenom) - coin := sdk.NewCoin(denomTrace.IBCDenom(), amount) + denom = types.NewDenom(sdk.DefaultBondDenom) + coin := sdk.NewCoin(denom.IBCDenom(), amount) expEscrowAmount = sdkmath.ZeroInt() // funds the escrow account to have balance @@ -905,8 +903,8 @@ func (suite *KeeperTestSuite) TestOnTimeoutPacket() { "successful timeout: sender is not source of coin", func() { escrow := types.GetEscrowAddress(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID) - denomTrace = types.ParseDenomTrace(types.GetPrefixedDenom(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, sdk.DefaultBondDenom)) - coin := sdk.NewCoin(denomTrace.IBCDenom(), amount) + denom = types.NewDenom(sdk.DefaultBondDenom, types.NewTrace(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID)) + coin := sdk.NewCoin(denom.IBCDenom(), amount) expEscrowAmount = sdkmath.ZeroInt() // funds the escrow account to have balance @@ -917,29 +915,29 @@ func (suite *KeeperTestSuite) TestOnTimeoutPacket() { { "failure: funds cannot be refunded because escrow account has no balance for non-native coin", func() { - denomTrace = types.ParseDenomTrace("bitcoin") + denom = types.NewDenom("bitcoin") expEscrowAmount = amount // set escrow amount that would have been stored after successful execution of MsgTransfer - suite.chainA.GetSimApp().TransferKeeper.SetTotalEscrowForDenom(suite.chainA.GetContext(), sdk.NewCoin(denomTrace.IBCDenom(), amount)) + suite.chainA.GetSimApp().TransferKeeper.SetTotalEscrowForDenom(suite.chainA.GetContext(), sdk.NewCoin(denom.IBCDenom(), amount)) }, sdkerrors.ErrInsufficientFunds, }, { "failure: funds cannot be refunded because escrow account has no balance for native coin", func() { - denomTrace = types.ParseDenomTrace(sdk.DefaultBondDenom) + denom = types.NewDenom(sdk.DefaultBondDenom) expEscrowAmount = amount // set escrow amount that would have been stored after successful execution of MsgTransfer - suite.chainA.GetSimApp().TransferKeeper.SetTotalEscrowForDenom(suite.chainA.GetContext(), sdk.NewCoin(denomTrace.IBCDenom(), amount)) + suite.chainA.GetSimApp().TransferKeeper.SetTotalEscrowForDenom(suite.chainA.GetContext(), sdk.NewCoin(denom.IBCDenom(), amount)) }, sdkerrors.ErrInsufficientFunds, }, { "failure: cannot mint because sender address is invalid", func() { - denomTrace = types.ParseDenomTrace(sdk.DefaultBondDenom) + denom = types.NewDenom(sdk.DefaultBondDenom) amount = sdkmath.OneInt() sender = "invalid address" }, @@ -962,7 +960,6 @@ func (suite *KeeperTestSuite) TestOnTimeoutPacket() { tc.malleate() - denom := types.ExtractDenomFromFullPath(denomTrace.GetFullDenomPath()) data := types.NewFungibleTokenPacketDataV2( []types.Token{ { @@ -971,15 +968,15 @@ func (suite *KeeperTestSuite) TestOnTimeoutPacket() { }, }, sender, suite.chainB.SenderAccount.GetAddress().String(), "") packet := channeltypes.NewPacket(data.GetBytes(), 1, path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, path.EndpointB.ChannelConfig.PortID, path.EndpointB.ChannelID, clienttypes.NewHeight(1, 100), 0) - preTimeoutBalance := suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), suite.chainA.SenderAccount.GetAddress(), denomTrace.IBCDenom()) + preTimeoutBalance := suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), suite.chainA.SenderAccount.GetAddress(), denom.IBCDenom()) err := suite.chainA.GetSimApp().TransferKeeper.OnTimeoutPacket(suite.chainA.GetContext(), packet, data) - postTimeoutBalance := suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), suite.chainA.SenderAccount.GetAddress(), denomTrace.IBCDenom()) + postTimeoutBalance := suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), suite.chainA.SenderAccount.GetAddress(), denom.IBCDenom()) deltaAmount := postTimeoutBalance.Amount.Sub(preTimeoutBalance.Amount) // check total amount in escrow of sent token denom on sending chain - totalEscrow := suite.chainA.GetSimApp().TransferKeeper.GetTotalEscrowForDenom(suite.chainA.GetContext(), denomTrace.IBCDenom()) + totalEscrow := suite.chainA.GetSimApp().TransferKeeper.GetTotalEscrowForDenom(suite.chainA.GetContext(), denom.IBCDenom()) suite.Require().Equal(expEscrowAmount, totalEscrow.Amount) expPass := tc.expError == nil diff --git a/modules/apps/transfer/types/coin.go b/modules/apps/transfer/types/coin.go deleted file mode 100644 index 3a07c4abcc1..00000000000 --- a/modules/apps/transfer/types/coin.go +++ /dev/null @@ -1,10 +0,0 @@ -package types - -import ( - "fmt" -) - -// GetPrefixedDenom returns the denomination with the portID and channelID prefixed -func GetPrefixedDenom(portID, channelID, baseDenom string) string { - return fmt.Sprintf("%s/%s/%s", portID, channelID, baseDenom) -} diff --git a/modules/apps/transfer/types/denom.go b/modules/apps/transfer/types/denom.go index 160bff16f96..1f28357c0b0 100644 --- a/modules/apps/transfer/types/denom.go +++ b/modules/apps/transfer/types/denom.go @@ -11,6 +11,14 @@ import ( cmtbytes "github.com/cometbft/cometbft/libs/bytes" ) +// NewDenom creates a new Denom instance given the base denomination and trace. +func NewDenom(base string, trace ...Trace) Denom { + return Denom{ + Base: base, + Trace: trace, + } +} + // Validate performs a basic validation of the Denom fields. func (d Denom) Validate() error { // NOTE: base denom validation cannot be performed as each chain may define From 342b42a94841f990cc7a3297b82c1f2f5fcdf899 Mon Sep 17 00:00:00 2001 From: Carlos Rodriguez Date: Fri, 31 May 2024 13:37:42 +0200 Subject: [PATCH 2/5] add changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c14dcab09a5..b6bc3a0e7ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,7 +54,8 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (core) [\#6138](https://github.com/cosmos/ibc-go/pull/6138) Remove `Router` reference from IBC core keeper and use instead the router on the existing `PortKeeper` reference. * (core/04-channel) [\#6023](https://github.com/cosmos/ibc-go/pull/6023) Remove emission of non-hexlified event attributes `packet_data` and `packet_ack`. * (core) [\#6320](https://github.com/cosmos/ibc-go/pull/6320) Remove unnecessary `Proof` interface from `exported` package. -* (core/05-port) [\#6341](https://github.com/cosmos/ibc-go/pull/6341) Modify `UnmarshalPacketData` interface to take in the context, portID, and channelID. This allows for packet data's to be unmarshaled based on the channel version. +* (core/05-port) [\#6341](https://github.com/cosmos/ibc-go/pull/6341) Modify `UnmarshalPacketData` interface to take in the context, portID, and channelID. This allows for packet data's to be unmarshaled based on the channel version. +* (apps/transfer) [\#6440](https://github.com/cosmos/ibc-go/pull/6440) Remove `GetPrefixedDenom`. ### State Machine Breaking From 32300af37832dc863c3f4ffbfcce9a137549f1c6 Mon Sep 17 00:00:00 2001 From: Carlos Rodriguez Date: Fri, 31 May 2024 14:56:58 +0200 Subject: [PATCH 3/5] Update modules/apps/transfer/types/denom.go Co-authored-by: DimitrisJim --- modules/apps/transfer/types/denom.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/apps/transfer/types/denom.go b/modules/apps/transfer/types/denom.go index 1f28357c0b0..9c1df1cbfaa 100644 --- a/modules/apps/transfer/types/denom.go +++ b/modules/apps/transfer/types/denom.go @@ -11,8 +11,8 @@ import ( cmtbytes "github.com/cometbft/cometbft/libs/bytes" ) -// NewDenom creates a new Denom instance given the base denomination and trace. -func NewDenom(base string, trace ...Trace) Denom { +// NewDenom creates a new Denom instance given the base denomination and a variable number of traces. +func NewDenom(base string, traces ...Trace) Denom { return Denom{ Base: base, Trace: trace, From 8d85bbca31ba33e50ad01eb13ea5481eb6df55af Mon Sep 17 00:00:00 2001 From: Carlos Rodriguez Date: Fri, 31 May 2024 20:20:54 +0200 Subject: [PATCH 4/5] fix --- modules/apps/transfer/types/denom.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/apps/transfer/types/denom.go b/modules/apps/transfer/types/denom.go index 9c1df1cbfaa..ba7960750a9 100644 --- a/modules/apps/transfer/types/denom.go +++ b/modules/apps/transfer/types/denom.go @@ -15,7 +15,7 @@ import ( func NewDenom(base string, traces ...Trace) Denom { return Denom{ Base: base, - Trace: trace, + Trace: traces, } } From b201934d40cdd067b720d40195ad48fbcf0b67bb Mon Sep 17 00:00:00 2001 From: Carlos Rodriguez Date: Mon, 3 Jun 2024 12:42:19 +0200 Subject: [PATCH 5/5] rename from voucherDenom to denom --- modules/apps/callbacks/replay_test.go | 14 +++++++------- modules/apps/callbacks/transfer_test.go | 6 +++--- modules/apps/transfer/keeper/relay_test.go | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/modules/apps/callbacks/replay_test.go b/modules/apps/callbacks/replay_test.go index 186b7b09eb3..7730d67989a 100644 --- a/modules/apps/callbacks/replay_test.go +++ b/modules/apps/callbacks/replay_test.go @@ -286,8 +286,8 @@ func (s *CallbacksTestSuite) TestTransferRecvPacketReplayProtection() { } // save initial balance of receiver - voucherDenom := transfertypes.NewDenom(sdk.DefaultBondDenom, transfertypes.NewTrace(s.path.EndpointB.ChannelConfig.PortID, s.path.EndpointB.ChannelID)) - initialBalance := GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenom.IBCDenom()) + denom := transfertypes.NewDenom(sdk.DefaultBondDenom, transfertypes.NewTrace(s.path.EndpointB.ChannelConfig.PortID, s.path.EndpointB.ChannelID)) + initialBalance := GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), denom.IBCDenom()) // execute the transfer s.ExecuteTransfer(tc.transferMemo) @@ -296,9 +296,9 @@ func (s *CallbacksTestSuite) TestTransferRecvPacketReplayProtection() { s.Require().Equal(1, callbackCount) // expected is not a malicious amount - expBalance := initialBalance.Add(sdk.NewCoin(voucherDenom.IBCDenom(), ibctesting.TestCoin.Amount)) + expBalance := initialBalance.Add(sdk.NewCoin(denom.IBCDenom(), ibctesting.TestCoin.Amount)) - afterBalance := GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenom.IBCDenom()) + afterBalance := GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), denom.IBCDenom()) s.Require().Equal(expBalance.Amount, afterBalance.Amount) }) @@ -319,8 +319,8 @@ func (s *CallbacksTestSuite) ExecuteFailedTransfer(memo string) { // record the balance of the escrow address before the transfer escrowBalance := GetSimApp(s.chainA).BankKeeper.GetBalance(s.chainA.GetContext(), escrowAddress, sdk.DefaultBondDenom) // record the balance of the receiving address before the transfer - voucherDenom := transfertypes.NewDenom(sdk.DefaultBondDenom, transfertypes.NewTrace(s.path.EndpointB.ChannelConfig.PortID, s.path.EndpointB.ChannelID)) - receiverBalance := GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenom.IBCDenom()) + denom := transfertypes.NewDenom(sdk.DefaultBondDenom, transfertypes.NewTrace(s.path.EndpointB.ChannelConfig.PortID, s.path.EndpointB.ChannelID)) + receiverBalance := GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), denom.IBCDenom()) amount := ibctesting.TestCoin msg := transfertypes.NewMsgTransfer( @@ -347,5 +347,5 @@ func (s *CallbacksTestSuite) ExecuteFailedTransfer(memo string) { // check that the escrow address balance hasn't changed s.Require().Equal(escrowBalance, GetSimApp(s.chainA).BankKeeper.GetBalance(s.chainA.GetContext(), escrowAddress, sdk.DefaultBondDenom)) // check that the receiving address balance hasn't changed - s.Require().Equal(receiverBalance, GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenom.IBCDenom())) + s.Require().Equal(receiverBalance, GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), denom.IBCDenom())) } diff --git a/modules/apps/callbacks/transfer_test.go b/modules/apps/callbacks/transfer_test.go index 63b8da45576..498e91c9d6a 100644 --- a/modules/apps/callbacks/transfer_test.go +++ b/modules/apps/callbacks/transfer_test.go @@ -182,8 +182,8 @@ func (s *CallbacksTestSuite) ExecuteTransfer(memo string) { // record the balance of the escrow address before the transfer escrowBalance := GetSimApp(s.chainA).BankKeeper.GetBalance(s.chainA.GetContext(), escrowAddress, sdk.DefaultBondDenom) // record the balance of the receiving address before the transfer - voucherDenom := transfertypes.NewDenom(sdk.DefaultBondDenom, transfertypes.NewTrace(s.path.EndpointB.ChannelConfig.PortID, s.path.EndpointB.ChannelID)) - receiverBalance := GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenom.IBCDenom()) + denom := transfertypes.NewDenom(sdk.DefaultBondDenom, transfertypes.NewTrace(s.path.EndpointB.ChannelConfig.PortID, s.path.EndpointB.ChannelID)) + receiverBalance := GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), denom.IBCDenom()) amount := ibctesting.TestCoin msg := transfertypes.NewMsgTransfer( @@ -210,7 +210,7 @@ func (s *CallbacksTestSuite) ExecuteTransfer(memo string) { // check that the escrow address balance increased by 100 s.Require().Equal(escrowBalance.Add(amount), GetSimApp(s.chainA).BankKeeper.GetBalance(s.chainA.GetContext(), escrowAddress, sdk.DefaultBondDenom)) // check that the receiving address balance increased by 100 - s.Require().Equal(receiverBalance.AddAmount(sdkmath.NewInt(100)), GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), voucherDenom.IBCDenom())) + s.Require().Equal(receiverBalance.AddAmount(sdkmath.NewInt(100)), GetSimApp(s.chainB).BankKeeper.GetBalance(s.chainB.GetContext(), s.chainB.SenderAccount.GetAddress(), denom.IBCDenom())) } // ExecuteTransferTimeout executes a transfer message on chainA for 100 denom. diff --git a/modules/apps/transfer/keeper/relay_test.go b/modules/apps/transfer/keeper/relay_test.go index 7b65933c642..d2c8260eca6 100644 --- a/modules/apps/transfer/keeper/relay_test.go +++ b/modules/apps/transfer/keeper/relay_test.go @@ -263,8 +263,8 @@ func (suite *KeeperTestSuite) TestSendTransferSetsTotalEscrowAmountForSourceIBCT suite.Require().NoError(err) // execute - voucherDenom := types.NewDenom(sdk.DefaultBondDenom, types.NewTrace(path1.EndpointB.ChannelConfig.PortID, path1.EndpointB.ChannelID)) - coin = sdk.NewCoin(voucherDenom.IBCDenom(), sdkmath.NewInt(100)) + denom := types.NewDenom(sdk.DefaultBondDenom, types.NewTrace(path1.EndpointB.ChannelConfig.PortID, path1.EndpointB.ChannelID)) + coin = sdk.NewCoin(denom.IBCDenom(), sdkmath.NewInt(100)) msg := types.NewMsgTransfer( path2.EndpointB.ChannelConfig.PortID, path2.EndpointB.ChannelID,