diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index a51398889ef..477c1e0c32b 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -28,7 +28,7 @@ jobs: images: ${{ env.REGISTRY }}/cosmos/${{ env.IMAGE_NAME }} - name: Build Docker image - uses: docker/build-push-action@67a2d409c0a876cbe6b11854e3e25193efe4e62d + uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 with: context: . tags: ${{ steps.meta.outputs.tags }} @@ -46,7 +46,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Push Docker image - uses: docker/build-push-action@67a2d409c0a876cbe6b11854e3e25193efe4e62d + uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 with: context: . push: true diff --git a/.github/workflows/e2e-test-workflow-call.yml b/.github/workflows/e2e-test-workflow-call.yml index 35abf733042..039afdaaf4a 100644 --- a/.github/workflows/e2e-test-workflow-call.yml +++ b/.github/workflows/e2e-test-workflow-call.yml @@ -108,7 +108,7 @@ jobs: - name: Build and push Docker image if: ${{ inputs.build-and-push-docker-image }} - uses: docker/build-push-action@67a2d409c0a876cbe6b11854e3e25193efe4e62d + uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 with: context: . push: true @@ -155,7 +155,7 @@ jobs: - name: Build and push Docker image if: ${{ inputs.build-and-push-docker-image-wasm }} - uses: docker/build-push-action@67a2d409c0a876cbe6b11854e3e25193efe4e62d + uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 with: context: . push: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index af035550e8b..873f7b981ad 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -31,7 +31,7 @@ jobs: images: ${{ env.REGISTRY }}/cosmos/${{ env.IMAGE_NAME }} - name: Build and push Docker image - uses: docker/build-push-action@67a2d409c0a876cbe6b11854e3e25193efe4e62d + uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 with: context: . push: true diff --git a/e2e/testsuite/tx.go b/e2e/testsuite/tx.go index c037ebb3d3b..3ed4e496d07 100644 --- a/e2e/testsuite/tx.go +++ b/e2e/testsuite/tx.go @@ -21,6 +21,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/tx" + addresscodec "github.com/cosmos/cosmos-sdk/codec/address" sdk "github.com/cosmos/cosmos-sdk/types" abci "github.com/cometbft/cometbft/api/cometbft/abci/v1" @@ -153,14 +154,13 @@ func (s *E2ETestSuite) ExecuteAndPassGovV1Proposal(ctx context.Context, msg sdk. // ExecuteGovV1Proposal submits a v1 governance proposal using the provided user and message and uses all validators // to vote yes on the proposal. func (s *E2ETestSuite) ExecuteGovV1Proposal(ctx context.Context, msg sdk.Msg, chain ibc.Chain, user ibc.Wallet) error { + sender := s.ConvertToAccAddress(chain, user.FormattedAddress()) + cosmosChain, ok := chain.(*cosmos.CosmosChain) if !ok { - panic("ExecuteAndPassGovV1Proposal must be passed a cosmos.CosmosChain") + panic("ExecuteGovV1Proposal must be passed a cosmos.CosmosChain") } - sender, err := sdk.AccAddressFromBech32(user.FormattedAddress()) - s.Require().NoError(err) - proposalID := s.proposalIDs[cosmosChain.Config().ChainID] defer func() { s.proposalIDs[cosmosChain.Config().ChainID] = proposalID + 1 @@ -189,6 +189,19 @@ func (s *E2ETestSuite) ExecuteGovV1Proposal(ctx context.Context, msg sdk.Msg, ch return s.waitForGovV1ProposalToPass(ctx, cosmosChain, proposalID) } +func (s *E2ETestSuite) ConvertToAccAddress(chain ibc.Chain, formattedAddress string) sdk.AccAddress { + cosmosChain, ok := chain.(*cosmos.CosmosChain) + if !ok { + panic("ConvertToAccAddress must be passed a cosmos.CosmosChain") + } + + addrCdc := addresscodec.NewBech32Codec(cosmosChain.Config().Bech32Prefix) + senderBytes, err := addrCdc.StringToBytes(formattedAddress) + s.Require().NoError(err) + + return sdk.AccAddress(senderBytes) +} + // waitForGovV1ProposalToPass polls for the entire voting period to see if the proposal has passed. // if the proposal has not passed within the duration of the voting period, an error is returned. func (s *E2ETestSuite) waitForGovV1ProposalToPass(ctx context.Context, chain ibc.Chain, proposalID uint64) error { @@ -276,10 +289,13 @@ func (*E2ETestSuite) waitForGovV1Beta1ProposalToPass(ctx context.Context, chain // ExecuteGovV1Beta1Proposal submits a v1beta1 governance proposal using the provided content. func (s *E2ETestSuite) ExecuteGovV1Beta1Proposal(ctx context.Context, chain ibc.Chain, user ibc.Wallet, content govtypesv1beta1.Content) sdk.TxResponse { - sender, err := sdk.AccAddressFromBech32(user.FormattedAddress()) - s.Require().NoError(err) + sender := s.ConvertToAccAddress(chain, user.FormattedAddress()) - msgSubmitProposal, err := govtypesv1beta1.NewMsgSubmitProposal(content, sdk.NewCoins(sdk.NewCoin(chain.Config().Denom, govtypesv1beta1.DefaultMinDepositTokens)), sender.String()) + msgSubmitProposal, err := govtypesv1beta1.NewMsgSubmitProposal( + content, + sdk.NewCoins(sdk.NewCoin(chain.Config().Denom, govtypesv1beta1.DefaultMinDepositTokens)), + sender.String(), + ) s.Require().NoError(err) return s.BroadcastMessages(ctx, chain, user, msgSubmitProposal) diff --git a/modules/apps/27-interchain-accounts/controller/types/msgs_test.go b/modules/apps/27-interchain-accounts/controller/types/msgs_test.go index 33f89d81faf..8f1933b6ba2 100644 --- a/modules/apps/27-interchain-accounts/controller/types/msgs_test.go +++ b/modules/apps/27-interchain-accounts/controller/types/msgs_test.go @@ -9,6 +9,7 @@ import ( banktypes "cosmossdk.io/x/bank/types" + addresscodec "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/codec/testutil" sdk "github.com/cosmos/cosmos-sdk/types" moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" @@ -108,7 +109,10 @@ func TestMsgRegisterInterchainAccountValidateBasic(t *testing.T) { } func TestMsgRegisterInterchainAccountGetSigners(t *testing.T) { - expSigner, err := sdk.AccAddressFromBech32(ibctesting.TestAccAddress) + addrCdc := addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()) + expSigerBytes, err := addrCdc.StringToBytes(ibctesting.TestAccAddress) + expSigner := sdk.AccAddress(expSigerBytes) + require.NoError(t, err) msg := types.NewMsgRegisterInterchainAccount(ibctesting.FirstConnectionID, ibctesting.TestAccAddress, "", channeltypes.ORDERED) diff --git a/modules/apps/29-fee/ibc_middleware.go b/modules/apps/29-fee/ibc_middleware.go index 08d8c227a3f..410c58da73d 100644 --- a/modules/apps/29-fee/ibc_middleware.go +++ b/modules/apps/29-fee/ibc_middleware.go @@ -283,7 +283,7 @@ func (im IBCMiddleware) OnAcknowledgementPacket( payee = relayer.String() } - payeeAddr, err := sdk.AccAddressFromBech32(payee) + payeeAddr, err := im.keeper.AddrCodec.StringToBytes(payee) if err != nil { return errorsmod.Wrapf(err, "failed to create sdk.Address from payee: %s", payee) } @@ -329,7 +329,7 @@ func (im IBCMiddleware) OnTimeoutPacket( payee = relayer.String() } - payeeAddr, err := sdk.AccAddressFromBech32(payee) + payeeAddr, err := im.keeper.AddrCodec.StringToBytes(payee) if err != nil { return errorsmod.Wrapf(err, "failed to create sdk.Address from payee: %s", payee) } diff --git a/modules/apps/29-fee/keeper/escrow.go b/modules/apps/29-fee/keeper/escrow.go index c18935ef7ac..9a5f98a7b09 100644 --- a/modules/apps/29-fee/keeper/escrow.go +++ b/modules/apps/29-fee/keeper/escrow.go @@ -18,7 +18,7 @@ import ( // escrowPacketFee sends the packet fee to the 29-fee module account to hold in escrow func (k Keeper) escrowPacketFee(ctx context.Context, packetID channeltypes.PacketId, packetFee types.PacketFee) error { // check if the refund address is valid - refundAddr, err := sdk.AccAddressFromBech32(packetFee.RefundAddress) + refundAddr, err := k.AddrCodec.StringToBytes(packetFee.RefundAddress) if err != nil { return err } @@ -52,7 +52,7 @@ func (k Keeper) DistributePacketFeesOnAcknowledgement(ctx context.Context, forwa // if the escrow account has insufficient balance then we want to avoid partially distributing fees if err := k.BranchService.Execute(ctx, func(ctx context.Context) error { // forward relayer address will be empty if conversion fails - forwardAddr, _ := sdk.AccAddressFromBech32(forwardRelayer) + forwardAddr, _ := k.AddrCodec.StringToBytes(forwardRelayer) for _, packetFee := range packetFees { if !k.EscrowAccountHasBalance(ctx, packetFee.Fee.Total()) { @@ -61,7 +61,7 @@ func (k Keeper) DistributePacketFeesOnAcknowledgement(ctx context.Context, forwa } // check if refundAcc address works - refundAddr, err := sdk.AccAddressFromBech32(packetFee.RefundAddress) + refundAddr, err := k.AddrCodec.StringToBytes(packetFee.RefundAddress) if err != nil { panic(fmt.Errorf("could not parse refundAcc %s to sdk.AccAddress", packetFee.RefundAddress)) } @@ -117,7 +117,7 @@ func (k Keeper) DistributePacketFeesOnTimeout(ctx context.Context, timeoutRelaye } // check if refundAcc address works - refundAddr, err := sdk.AccAddressFromBech32(packetFee.RefundAddress) + refundAddr, err := k.AddrCodec.StringToBytes(packetFee.RefundAddress) if err != nil { panic(fmt.Errorf("could not parse refundAcc %s to sdk.AccAddress", packetFee.RefundAddress)) } @@ -206,7 +206,7 @@ func (k Keeper) RefundFeesOnChannelClosure(ctx context.Context, portID, channelI return ibcerrors.ErrInsufficientFunds } - refundAddr, err := sdk.AccAddressFromBech32(packetFee.RefundAddress) + refundAddr, err := k.AddrCodec.StringToBytes(packetFee.RefundAddress) if err != nil { unRefundedFees = append(unRefundedFees, packetFee) continue diff --git a/modules/apps/29-fee/keeper/keeper.go b/modules/apps/29-fee/keeper/keeper.go index 2b027f96da7..282ebb7eb76 100644 --- a/modules/apps/29-fee/keeper/keeper.go +++ b/modules/apps/29-fee/keeper/keeper.go @@ -3,6 +3,7 @@ package keeper import ( "context" + "cosmossdk.io/core/address" "cosmossdk.io/core/appmodule" storetypes "cosmossdk.io/store/types" @@ -24,7 +25,8 @@ var _ types.ChannelKeeper = (*Keeper)(nil) type Keeper struct { appmodule.Environment - cdc codec.BinaryCodec + cdc codec.BinaryCodec + AddrCodec address.Codec authKeeper types.AuthKeeper ics4Wrapper porttypes.ICS4Wrapper @@ -34,12 +36,13 @@ type Keeper struct { // NewKeeper creates a new 29-fee Keeper instance func NewKeeper( - cdc codec.BinaryCodec, env appmodule.Environment, + cdc codec.BinaryCodec, addrCdc address.Codec, env appmodule.Environment, ics4Wrapper porttypes.ICS4Wrapper, channelKeeper types.ChannelKeeper, authKeeper types.AuthKeeper, bankKeeper types.BankKeeper, ) Keeper { return Keeper{ cdc: cdc, + AddrCodec: addrCdc, Environment: env, ics4Wrapper: ics4Wrapper, channelKeeper: channelKeeper, @@ -220,17 +223,17 @@ func (k Keeper) GetAllPayees(ctx context.Context) []types.RegisteredPayee { // SetCounterpartyPayeeAddress maps the destination chain counterparty payee address to the source relayer address // The receiving chain must store the mapping from: address -> counterpartyPayeeAddress for the given channel -func (k Keeper) SetCounterpartyPayeeAddress(ctx context.Context, address, counterpartyAddress, channelID string) { +func (k Keeper) SetCounterpartyPayeeAddress(ctx context.Context, addr, counterpartyAddress, channelID string) { store := k.KVStoreService.OpenKVStore(ctx) - if err := store.Set(types.KeyCounterpartyPayee(address, channelID), []byte(counterpartyAddress)); err != nil { + if err := store.Set(types.KeyCounterpartyPayee(addr, channelID), []byte(counterpartyAddress)); err != nil { panic(err) } } // GetCounterpartyPayeeAddress gets the counterparty payee address given a destination relayer address -func (k Keeper) GetCounterpartyPayeeAddress(ctx context.Context, address, channelID string) (string, bool) { +func (k Keeper) GetCounterpartyPayeeAddress(ctx context.Context, relayerAddr, channelID string) (string, bool) { store := k.KVStoreService.OpenKVStore(ctx) - key := types.KeyCounterpartyPayee(address, channelID) + key := types.KeyCounterpartyPayee(relayerAddr, channelID) addr, err := store.Get(key) if err != nil { @@ -269,9 +272,9 @@ func (k Keeper) GetAllCounterpartyPayees(ctx context.Context) []types.Registered } // SetRelayerAddressForAsyncAck sets the forward relayer address during OnRecvPacket in case of async acknowledgement -func (k Keeper) SetRelayerAddressForAsyncAck(ctx context.Context, packetID channeltypes.PacketId, address string) { +func (k Keeper) SetRelayerAddressForAsyncAck(ctx context.Context, packetID channeltypes.PacketId, addr string) { store := k.KVStoreService.OpenKVStore(ctx) - if err := store.Set(types.KeyRelayerAddressForAsyncAck(packetID), []byte(address)); err != nil { + if err := store.Set(types.KeyRelayerAddressForAsyncAck(packetID), []byte(addr)); err != nil { panic(err) } } diff --git a/modules/apps/29-fee/keeper/migrations.go b/modules/apps/29-fee/keeper/migrations.go index 0b9477b569d..94556d578ae 100644 --- a/modules/apps/29-fee/keeper/migrations.go +++ b/modules/apps/29-fee/keeper/migrations.go @@ -37,7 +37,7 @@ func (m Migrator) Migrate1to2(ctx context.Context) error { for _, packetFee := range feesInEscrow.PacketFees { refundCoins := legacyTotal(packetFee.Fee).Sub(packetFee.Fee.Total()...) - refundAddr, err := sdk.AccAddressFromBech32(packetFee.RefundAddress) + refundAddr, err := m.keeper.AddrCodec.StringToBytes(packetFee.RefundAddress) if err != nil { return err } diff --git a/modules/apps/29-fee/keeper/msg_server.go b/modules/apps/29-fee/keeper/msg_server.go index 87cf093ad9f..253f41ec093 100644 --- a/modules/apps/29-fee/keeper/msg_server.go +++ b/modules/apps/29-fee/keeper/msg_server.go @@ -5,8 +5,6 @@ import ( errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/ibc-go/v9/modules/apps/29-fee/types" channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types" ibcerrors "github.com/cosmos/ibc-go/v9/modules/core/errors" @@ -20,7 +18,7 @@ var _ types.MsgServer = (*Keeper)(nil) // the source chain from which packets originate as this is where fee distribution takes place. This function may be // called more than once by a relayer, in which case, the latest payee is always used. func (k Keeper) RegisterPayee(ctx context.Context, msg *types.MsgRegisterPayee) (*types.MsgRegisterPayeeResponse, error) { - payee, err := sdk.AccAddressFromBech32(msg.Payee) + payee, err := k.AddrCodec.StringToBytes(msg.Payee) if err != nil { return nil, err } @@ -87,7 +85,7 @@ func (k Keeper) PayPacketFee(ctx context.Context, msg *types.MsgPayPacketFee) (* return nil, types.ErrFeeModuleLocked } - refundAcc, err := sdk.AccAddressFromBech32(msg.Signer) + refundAcc, err := k.AddrCodec.StringToBytes(msg.Signer) if err != nil { return nil, err } @@ -130,7 +128,7 @@ func (k Keeper) PayPacketFeeAsync(ctx context.Context, msg *types.MsgPayPacketFe return nil, types.ErrFeeModuleLocked } - refundAcc, err := sdk.AccAddressFromBech32(msg.PacketFee.RefundAddress) + refundAcc, err := k.AddrCodec.StringToBytes(msg.PacketFee.RefundAddress) if err != nil { return nil, err } diff --git a/modules/apps/callbacks/testing/simapp/app.go b/modules/apps/callbacks/testing/simapp/app.go index a17ba33d992..54be2c89580 100644 --- a/modules/apps/callbacks/testing/simapp/app.go +++ b/modules/apps/callbacks/testing/simapp/app.go @@ -12,6 +12,7 @@ import ( "github.com/spf13/cast" coreaddress "cosmossdk.io/core/address" + appmodule "cosmossdk.io/core/appmodule" "cosmossdk.io/log" storetypes "cosmossdk.io/store/types" "cosmossdk.io/x/accounts" @@ -405,6 +406,7 @@ func NewSimApp( app.IBCKeeper = ibckeeper.NewKeeper( appCodec, + signingCtx.AddressCodec(), runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibcexported.StoreKey]), logger.With(log.ModuleKey, "x/ibc")), app.GetSubspace(ibcexported.ModuleName), app.UpgradeKeeper, @@ -431,6 +433,7 @@ func NewSimApp( // IBC Fee Module keeper app.IBCFeeKeeper = ibcfeekeeper.NewKeeper( appCodec, + signingCtx.AddressCodec(), runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibcfeetypes.StoreKey]), logger.With(log.ModuleKey, fmt.Sprintf("x/%s-%s", ibcexported.ModuleName, ibcfeetypes.ModuleName))), app.IBCKeeper.ChannelKeeper, // may be replaced with IBC middleware app.IBCKeeper.ChannelKeeper, @@ -469,6 +472,7 @@ func NewSimApp( // NOTE: the Transfer Keeper's ICS4Wrapper can later be replaced. app.TransferKeeper = ibctransferkeeper.NewKeeper( appCodec, + signingCtx.AddressCodec(), runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibctransfertypes.StoreKey]), logger.With(log.ModuleKey, fmt.Sprintf("x/%s-%s", ibcexported.ModuleName, ibctransfertypes.ModuleName))), app.GetSubspace(ibctransfertypes.ModuleName), app.IBCFeeKeeper, // ISC4 Wrapper: fee IBC middleware @@ -584,33 +588,33 @@ func NewSimApp( // NOTE: Any module instantiated in the module manager that is later modified // must be passed by reference here. - app.ModuleManager = module.NewManager( - genutil.NewAppModule(appCodec, app.AuthKeeper, app.StakingKeeper, app, txConfig, genutiltypes.DefaultMessageValidator), - accounts.NewAppModule(appCodec, app.AccountsKeeper), - auth.NewAppModule(appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil), - vesting.NewAppModule(app.AuthKeeper, app.BankKeeper), - bank.NewAppModule(appCodec, app.BankKeeper, app.AuthKeeper), - feegrantmodule.NewAppModule(appCodec, app.FeeGrantKeeper, app.interfaceRegistry), - gov.NewAppModule(appCodec, &app.GovKeeper, app.AuthKeeper, app.BankKeeper, app.PoolKeeper), - mint.NewAppModule(appCodec, app.MintKeeper, app.AuthKeeper), - slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.interfaceRegistry, cometService), - distr.NewAppModule(appCodec, app.DistrKeeper, app.StakingKeeper), - staking.NewAppModule(appCodec, app.StakingKeeper), - upgrade.NewAppModule(app.UpgradeKeeper), - params.NewAppModule(app.ParamsKeeper), - consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), + app.ModuleManager = module.NewManagerFromMap(map[string]appmodule.AppModule{ + genutiltypes.ModuleName: genutil.NewAppModule(appCodec, app.AuthKeeper, app.StakingKeeper, app, txConfig, genutiltypes.DefaultMessageValidator), + accounts.ModuleName: accounts.NewAppModule(appCodec, app.AccountsKeeper), + authtypes.ModuleName: auth.NewAppModule(appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil), + vestingtypes.ModuleName: vesting.NewAppModule(app.AuthKeeper, app.BankKeeper), + banktypes.ModuleName: bank.NewAppModule(appCodec, app.BankKeeper, app.AuthKeeper), + feegrant.ModuleName: feegrantmodule.NewAppModule(appCodec, app.FeeGrantKeeper, app.interfaceRegistry), + govtypes.ModuleName: gov.NewAppModule(appCodec, &app.GovKeeper, app.AuthKeeper, app.BankKeeper, app.PoolKeeper), + minttypes.ModuleName: mint.NewAppModule(appCodec, app.MintKeeper, app.AuthKeeper), + slashingtypes.ModuleName: slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.interfaceRegistry, cometService), + distrtypes.ModuleName: distr.NewAppModule(appCodec, app.DistrKeeper, app.StakingKeeper), + stakingtypes.ModuleName: staking.NewAppModule(appCodec, app.StakingKeeper), + upgradetypes.ModuleName: upgrade.NewAppModule(app.UpgradeKeeper), + paramstypes.ModuleName: params.NewAppModule(app.ParamsKeeper), + consensusparamtypes.ModuleName: consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), // IBC modules - ibc.NewAppModule(appCodec, app.IBCKeeper), - transfer.NewAppModule(appCodec, app.TransferKeeper), - ibcfee.NewAppModule(appCodec, app.IBCFeeKeeper), - ica.NewAppModule(appCodec, &app.ICAControllerKeeper, &app.ICAHostKeeper), - mockModule, + ibcexported.ModuleName: ibc.NewAppModule(appCodec, app.IBCKeeper), + ibctransfertypes.ModuleName: transfer.NewAppModule(appCodec, app.TransferKeeper), + ibcfeetypes.ModuleName: ibcfee.NewAppModule(appCodec, app.IBCFeeKeeper), + icatypes.ModuleName: ica.NewAppModule(appCodec, &app.ICAControllerKeeper, &app.ICAHostKeeper), + mockModule.Name(): mockModule, // IBC light clients - ibctm.NewAppModule(tmLightClientModule), - solomachine.NewAppModule(smLightClientModule), - ) + ibctm.ModuleName: ibctm.NewAppModule(tmLightClientModule), + solomachine.ModuleName: solomachine.NewAppModule(smLightClientModule), + }) app.ModuleManager.RegisterLegacyAminoCodec(legacyAmino) app.ModuleManager.RegisterInterfaces(interfaceRegistry) diff --git a/modules/apps/transfer/keeper/forwarding.go b/modules/apps/transfer/keeper/forwarding.go index fbf015d0413..4d3df776000 100644 --- a/modules/apps/transfer/keeper/forwarding.go +++ b/modules/apps/transfer/keeper/forwarding.go @@ -104,7 +104,8 @@ func (k Keeper) getReceiverFromPacketData(data types.FungibleTokenPacketDataV2) return k.authKeeper.GetModuleAddress(types.ModuleName), nil } - receiver, err := sdk.AccAddressFromBech32(data.Receiver) + receiverBytes, err := k.addrCdc.StringToBytes(data.Receiver) + receiver := sdk.AccAddress(receiverBytes) if err != nil { return nil, errorsmod.Wrapf(ibcerrors.ErrInvalidAddress, "failed to decode receiver address %s: %v", data.Receiver, err) } diff --git a/modules/apps/transfer/keeper/keeper.go b/modules/apps/transfer/keeper/keeper.go index 786ae1b536c..3300d25df29 100644 --- a/modules/apps/transfer/keeper/keeper.go +++ b/modules/apps/transfer/keeper/keeper.go @@ -6,6 +6,7 @@ import ( "fmt" "strings" + "cosmossdk.io/core/address" "cosmossdk.io/core/appmodule" sdkmath "cosmossdk.io/math" "cosmossdk.io/store/prefix" @@ -29,6 +30,7 @@ import ( type Keeper struct { appmodule.Environment + addrCdc address.Codec cdc codec.BinaryCodec legacySubspace types.ParamSubspace @@ -45,6 +47,7 @@ type Keeper struct { // NewKeeper creates a new IBC transfer Keeper instance func NewKeeper( cdc codec.BinaryCodec, + addrCdc address.Codec, env appmodule.Environment, legacySubspace types.ParamSubspace, ics4Wrapper porttypes.ICS4Wrapper, @@ -64,6 +67,7 @@ func NewKeeper( return Keeper{ cdc: cdc, + addrCdc: addrCdc, Environment: env, legacySubspace: legacySubspace, ics4Wrapper: ics4Wrapper, diff --git a/modules/apps/transfer/keeper/keeper_test.go b/modules/apps/transfer/keeper/keeper_test.go index 3ff56bd7998..c48eed91846 100644 --- a/modules/apps/transfer/keeper/keeper_test.go +++ b/modules/apps/transfer/keeper/keeper_test.go @@ -12,6 +12,7 @@ import ( minttypes "cosmossdk.io/x/mint/types" "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" @@ -58,6 +59,7 @@ func (suite *KeeperTestSuite) TestNewKeeper() { {"success", func() { keeper.NewKeeper( suite.chainA.GetSimApp().AppCodec(), + address.NewBech32Codec(suite.chainA.Bech32Prefix), runtime.NewEnvironment(runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)), log.NewNopLogger()), suite.chainA.GetSimApp().GetSubspace(types.ModuleName), suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper, @@ -70,6 +72,7 @@ func (suite *KeeperTestSuite) TestNewKeeper() { {"failure: transfer module account does not exist", func() { keeper.NewKeeper( suite.chainA.GetSimApp().AppCodec(), + address.NewBech32Codec(suite.chainA.Bech32Prefix), runtime.NewEnvironment(runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)), log.NewNopLogger()), suite.chainA.GetSimApp().GetSubspace(types.ModuleName), suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper, @@ -82,6 +85,7 @@ func (suite *KeeperTestSuite) TestNewKeeper() { {"failure: empty authority", func() { keeper.NewKeeper( suite.chainA.GetSimApp().AppCodec(), + address.NewBech32Codec(suite.chainA.Bech32Prefix), runtime.NewEnvironment(runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)), log.NewNopLogger()), suite.chainA.GetSimApp().GetSubspace(types.ModuleName), suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper, diff --git a/modules/apps/transfer/keeper/msg_server.go b/modules/apps/transfer/keeper/msg_server.go index de57080adeb..13b0f556075 100644 --- a/modules/apps/transfer/keeper/msg_server.go +++ b/modules/apps/transfer/keeper/msg_server.go @@ -20,10 +20,11 @@ func (k Keeper) Transfer(ctx context.Context, msg *types.MsgTransfer) (*types.Ms return nil, types.ErrSendDisabled } - sender, err := sdk.AccAddressFromBech32(msg.Sender) + senderBytes, err := k.addrCdc.StringToBytes(msg.Sender) if err != nil { return nil, err } + sender := sdk.AccAddress(senderBytes) coins := msg.GetCoins() diff --git a/modules/apps/transfer/keeper/relay.go b/modules/apps/transfer/keeper/relay.go index 07043402a4c..721a2133938 100644 --- a/modules/apps/transfer/keeper/relay.go +++ b/modules/apps/transfer/keeper/relay.go @@ -348,7 +348,8 @@ func (k Keeper) OnTimeoutPacket(ctx context.Context, packet channeltypes.Packet, func (k Keeper) refundPacketTokens(ctx context.Context, packet channeltypes.Packet, data types.FungibleTokenPacketDataV2) error { // NOTE: packet data type already checked in handler.go - sender, err := sdk.AccAddressFromBech32(data.Sender) + senderBytes, err := k.addrCdc.StringToBytes(data.Sender) + sender := sdk.AccAddress(senderBytes) if err != nil { return err } diff --git a/modules/apps/transfer/types/msgs.go b/modules/apps/transfer/types/msgs.go index a9392292191..83e4ba70dd3 100644 --- a/modules/apps/transfer/types/msgs.go +++ b/modules/apps/transfer/types/msgs.go @@ -5,6 +5,7 @@ import ( errorsmod "cosmossdk.io/errors" + addresscodec "github.com/cosmos/cosmos-sdk/codec/address" sdk "github.com/cosmos/cosmos-sdk/types" clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types" @@ -35,7 +36,8 @@ func NewMsgUpdateParams(signer string, params Params) *MsgUpdateParams { // ValidateBasic implements sdk.Msg func (msg MsgUpdateParams) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.Signer) + addrCdc := addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()) + _, err := addrCdc.StringToBytes(msg.Signer) if err != nil { return errorsmod.Wrapf(ibcerrors.ErrInvalidAddress, "string could not be parsed as address: %v", err) } diff --git a/modules/core/keeper/keeper.go b/modules/core/keeper/keeper.go index 9c9350071ec..c55e3b61fa8 100644 --- a/modules/core/keeper/keeper.go +++ b/modules/core/keeper/keeper.go @@ -5,6 +5,7 @@ import ( "reflect" "strings" + "cosmossdk.io/core/address" "cosmossdk.io/core/appmodule" "github.com/cosmos/cosmos-sdk/codec" @@ -27,14 +28,15 @@ type Keeper struct { ChannelKeeper *channelkeeper.Keeper PortKeeper *portkeeper.Keeper - cdc codec.BinaryCodec + cdc codec.BinaryCodec + AddrCdc address.Codec authority string } // NewKeeper creates a new ibc Keeper func NewKeeper( - cdc codec.BinaryCodec, env appmodule.Environment, paramSpace types.ParamSubspace, + cdc codec.BinaryCodec, addrCdc address.Codec, env appmodule.Environment, paramSpace types.ParamSubspace, upgradeKeeper clienttypes.UpgradeKeeper, authority string, ) *Keeper { // panic if any of the keepers passed in is empty @@ -54,6 +56,7 @@ func NewKeeper( return &Keeper{ Environment: env, cdc: cdc, + AddrCdc: addrCdc, ClientKeeper: clientKeeper, ConnectionKeeper: connectionKeeper, ChannelKeeper: channelKeeper, diff --git a/modules/core/keeper/keeper_test.go b/modules/core/keeper/keeper_test.go index fa4e01238c3..5162589e02d 100644 --- a/modules/core/keeper/keeper_test.go +++ b/modules/core/keeper/keeper_test.go @@ -8,6 +8,7 @@ import ( "cosmossdk.io/log" upgradekeeper "cosmossdk.io/x/upgrade/keeper" + "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/runtime" clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types" @@ -76,6 +77,7 @@ func (suite *KeeperTestSuite) TestNewKeeper() { newIBCKeeperFn = func() { ibckeeper.NewKeeper( suite.chainA.GetSimApp().AppCodec(), + address.NewBech32Codec(suite.chainA.Bech32Prefix), runtime.NewEnvironment(runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(ibcexported.StoreKey)), log.NewNopLogger()), suite.chainA.GetSimApp().GetSubspace(ibcexported.ModuleName), upgradeKeeper, @@ -96,6 +98,7 @@ func (suite *KeeperTestSuite) TestNewKeeper() { newIBCKeeperFn = func() { ibckeeper.NewKeeper( suite.chainA.GetSimApp().AppCodec(), + address.NewBech32Codec(suite.chainA.Bech32Prefix), runtime.NewEnvironment(runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(ibcexported.StoreKey)), log.NewNopLogger()), suite.chainA.GetSimApp().GetSubspace(ibcexported.ModuleName), upgradeKeeper, diff --git a/modules/core/keeper/msg_server.go b/modules/core/keeper/msg_server.go index d6aac0335f2..d58cd30edcb 100644 --- a/modules/core/keeper/msg_server.go +++ b/modules/core/keeper/msg_server.go @@ -361,7 +361,7 @@ func (k *Keeper) ChannelCloseConfirm(ctx context.Context, msg *channeltypes.MsgC func (k *Keeper) RecvPacket(goCtx context.Context, msg *channeltypes.MsgRecvPacket) (*channeltypes.MsgRecvPacketResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - relayer, err := sdk.AccAddressFromBech32(msg.Signer) + relayer, err := k.AddrCdc.StringToBytes(msg.Signer) if err != nil { k.Logger.Error("receive packet failed", "error", errorsmod.Wrap(err, "Invalid address for msg Signer")) return nil, errorsmod.Wrap(err, "Invalid address for msg Signer") @@ -424,7 +424,7 @@ func (k *Keeper) RecvPacket(goCtx context.Context, msg *channeltypes.MsgRecvPack // Timeout defines a rpc handler method for MsgTimeout. func (k *Keeper) Timeout(ctx context.Context, msg *channeltypes.MsgTimeout) (*channeltypes.MsgTimeoutResponse, error) { - relayer, err := sdk.AccAddressFromBech32(msg.Signer) + relayer, err := k.AddrCdc.StringToBytes(msg.Signer) if err != nil { k.Logger.Error("timeout failed", "error", errorsmod.Wrap(err, "Invalid address for msg Signer")) return nil, errorsmod.Wrap(err, "Invalid address for msg Signer") @@ -482,7 +482,7 @@ func (k *Keeper) Timeout(ctx context.Context, msg *channeltypes.MsgTimeout) (*ch // TimeoutOnClose defines a rpc handler method for MsgTimeoutOnClose. func (k *Keeper) TimeoutOnClose(ctx context.Context, msg *channeltypes.MsgTimeoutOnClose) (*channeltypes.MsgTimeoutOnCloseResponse, error) { - relayer, err := sdk.AccAddressFromBech32(msg.Signer) + relayer, err := k.AddrCdc.StringToBytes(msg.Signer) if err != nil { k.Logger.Error("timeout on close failed", "error", errorsmod.Wrap(err, "Invalid address for msg Signer")) return nil, errorsmod.Wrap(err, "Invalid address for msg Signer") @@ -541,7 +541,7 @@ func (k *Keeper) TimeoutOnClose(ctx context.Context, msg *channeltypes.MsgTimeou // Acknowledgement defines a rpc handler method for MsgAcknowledgement. func (k *Keeper) Acknowledgement(ctx context.Context, msg *channeltypes.MsgAcknowledgement) (*channeltypes.MsgAcknowledgementResponse, error) { - relayer, err := sdk.AccAddressFromBech32(msg.Signer) + relayer, err := k.AddrCdc.StringToBytes(msg.Signer) if err != nil { k.Logger.Error("acknowledgement failed", "error", errorsmod.Wrap(err, "Invalid address for msg Signer")) return nil, errorsmod.Wrap(err, "Invalid address for msg Signer") diff --git a/modules/light-clients/08-wasm/testing/simapp/app.go b/modules/light-clients/08-wasm/testing/simapp/app.go index fd546472a59..5f895f14dba 100644 --- a/modules/light-clients/08-wasm/testing/simapp/app.go +++ b/modules/light-clients/08-wasm/testing/simapp/app.go @@ -17,6 +17,7 @@ import ( apisigning "cosmossdk.io/api/cosmos/tx/signing/v1beta1" "cosmossdk.io/client/v2/autocli" coreaddress "cosmossdk.io/core/address" + appmodule "cosmossdk.io/core/appmodule" corestore "cosmossdk.io/core/store" "cosmossdk.io/log" storetypes "cosmossdk.io/store/types" @@ -471,6 +472,7 @@ func NewSimApp( app.IBCKeeper = ibckeeper.NewKeeper( appCodec, + signingCtx.AddressCodec(), runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibcexported.StoreKey]), logger.With(log.ModuleKey, "x/ibc")), app.GetSubspace(ibcexported.ModuleName), app.UpgradeKeeper, @@ -562,6 +564,7 @@ func NewSimApp( // IBC Fee Module keeper app.IBCFeeKeeper = ibcfeekeeper.NewKeeper( appCodec, + signingCtx.AddressCodec(), runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibcfeetypes.StoreKey]), logger.With(log.ModuleKey, fmt.Sprintf("x/%s-%s", ibcexported.ModuleName, ibcfeetypes.ModuleName))), app.IBCKeeper.ChannelKeeper, // may be replaced with IBC middleware app.IBCKeeper.ChannelKeeper, @@ -598,6 +601,7 @@ func NewSimApp( // since fee middleware will wrap the IBCKeeper for underlying application. app.TransferKeeper = ibctransferkeeper.NewKeeper( appCodec, + signingCtx.AddressCodec(), runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibctransfertypes.StoreKey]), logger.With(log.ModuleKey, fmt.Sprintf("x/%s-%s", ibcexported.ModuleName, ibctransfertypes.ModuleName))), app.GetSubspace(ibctransfertypes.ModuleName), app.IBCFeeKeeper, // ISC4 Wrapper: fee IBC middleware @@ -698,36 +702,36 @@ func NewSimApp( // NOTE: Any module instantiated in the module manager that is later modified // must be passed by reference here. - app.ModuleManager = module.NewManager( - genutil.NewAppModule(appCodec, app.AuthKeeper, app.StakingKeeper, app, txConfig, genutiltypes.DefaultMessageValidator), - auth.NewAppModule(appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil), - vesting.NewAppModule(app.AuthKeeper, app.BankKeeper), - bank.NewAppModule(appCodec, app.BankKeeper, app.AuthKeeper), - feegrantmodule.NewAppModule(appCodec, app.FeeGrantKeeper, app.interfaceRegistry), - gov.NewAppModule(appCodec, &app.GovKeeper, app.AuthKeeper, app.BankKeeper, app.PoolKeeper), - mint.NewAppModule(appCodec, app.MintKeeper, app.AuthKeeper), - slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.interfaceRegistry, cometService), - distr.NewAppModule(appCodec, app.DistrKeeper, app.StakingKeeper), - staking.NewAppModule(appCodec, app.StakingKeeper), - upgrade.NewAppModule(app.UpgradeKeeper), - evidence.NewAppModule(appCodec, app.EvidenceKeeper, cometService), - params.NewAppModule(app.ParamsKeeper), - authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.interfaceRegistry), - groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry), - consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), + app.ModuleManager = module.NewManagerFromMap(map[string]appmodule.AppModule{ + genutiltypes.ModuleName: genutil.NewAppModule(appCodec, app.AuthKeeper, app.StakingKeeper, app, txConfig, genutiltypes.DefaultMessageValidator), + authtypes.ModuleName: auth.NewAppModule(appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil), + vestingtypes.ModuleName: vesting.NewAppModule(app.AuthKeeper, app.BankKeeper), + banktypes.ModuleName: bank.NewAppModule(appCodec, app.BankKeeper, app.AuthKeeper), + feegrant.ModuleName: feegrantmodule.NewAppModule(appCodec, app.FeeGrantKeeper, app.interfaceRegistry), + govtypes.ModuleName: gov.NewAppModule(appCodec, &app.GovKeeper, app.AuthKeeper, app.BankKeeper, app.PoolKeeper), + minttypes.ModuleName: mint.NewAppModule(appCodec, app.MintKeeper, app.AuthKeeper), + slashingtypes.ModuleName: slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.interfaceRegistry, cometService), + distrtypes.ModuleName: distr.NewAppModule(appCodec, app.DistrKeeper, app.StakingKeeper), + stakingtypes.ModuleName: staking.NewAppModule(appCodec, app.StakingKeeper), + upgradetypes.ModuleName: upgrade.NewAppModule(app.UpgradeKeeper), + evidencetypes.ModuleName: evidence.NewAppModule(appCodec, app.EvidenceKeeper, cometService), + paramstypes.ModuleName: params.NewAppModule(app.ParamsKeeper), + authz.ModuleName: authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.interfaceRegistry), + group.ModuleName: groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry), + consensusparamtypes.ModuleName: consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), // IBC modules - ibc.NewAppModule(appCodec, app.IBCKeeper), - transfer.NewAppModule(appCodec, app.TransferKeeper), - ibcfee.NewAppModule(appCodec, app.IBCFeeKeeper), - ica.NewAppModule(appCodec, &app.ICAControllerKeeper, &app.ICAHostKeeper), - mockModule, + ibcexported.ModuleName: ibc.NewAppModule(appCodec, app.IBCKeeper), + ibctransfertypes.ModuleName: transfer.NewAppModule(appCodec, app.TransferKeeper), + ibcfeetypes.ModuleName: ibcfee.NewAppModule(appCodec, app.IBCFeeKeeper), + icatypes.ModuleName: ica.NewAppModule(appCodec, &app.ICAControllerKeeper, &app.ICAHostKeeper), + mockModule.Name(): mockModule, // IBC light clients - wasm.NewAppModule(appCodec, app.WasmClientKeeper), // TODO(damian): see if we want to pass the lightclient module here, keeper is used in AppModule.RegisterServices etc - ibctm.NewAppModule(tmLightClientModule), - solomachine.NewAppModule(smLightClientModule), - ) + wasmtypes.ModuleName: wasm.NewAppModule(appCodec, app.WasmClientKeeper), // TODO(damian): see if we want to pass the lightclient module here, keeper is used in AppModule.RegisterServices etc + ibctm.ModuleName: ibctm.NewAppModule(tmLightClientModule), + solomachine.ModuleName: solomachine.NewAppModule(smLightClientModule), + }) app.ModuleManager.RegisterLegacyAminoCodec(legacyAmino) app.ModuleManager.RegisterInterfaces(interfaceRegistry) diff --git a/simapp/app.go b/simapp/app.go index bb90ceb6379..2ac4e0c639e 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -17,6 +17,7 @@ import ( "cosmossdk.io/client/v2/autocli" clienthelpers "cosmossdk.io/client/v2/helpers" coreaddress "cosmossdk.io/core/address" + appmodule "cosmossdk.io/core/appmodule" corestore "cosmossdk.io/core/store" "cosmossdk.io/log" storetypes "cosmossdk.io/store/types" @@ -487,6 +488,7 @@ func NewSimApp( app.IBCKeeper = ibckeeper.NewKeeper( appCodec, + signingCtx.AddressCodec(), runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibcexported.StoreKey]), logger.With(log.ModuleKey, "x/ibc")), app.GetSubspace(ibcexported.ModuleName), app.UpgradeKeeper, @@ -541,6 +543,7 @@ func NewSimApp( // IBC Fee Module keeper app.IBCFeeKeeper = ibcfeekeeper.NewKeeper( appCodec, + signingCtx.AddressCodec(), runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibcfeetypes.StoreKey]), logger.With(log.ModuleKey, fmt.Sprintf("x/%s-%s", ibcexported.ModuleName, ibcfeetypes.ModuleName))), app.IBCKeeper.ChannelKeeper, // may be replaced with IBC middleware app.IBCKeeper.ChannelKeeper, @@ -577,6 +580,7 @@ func NewSimApp( // since fee middleware will wrap the IBCKeeper for underlying application. app.TransferKeeper = ibctransferkeeper.NewKeeper( appCodec, + signingCtx.AddressCodec(), runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibctransfertypes.StoreKey]), logger.With(log.ModuleKey, fmt.Sprintf("x/%s-%s", ibcexported.ModuleName, ibctransfertypes.ModuleName))), app.GetSubspace(ibctransfertypes.ModuleName), app.IBCFeeKeeper, // ISC4 Wrapper: fee IBC middleware @@ -682,40 +686,40 @@ func NewSimApp( // NOTE: Any module instantiated in the module manager that is later modified // must be passed by reference here. - app.ModuleManager = module.NewManager( - genutil.NewAppModule(appCodec, app.AuthKeeper, app.StakingKeeper, app, txConfig, genutiltypes.DefaultMessageValidator), - accounts.NewAppModule(appCodec, app.AccountsKeeper), - auth.NewAppModule(appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil), - vesting.NewAppModule(app.AuthKeeper, app.BankKeeper), - bank.NewAppModule(appCodec, app.BankKeeper, app.AuthKeeper), - feegrantmodule.NewAppModule(appCodec, app.FeeGrantKeeper, app.interfaceRegistry), - gov.NewAppModule(appCodec, &app.GovKeeper, app.AuthKeeper, app.BankKeeper, app.PoolKeeper), - mint.NewAppModule(appCodec, app.MintKeeper, app.AuthKeeper), - slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.interfaceRegistry, cometService), - distr.NewAppModule(appCodec, app.DistrKeeper, app.StakingKeeper), - staking.NewAppModule(appCodec, app.StakingKeeper), - upgrade.NewAppModule(app.UpgradeKeeper), - params.NewAppModule(app.ParamsKeeper), - evidence.NewAppModule(appCodec, app.EvidenceKeeper, cometService), - authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.interfaceRegistry), - groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry), - nftmodule.NewAppModule(appCodec, app.NFTKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry), - consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), - circuit.NewAppModule(appCodec, app.CircuitKeeper), - protocolpool.NewAppModule(appCodec, app.PoolKeeper, app.AuthKeeper, app.BankKeeper), - epochs.NewAppModule(appCodec, app.EpochsKeeper), + app.ModuleManager = module.NewManagerFromMap(map[string]appmodule.AppModule{ + genutiltypes.ModuleName: genutil.NewAppModule(appCodec, app.AuthKeeper, app.StakingKeeper, app, txConfig, genutiltypes.DefaultMessageValidator), + accounts.ModuleName: accounts.NewAppModule(appCodec, app.AccountsKeeper), + authtypes.ModuleName: auth.NewAppModule(appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil), + vestingtypes.ModuleName: vesting.NewAppModule(app.AuthKeeper, app.BankKeeper), + banktypes.ModuleName: bank.NewAppModule(appCodec, app.BankKeeper, app.AuthKeeper), + feegrant.ModuleName: feegrantmodule.NewAppModule(appCodec, app.FeeGrantKeeper, app.interfaceRegistry), + govtypes.ModuleName: gov.NewAppModule(appCodec, &app.GovKeeper, app.AuthKeeper, app.BankKeeper, app.PoolKeeper), + minttypes.ModuleName: mint.NewAppModule(appCodec, app.MintKeeper, app.AuthKeeper), + slashingtypes.ModuleName: slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.interfaceRegistry, cometService), + distrtypes.ModuleName: distr.NewAppModule(appCodec, app.DistrKeeper, app.StakingKeeper), + stakingtypes.ModuleName: staking.NewAppModule(appCodec, app.StakingKeeper), + upgradetypes.ModuleName: upgrade.NewAppModule(app.UpgradeKeeper), + evidencetypes.ModuleName: evidence.NewAppModule(appCodec, app.EvidenceKeeper, cometService), + paramstypes.ModuleName: params.NewAppModule(app.ParamsKeeper), + authz.ModuleName: authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.interfaceRegistry), + group.ModuleName: groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry), + nft.ModuleName: nftmodule.NewAppModule(appCodec, app.NFTKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry), + consensustypes.ModuleName: consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), + circuittypes.ModuleName: circuit.NewAppModule(appCodec, app.CircuitKeeper), + pooltypes.ModuleName: protocolpool.NewAppModule(appCodec, app.PoolKeeper, app.AuthKeeper, app.BankKeeper), + epochstypes.ModuleName: epochs.NewAppModule(appCodec, app.EpochsKeeper), // IBC modules - ibc.NewAppModule(appCodec, app.IBCKeeper), - transfer.NewAppModule(appCodec, app.TransferKeeper), - ibcfee.NewAppModule(appCodec, app.IBCFeeKeeper), - ica.NewAppModule(appCodec, &app.ICAControllerKeeper, &app.ICAHostKeeper), - mockModule, + ibcexported.ModuleName: ibc.NewAppModule(appCodec, app.IBCKeeper), + ibctransfertypes.ModuleName: transfer.NewAppModule(appCodec, app.TransferKeeper), + ibcfeetypes.ModuleName: ibcfee.NewAppModule(appCodec, app.IBCFeeKeeper), + icatypes.ModuleName: ica.NewAppModule(appCodec, &app.ICAControllerKeeper, &app.ICAHostKeeper), + mockModule.Name(): mockModule, // IBC light clients - ibctm.NewAppModule(tmLightClientModule), - solomachine.NewAppModule(smLightClientModule), - ) + ibctm.ModuleName: ibctm.NewAppModule(tmLightClientModule), + solomachine.ModuleName: solomachine.NewAppModule(smLightClientModule), + }) app.ModuleManager.RegisterLegacyAminoCodec(legacyAmino) app.ModuleManager.RegisterInterfaces(interfaceRegistry) diff --git a/testing/chain.go b/testing/chain.go index 357406cb6f5..75e4d6c83c8 100644 --- a/testing/chain.go +++ b/testing/chain.go @@ -61,6 +61,7 @@ type TestChain struct { ProposedHeader cmtproto.Header // proposed (uncommitted) header for current block height TxConfig client.TxConfig Codec codec.Codec + Bech32Prefix string Vals *cmttypes.ValidatorSet NextVals *cmttypes.ValidatorSet @@ -162,6 +163,7 @@ func NewTestChainWithValSet(tb testing.TB, coord *Coordinator, chainID string, v SenderPrivKey: senderAccs[0].SenderPrivKey, SenderAccount: senderAccs[0].SenderAccount, SenderAccounts: senderAccs, + Bech32Prefix: sdk.GetConfig().GetBech32AccountAddrPrefix(), } // commit genesis block diff --git a/testing/simapp/app.go b/testing/simapp/app.go index 0825efc8d37..d7ca75cc6ed 100644 --- a/testing/simapp/app.go +++ b/testing/simapp/app.go @@ -16,6 +16,7 @@ import ( "cosmossdk.io/client/v2/autocli" clienthelpers "cosmossdk.io/client/v2/helpers" coreaddress "cosmossdk.io/core/address" + appmodule "cosmossdk.io/core/appmodule" corestore "cosmossdk.io/core/store" "cosmossdk.io/log" storetypes "cosmossdk.io/store/types" @@ -457,6 +458,7 @@ func NewSimApp( app.IBCKeeper = ibckeeper.NewKeeper( appCodec, + signingCtx.AddressCodec(), runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibcexported.StoreKey]), logger.With(log.ModuleKey, "x/ibc")), app.GetSubspace(ibcexported.ModuleName), app.UpgradeKeeper, @@ -511,6 +513,7 @@ func NewSimApp( // IBC Fee Module keeper app.IBCFeeKeeper = ibcfeekeeper.NewKeeper( appCodec, + signingCtx.AddressCodec(), runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibcfeetypes.StoreKey]), logger.With(log.ModuleKey, fmt.Sprintf("x/%s-%s", ibcexported.ModuleName, ibcfeetypes.ModuleName))), app.IBCKeeper.ChannelKeeper, // may be replaced with IBC middleware app.IBCKeeper.ChannelKeeper, @@ -547,6 +550,7 @@ func NewSimApp( // since fee middleware will wrap the IBCKeeper for underlying application. app.TransferKeeper = ibctransferkeeper.NewKeeper( appCodec, + signingCtx.AddressCodec(), runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibctransfertypes.StoreKey]), logger.With(log.ModuleKey, fmt.Sprintf("x/%s-%s", ibcexported.ModuleName, ibctransfertypes.ModuleName))), app.GetSubspace(ibctransfertypes.ModuleName), app.IBCFeeKeeper, // ISC4 Wrapper: fee IBC middleware @@ -652,39 +656,39 @@ func NewSimApp( // NOTE: Any module instantiated in the module manager that is later modified // must be passed by reference here. - app.ModuleManager = module.NewManager( - genutil.NewAppModule(appCodec, app.AuthKeeper, app.StakingKeeper, app, txConfig, genutiltypes.DefaultMessageValidator), - accounts.NewAppModule(appCodec, app.AccountsKeeper), - auth.NewAppModule(appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil), - vesting.NewAppModule(app.AuthKeeper, app.BankKeeper), - bank.NewAppModule(appCodec, app.BankKeeper, app.AuthKeeper), - feegrantmodule.NewAppModule(appCodec, app.FeeGrantKeeper, app.interfaceRegistry), - gov.NewAppModule(appCodec, &app.GovKeeper, app.AuthKeeper, app.BankKeeper, app.PoolKeeper), - mint.NewAppModule(appCodec, app.MintKeeper, app.AuthKeeper), - slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.interfaceRegistry, cometService), - distr.NewAppModule(appCodec, app.DistrKeeper, app.StakingKeeper), - staking.NewAppModule(appCodec, app.StakingKeeper), - upgrade.NewAppModule(app.UpgradeKeeper), - params.NewAppModule(app.ParamsKeeper), - evidence.NewAppModule(appCodec, app.EvidenceKeeper, cometService), - authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.interfaceRegistry), - groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry), - nftmodule.NewAppModule(appCodec, app.NFTKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry), - consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), - protocolpool.NewAppModule(appCodec, app.PoolKeeper, app.AuthKeeper, app.BankKeeper), - epochs.NewAppModule(appCodec, app.EpochsKeeper), + app.ModuleManager = module.NewManagerFromMap(map[string]appmodule.AppModule{ + genutiltypes.ModuleName: genutil.NewAppModule(appCodec, app.AuthKeeper, app.StakingKeeper, app, txConfig, genutiltypes.DefaultMessageValidator), + accounts.ModuleName: accounts.NewAppModule(appCodec, app.AccountsKeeper), + authtypes.ModuleName: auth.NewAppModule(appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil), + vestingtypes.ModuleName: vesting.NewAppModule(app.AuthKeeper, app.BankKeeper), + banktypes.ModuleName: bank.NewAppModule(appCodec, app.BankKeeper, app.AuthKeeper), + feegrant.ModuleName: feegrantmodule.NewAppModule(appCodec, app.FeeGrantKeeper, app.interfaceRegistry), + govtypes.ModuleName: gov.NewAppModule(appCodec, &app.GovKeeper, app.AuthKeeper, app.BankKeeper, app.PoolKeeper), + minttypes.ModuleName: mint.NewAppModule(appCodec, app.MintKeeper, app.AuthKeeper), + slashingtypes.ModuleName: slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.interfaceRegistry, cometService), + distrtypes.ModuleName: distr.NewAppModule(appCodec, app.DistrKeeper, app.StakingKeeper), + stakingtypes.ModuleName: staking.NewAppModule(appCodec, app.StakingKeeper), + upgradetypes.ModuleName: upgrade.NewAppModule(app.UpgradeKeeper), + paramstypes.ModuleName: params.NewAppModule(app.ParamsKeeper), + evidencetypes.ModuleName: evidence.NewAppModule(appCodec, app.EvidenceKeeper, cometService), + authz.ModuleName: authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.interfaceRegistry), + group.ModuleName: groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry), + nft.ModuleName: nftmodule.NewAppModule(appCodec, app.NFTKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry), + consensustypes.ModuleName: consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), + pooltypes.ModuleName: protocolpool.NewAppModule(appCodec, app.PoolKeeper, app.AuthKeeper, app.BankKeeper), + epochstypes.ModuleName: epochs.NewAppModule(appCodec, app.EpochsKeeper), // IBC modules - ibc.NewAppModule(appCodec, app.IBCKeeper), - transfer.NewAppModule(appCodec, app.TransferKeeper), - ibcfee.NewAppModule(appCodec, app.IBCFeeKeeper), - ica.NewAppModule(appCodec, &app.ICAControllerKeeper, &app.ICAHostKeeper), - mockModule, + ibcexported.ModuleName: ibc.NewAppModule(appCodec, app.IBCKeeper), + ibctransfertypes.ModuleName: transfer.NewAppModule(appCodec, app.TransferKeeper), + ibcfeetypes.ModuleName: ibcfee.NewAppModule(appCodec, app.IBCFeeKeeper), + icatypes.ModuleName: ica.NewAppModule(appCodec, &app.ICAControllerKeeper, &app.ICAHostKeeper), + mockModule.Name(): mockModule, // IBC light clients - ibctm.NewAppModule(tmLightClientModule), - solomachine.NewAppModule(smLightClientModule), - ) + ibctm.ModuleName: ibctm.NewAppModule(tmLightClientModule), + solomachine.ModuleName: solomachine.NewAppModule(smLightClientModule), + }) app.ModuleManager.RegisterLegacyAminoCodec(legacyAmino) app.ModuleManager.RegisterInterfaces(interfaceRegistry)