From f9c4f75f767ce58940d3252bc403f0a1ec512168 Mon Sep 17 00:00:00 2001 From: Sai Kumar Date: Wed, 18 May 2022 12:52:25 +0530 Subject: [PATCH] refactor: add ibc-go to app --- app/app.go | 113 ++++++++++++++++++++++++++++------------------------- go.mod | 4 +- go.sum | 4 +- 3 files changed, 64 insertions(+), 57 deletions(-) diff --git a/app/app.go b/app/app.go index 1db4865c..e5b0b0c0 100644 --- a/app/app.go +++ b/app/app.go @@ -94,22 +94,19 @@ import ( "github.com/tendermint/tendermint/libs/log" tmos "github.com/tendermint/tendermint/libs/os" - // "github.com/cosmos/ibc-go/v3/modules/apps/transfer" - - // "github.com/cosmos/ibc-go/v3/modules/apps/transfer" - // ibctransferkeeper "github.com/cosmos/ibc-go/v3/modules/apps/transfer/keeper" - // ibctransfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" - // ibc "github.com/cosmos/ibc-go/v3/modules/core" - // ibcclient "github.com/cosmos/ibc-go/v3/modules/core/02-client" - // ibcclientclient "github.com/cosmos/ibc-go/v3/modules/core/02-client/client" - // porttypes "github.com/cosmos/ibc-go/v3/modules/core/05-port/types" - // ibchost "github.com/cosmos/ibc-go/v3/modules/core/24-host" - // ibckeeper "github.com/cosmos/ibc-go/v3/modules/core/keeper" + "github.com/cosmos/ibc-go/v3/modules/apps/transfer" + ibctransferkeeper "github.com/cosmos/ibc-go/v3/modules/apps/transfer/keeper" + ibctransfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" + ibc "github.com/cosmos/ibc-go/v3/modules/core" + ibcclient "github.com/cosmos/ibc-go/v3/modules/core/02-client" + ibcclientclient "github.com/cosmos/ibc-go/v3/modules/core/02-client/client" + porttypes "github.com/cosmos/ibc-go/v3/modules/core/05-port/types" + ibchost "github.com/cosmos/ibc-go/v3/modules/core/24-host" + ibckeeper "github.com/cosmos/ibc-go/v3/modules/core/keeper" // unnamed import of statik for swagger UI support _ "github.com/tharsis/ethermint/client/docs/statik" - // "github.com/tharsis/ethermint/app/ante" srvflags "github.com/tharsis/ethermint/server/flags" ethermint "github.com/tharsis/ethermint/types" "github.com/tharsis/ethermint/x/evm" @@ -162,13 +159,13 @@ var ( mint.AppModuleBasic{}, distr.AppModuleBasic{}, gov.NewAppModuleBasic( - []govclient.ProposalHandler{paramsclient.ProposalHandler, distrclient.ProposalHandler, upgradeclient.LegacyProposalHandler, upgradeclient.LegacyCancelProposalHandler}, - // ibcclientclient.UpdateClientProposalHandler, ibcclientclient.UpgradeProposalHandler, + []govclient.ProposalHandler{paramsclient.ProposalHandler, distrclient.ProposalHandler, upgradeclient.LegacyProposalHandler, upgradeclient.LegacyCancelProposalHandler, + ibcclientclient.UpdateClientProposalHandler, ibcclientclient.UpgradeProposalHandler}, ), params.AppModuleBasic{}, crisis.AppModuleBasic{}, slashing.AppModuleBasic{}, - // ibc.AppModuleBasic{}, + ibc.AppModuleBasic{}, authzmodule.AppModuleBasic{}, feegrantmodule.AppModuleBasic{}, upgrade.AppModuleBasic{}, @@ -186,13 +183,13 @@ var ( // module account permissions maccPerms = map[string][]string{ - authtypes.FeeCollectorName: nil, - distrtypes.ModuleName: nil, - minttypes.ModuleName: {authtypes.Minter}, - stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, - stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, - govtypes.ModuleName: {authtypes.Burner}, - // ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + authtypes.FeeCollectorName: nil, + distrtypes.ModuleName: nil, + minttypes.ModuleName: {authtypes.Minter}, + stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, + stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, + govtypes.ModuleName: {authtypes.Burner}, + ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, evmtypes.ModuleName: {authtypes.Minter, authtypes.Burner}, // used for secure addition and subtraction of balance using module account auctiontypes.ModuleName: nil, auctiontypes.AuctionBurnModuleAccountName: nil, @@ -245,9 +242,9 @@ type EthermintApp struct { ParamsKeeper paramskeeper.Keeper FeeGrantKeeper feegrantkeeper.Keeper AuthzKeeper authzkeeper.Keeper - // IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly - EvidenceKeeper evidencekeeper.Keeper - // TransferKeeper ibctransferkeeper.Keeper + IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly + EvidenceKeeper evidencekeeper.Keeper + TransferKeeper ibctransferkeeper.Keeper // make scoped keepers public for test purposes ScopedIBCKeeper capabilitykeeper.ScopedKeeper @@ -299,7 +296,7 @@ func NewEthermintApp( evidencetypes.StoreKey, capabilitytypes.StoreKey, authzkeeper.StoreKey, // ibc keys - // ibchost.StoreKey, ibctransfertypes.StoreKey, + ibchost.StoreKey, ibctransfertypes.StoreKey, // ethermint keys evmtypes.StoreKey, feemarkettypes.StoreKey, // chiba-clonk keys @@ -386,8 +383,8 @@ func NewEthermintApp( // add capability keeper and ScopeToModule for ibc module app.CapabilityKeeper = capabilitykeeper.NewKeeper(appCodec, keys[capabilitytypes.StoreKey], memKeys[capabilitytypes.MemStoreKey]) - // scopedIBCKeeper := app.CapabilityKeeper.ScopeToModule(ibchost.ModuleName) - // scopedTransferKeeper := app.CapabilityKeeper.ScopeToModule(ibctransfertypes.ModuleName) + scopedIBCKeeper := app.CapabilityKeeper.ScopeToModule(ibchost.ModuleName) + scopedTransferKeeper := app.CapabilityKeeper.ScopeToModule(ibctransfertypes.ModuleName) // Applications that wish to enforce statically created ScopedKeepers should call `Seal` after creating // their scoped modules in `NewApp` with `ScopeToModule` @@ -462,17 +459,18 @@ func NewEthermintApp( tracer, ) - // // Create IBC Keeper - // app.IBCKeeper = ibckeeper.NewKeeper( - // appCodec, keys[ibchost.StoreKey], app.GetSubspace(ibchost.ModuleName), app.StakingKeeper, app.UpgradeKeeper, scopedIBCKeeper, - // ) + // Create IBC Keeper + app.IBCKeeper = ibckeeper.NewKeeper( + appCodec, keys[ibchost.StoreKey], app.GetSubspace(ibchost.ModuleName), app.StakingKeeper, app.UpgradeKeeper, scopedIBCKeeper, + ) // register the proposal types govRouter := govv1beta1.NewRouter() govRouter.AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler). AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)). AddRoute(distrtypes.RouterKey, distr.NewCommunityPoolSpendProposalHandler(app.DistrKeeper)). - AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.UpgradeKeeper)) + AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.UpgradeKeeper)). + AddRoute(ibchost.RouterKey, ibcclient.NewClientProposalHandler(app.IBCKeeper.ClientKeeper)) govConfig := govtypes.DefaultConfig() /* @@ -491,19 +489,19 @@ func NewEthermintApp( ), ) - // // Create Transfer Keepers - // app.TransferKeeper = ibctransferkeeper.NewKeeper( - // appCodec, keys[ibctransfertypes.StoreKey], app.GetSubspace(ibctransfertypes.ModuleName), - // app.IBCKeeper.ChannelKeeper, app.IBCKeeper.ChannelKeeper, &app.IBCKeeper.PortKeeper, - // app.AccountKeeper, app.BankKeeper, scopedTransferKeeper, - // ) - // transferModule := transfer.NewAppModule(app.TransferKeeper) - // transferIBCModule := transfer.NewIBCModule(app.TransferKeeper) + // Create Transfer Keepers + app.TransferKeeper = ibctransferkeeper.NewKeeper( + appCodec, keys[ibctransfertypes.StoreKey], app.GetSubspace(ibctransfertypes.ModuleName), + app.IBCKeeper.ChannelKeeper, app.IBCKeeper.ChannelKeeper, &app.IBCKeeper.PortKeeper, + app.AccountKeeper, app.BankKeeper, scopedTransferKeeper, + ) + transferModule := transfer.NewAppModule(app.TransferKeeper) + transferIBCModule := transfer.NewIBCModule(app.TransferKeeper) - // Create static IBC router, add transfer route, then set and seal it - // ibcRouter := porttypes.NewRouter() - // ibcRouter.AddRoute(ibctransfertypes.ModuleName, transferIBCModule) - // app.IBCKeeper.SetRouter(ibcRouter) + //Create static IBC router, add transfer route, then set and seal it + ibcRouter := porttypes.NewRouter() + ibcRouter.AddRoute(ibctransfertypes.ModuleName, transferIBCModule) + app.IBCKeeper.SetRouter(ibcRouter) // create evidence keeper with router evidenceKeeper := evidencekeeper.NewKeeper( @@ -541,9 +539,9 @@ func NewEthermintApp( params.NewAppModule(app.ParamsKeeper), feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), - // ibc modules - // ibc.NewAppModule(app.IBCKeeper), + ibc.NewAppModule(app.IBCKeeper), + transferModule, // Ethermint app modules evm.NewAppModule(app.EvmKeeper, app.AccountKeeper), feemarket.NewAppModule(app.FeeMarketKeeper), @@ -569,7 +567,9 @@ func NewEthermintApp( slashingtypes.ModuleName, evidencetypes.ModuleName, stakingtypes.ModuleName, + ibchost.ModuleName, // no-op modules + ibctransfertypes.ModuleName, authtypes.ModuleName, banktypes.ModuleName, govtypes.ModuleName, @@ -593,6 +593,9 @@ func NewEthermintApp( evmtypes.ModuleName, feemarkettypes.ModuleName, // no-op modules + // no-op modules + ibchost.ModuleName, + ibctransfertypes.ModuleName, capabilitytypes.ModuleName, authtypes.ModuleName, banktypes.ModuleName, @@ -627,8 +630,10 @@ func NewEthermintApp( slashingtypes.ModuleName, govtypes.ModuleName, minttypes.ModuleName, + ibchost.ModuleName, genutiltypes.ModuleName, evidencetypes.ModuleName, + ibctransfertypes.ModuleName, authz.ModuleName, feegrant.ModuleName, paramstypes.ModuleName, @@ -671,7 +676,8 @@ func NewEthermintApp( evidence.NewAppModule(app.EvidenceKeeper), feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), - // ibc.NewAppModule(app.IBCKeeper), + ibc.NewAppModule(app.IBCKeeper), + transferModule, evm.NewAppModule(app.EvmKeeper, app.AccountKeeper), feemarket.NewAppModule(app.FeeMarketKeeper), ) @@ -682,8 +688,6 @@ func NewEthermintApp( app.SetInitChainer(app.InitChainer) app.SetBeginBlocker(app.BeginBlocker) - // app.ScopedIBCKeeper = scopedIBCKeeper - // app.ScopedTransferKeeper = scopedTransferKeeper maxGasWanted := cast.ToUint64(appOpts.Get(srvflags.EVMMaxTxGasWanted)) options := middleware.HandlerOptions{ Codec: app.appCodec, @@ -704,6 +708,9 @@ func NewEthermintApp( app.setTxHandler(options, encodingConfig.TxConfig, cast.ToStringSlice(appOpts.Get(server.FlagIndexEvents))) app.SetEndBlocker(app.EndBlocker) + app.ScopedIBCKeeper = scopedIBCKeeper + app.ScopedTransferKeeper = scopedTransferKeeper + return app } @@ -828,8 +835,8 @@ func (app *EthermintApp) SimulationManager() *module.SimulationManager { // API server. func (app *EthermintApp) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConfig) { clientCtx := apiSvr.ClientCtx + // NOTE: in v0.46 legacy routes are removed // rpc.RegisterRoutes(clientCtx, apiSvr.Router) - // evmrest.RegisterTxRoutes(clientCtx, apiSvr.Router) // Register new tx routes from grpc-gateway. @@ -891,8 +898,8 @@ func initParamsKeeper( paramsKeeper.Subspace(slashingtypes.ModuleName) paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govv1.ParamKeyTable()) paramsKeeper.Subspace(crisistypes.ModuleName) - // paramsKeeper.Subspace(ibctransfertypes.ModuleName) - // paramsKeeper.Subspace(ibchost.ModuleName) + paramsKeeper.Subspace(ibctransfertypes.ModuleName) + paramsKeeper.Subspace(ibchost.ModuleName) // ethermint subspaces paramsKeeper.Subspace(evmtypes.ModuleName) paramsKeeper.Subspace(feemarkettypes.ModuleName) diff --git a/go.mod b/go.mod index 57221bba..111a5f42 100644 --- a/go.mod +++ b/go.mod @@ -6,10 +6,10 @@ require ( github.com/99designs/gqlgen v0.17.2 github.com/btcsuite/btcd v0.22.0-beta github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce - github.com/cosmos/cosmos-sdk v0.46.0-alpha3.0.20220325134903-a69764f9f01b + github.com/cosmos/cosmos-sdk v0.46.0-beta2 github.com/cosmos/cosmos-sdk/db v1.0.0-beta.1 github.com/cosmos/go-bip39 v1.0.0 - github.com/cosmos/ibc-go/v3 v3.0.0-alpha1.0.20220331200732-34f03df4aa59 + github.com/cosmos/ibc-go/v3 v3.0.0-alpha1.0.20220517190049-c4ce2b908a1e github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set v1.8.0 github.com/ethereum/go-ethereum v1.10.17 diff --git a/go.sum b/go.sum index fe0acea0..c4f6b0e9 100644 --- a/go.sum +++ b/go.sum @@ -303,8 +303,8 @@ github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4 github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= github.com/cosmos/iavl v0.18.0 h1:02ur4vnalMR2GuWCFNkuseUcl/BCVmg9tOeHOGiZOkE= github.com/cosmos/iavl v0.18.0/go.mod h1:L0VZHfq0tqMNJvXlslGExaaiZM7eSm+90Vh9QUbp6j4= -github.com/cosmos/ibc-go/v3 v3.0.0-alpha1.0.20220331200732-34f03df4aa59 h1:JArEGS53oKuhFXFKbgOxabN2AcK9nHieCMwYSFe5l4o= -github.com/cosmos/ibc-go/v3 v3.0.0-alpha1.0.20220331200732-34f03df4aa59/go.mod h1:b/e8JFZRZHf0p5xQkOrBbtEO50nthrEEQXAnOaNoD6Q= +github.com/cosmos/ibc-go/v3 v3.0.0-alpha1.0.20220517190049-c4ce2b908a1e h1:Ib7epelzyhChHJWym0VFX8rr5HO0iGjV9jpX3UiXw4k= +github.com/cosmos/ibc-go/v3 v3.0.0-alpha1.0.20220517190049-c4ce2b908a1e/go.mod h1:fZZsQ09aFdP1RxMTTi1s6NNhxT8LbZTALHEPc/Gd0s0= github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 h1:DdzS1m6o/pCqeZ8VOAit/gyATedRgjvkVI+UCrLpyuU= github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76/go.mod h1:0mkLWIoZuQ7uBoospo5Q9zIpqq6rYCPJDSUdeCJvPM8= github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4=