Skip to content

Commit

Permalink
feat(app): add denommetadata IBC middleware to app (#94)
Browse files Browse the repository at this point in the history
  • Loading branch information
zale144 authored Jul 4, 2024
1 parent 7b60ede commit 9a4756e
Show file tree
Hide file tree
Showing 5 changed files with 146 additions and 120 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -298,4 +298,4 @@ To setup push hooks, run the following command:

```sh
./scripts/setup_push_hooks.sh
```
```
92 changes: 50 additions & 42 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,6 @@ import (
epochskeeper "github.com/dymensionxyz/dymension-rdk/x/epochs/keeper"
epochstypes "github.com/dymensionxyz/dymension-rdk/x/epochs/types"

"github.com/dymensionxyz/dymension-rdk/x/denommetadata"
denommetadatamodulekeeper "github.com/dymensionxyz/dymension-rdk/x/denommetadata/keeper"
denommetadatamoduletypes "github.com/dymensionxyz/dymension-rdk/x/denommetadata/types"

hubgenesis "github.com/dymensionxyz/dymension-rdk/x/hub-genesis"
hubgenkeeper "github.com/dymensionxyz/dymension-rdk/x/hub-genesis/keeper"
hubgentypes "github.com/dymensionxyz/dymension-rdk/x/hub-genesis/types"
Expand Down Expand Up @@ -126,6 +122,12 @@ import (

distr "github.com/dymensionxyz/dymension-rdk/x/dist"
distrkeeper "github.com/dymensionxyz/dymension-rdk/x/dist/keeper"

"github.com/dymensionxyz/dymension-rdk/x/denommetadata"
denommetadatamoduletypes "github.com/dymensionxyz/dymension-rdk/x/denommetadata/types"
"github.com/dymensionxyz/dymension-rdk/x/hub"
hubkeeper "github.com/dymensionxyz/dymension-rdk/x/hub/keeper"
hubtypes "github.com/dymensionxyz/dymension-rdk/x/hub/types"
)

const (
Expand All @@ -144,7 +146,7 @@ var (
epochstypes.StoreKey, hubgentypes.StoreKey,
ibctransfertypes.StoreKey, capabilitytypes.StoreKey,
wasmtypes.StoreKey,
denommetadatamoduletypes.StoreKey,
hubtypes.StoreKey,
}
)

Expand Down Expand Up @@ -189,22 +191,21 @@ var (
vesting.AppModuleBasic{},
hubgenesis.AppModuleBasic{},
wasm.AppModuleBasic{},
denommetadata.AppModuleBasic{},
hub.AppModuleBasic{},
)

// module account permissions
maccPerms = map[string][]string{
authtypes.FeeCollectorName: nil,
authz.ModuleName: 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},
wasmtypes.ModuleName: {authtypes.Burner},
hubgentypes.ModuleName: {authtypes.Burner},
denommetadatamoduletypes.ModuleName: nil,
authtypes.FeeCollectorName: nil,
authz.ModuleName: 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},
wasmtypes.ModuleName: {authtypes.Burner},
hubgentypes.ModuleName: {authtypes.Burner},
}
)

Expand Down Expand Up @@ -263,7 +264,7 @@ type App struct {
ScopedTransferKeeper capabilitykeeper.ScopedKeeper
ScopedWasmKeeper capabilitykeeper.ScopedKeeper

DenomMetadataKeeper denommetadatamodulekeeper.Keeper
HubKeeper hubkeeper.Keeper

// mm is the module manager
mm *module.Manager
Expand Down Expand Up @@ -451,38 +452,46 @@ func NewRollapp(
),
)

denomMetadataHooks := denommetadatamoduletypes.NewMultiDenommetadataHooks()
app.HubKeeper = hubkeeper.NewKeeper(
appCodec,
keys[hubtypes.StoreKey],
)

app.HubGenesisKeeper = hubgenkeeper.NewKeeper(
appCodec,
keys[hubgentypes.StoreKey],
app.GetSubspace(hubgentypes.ModuleName),
app.AccountKeeper,
)

denomMetadataMiddleware := denommetadata.NewICS4Wrapper(
app.IBCKeeper.ChannelKeeper,
app.HubKeeper,
app.BankKeeper,
app.HubGenesisKeeper.GetState,
)

// Create Transfer Keepers
app.TransferKeeper = ibctransferkeeper.NewKeeper(
appCodec,
keys[ibctransfertypes.StoreKey],
app.GetSubspace(ibctransfertypes.ModuleName),
app.IBCKeeper.ChannelKeeper,
denomMetadataMiddleware,
app.IBCKeeper.ChannelKeeper,
&app.IBCKeeper.PortKeeper,
app.AccountKeeper,
app.BankKeeper,
scopedTransferKeeper,
)
transferIBCModule := ibctransfer.NewIBCModule(app.TransferKeeper)

app.DenomMetadataKeeper = denommetadatamodulekeeper.NewKeeper(
appCodec,
keys[denommetadatamoduletypes.StoreKey],
var transferIBCModule ibcporttypes.IBCModule
transferIBCModule = ibctransfer.NewIBCModule(app.TransferKeeper)
transferIBCModule = denommetadata.NewIBCModule(
transferIBCModule,
app.BankKeeper,
app.TransferKeeper,
denomMetadataHooks,
app.GetSubspace(denommetadatamoduletypes.ModuleName),
)

app.HubGenesisKeeper = hubgenkeeper.NewKeeper(
appCodec,
keys[hubgentypes.StoreKey],
app.GetSubspace(hubgentypes.ModuleName),
app.IBCKeeper.ChannelKeeper,
app.BankKeeper,
app.AccountKeeper,
app.HubKeeper,
denommetadatamoduletypes.NewMultiDenommetadataHooks(),
)

wasmDir := filepath.Join(homePath, "wasm")
Expand Down Expand Up @@ -554,8 +563,8 @@ func NewRollapp(
ibc.NewAppModule(app.IBCKeeper),
ibctransfer.NewAppModule(app.TransferKeeper),
upgrade.NewAppModule(app.UpgradeKeeper),
hubgenesis.NewAppModule(appCodec, app.HubGenesisKeeper, app.AccountKeeper),
denommetadata.NewAppModule(app.DenomMetadataKeeper, app.BankKeeper),
hubgenesis.NewAppModule(appCodec, app.HubGenesisKeeper),
hub.NewAppModule(appCodec, app.HubKeeper),
}

app.mm = module.NewManager(modules...)
Expand Down Expand Up @@ -584,7 +593,7 @@ func NewRollapp(
epochstypes.ModuleName,
paramstypes.ModuleName,
hubgentypes.ModuleName,
denommetadatamoduletypes.ModuleName,
hubtypes.ModuleName,
wasm.ModuleName,
}
app.mm.SetOrderBeginBlockers(beginBlockersList...)
Expand All @@ -608,7 +617,7 @@ func NewRollapp(
ibchost.ModuleName,
ibctransfertypes.ModuleName,
hubgentypes.ModuleName,
denommetadatamoduletypes.ModuleName,
hubtypes.ModuleName,
wasm.ModuleName,
}
app.mm.SetOrderEndBlockers(endBlockersList...)
Expand Down Expand Up @@ -638,7 +647,7 @@ func NewRollapp(
ibctransfertypes.ModuleName,
feegrant.ModuleName,
hubgentypes.ModuleName,
denommetadatamoduletypes.ModuleName,
hubtypes.ModuleName,
wasm.ModuleName,
}
app.mm.SetOrderInitGenesis(initGenesisList...)
Expand Down Expand Up @@ -913,7 +922,7 @@ func (app *App) GetStakingKeeper() ibctestingtypes.StakingKeeper {
return app.StakingKeeper
}

// GetStakingKeeper implements the TestingApp interface.
// GetStakingKeeperSDK implements the TestingApp interface.
func (app *App) GetStakingKeeperSDK() stakingkeeper.Keeper {
return app.StakingKeeper
}
Expand Down Expand Up @@ -969,7 +978,6 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino
paramsKeeper.Subspace(ibctransfertypes.ModuleName)
paramsKeeper.Subspace(ibchost.ModuleName)
paramsKeeper.Subspace(hubgentypes.ModuleName)
paramsKeeper.Subspace(denommetadatamoduletypes.ModuleName)

paramsKeeper.Subspace(wasmtypes.ModuleName)
return paramsKeeper
Expand Down
57 changes: 31 additions & 26 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
module github.com/dymensionxyz/rollapp-wasm

go 1.22.2

toolchain go1.22.3
go 1.22.4

require (
cosmossdk.io/errors v1.0.1
Expand All @@ -11,7 +9,7 @@ require (
github.com/bcdevtools/wasm-block-explorer-rpc-cosmos v1.1.1
github.com/cosmos/cosmos-sdk v0.46.16
github.com/cosmos/ibc-go/v6 v6.3.0
github.com/dymensionxyz/dymension-rdk v1.6.1-rc01
github.com/dymensionxyz/dymension-rdk v1.6.1-0.20240625180315-c98e3e67c156
github.com/dymensionxyz/dymint v1.1.3-rc04
github.com/ethereum/go-ethereum v1.12.0
github.com/evmos/evmos/v12 v12.1.6
Expand All @@ -23,15 +21,15 @@ require (
github.com/spf13/cobra v1.8.0
github.com/tendermint/tendermint v0.34.29
github.com/tendermint/tm-db v0.6.8-0.20220506192307-f628bb5dc95b
google.golang.org/grpc v1.61.0
google.golang.org/grpc v1.64.0
)

require (
cloud.google.com/go v0.111.0 // indirect
cloud.google.com/go/compute v1.23.3 // indirect
cloud.google.com/go v0.112.1 // indirect
cloud.google.com/go/compute v1.25.1 // indirect
cloud.google.com/go/compute/metadata v0.2.3 // indirect
cloud.google.com/go/iam v1.1.5 // indirect
cloud.google.com/go/storage v1.30.1 // indirect
cloud.google.com/go/iam v1.1.6 // indirect
cloud.google.com/go/storage v1.38.0 // indirect
code.cloudfoundry.org/go-diodes v0.0.0-20220725190411-383eb6634c40 // indirect
cosmossdk.io/math v1.3.0 // indirect
filippo.io/edwards25519 v1.0.0-rc.1 // indirect
Expand Down Expand Up @@ -88,6 +86,7 @@ require (
github.com/cosmos/ledger-cosmos-go v0.12.4 // indirect
github.com/creachadair/taskgroup v0.3.2 // indirect
github.com/danieljoos/wincred v1.1.2 // indirect
github.com/danwt/gerr v1.0.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect
github.com/deckarep/golang-set v1.8.0 // indirect
Expand All @@ -106,8 +105,10 @@ require (
github.com/dvsekhvalnov/jose2go v1.5.0 // indirect
github.com/dymensionxyz/cosmosclient v0.4.2-beta // indirect
github.com/dymensionxyz/dymension/v3 v3.1.0-rc03.0.20240411195658-f7cd96f53b56 // indirect
github.com/dymensionxyz/gerr-cosmos v1.0.0 // indirect
github.com/dymensionxyz/sdk-utils v0.1.1 // indirect
github.com/elastic/gosigar v0.14.2 // indirect
github.com/felixge/httpsnoop v1.0.2 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/filecoin-project/go-jsonrpc v0.3.1 // indirect
github.com/flynn/noise v1.1.0 // indirect
github.com/francoispqt/gojay v1.2.13 // indirect
Expand All @@ -117,7 +118,7 @@ require (
github.com/go-kit/kit v0.12.0 // indirect
github.com/go-kit/log v0.2.1 // indirect
github.com/go-logfmt/logfmt v0.5.1 // indirect
github.com/go-logr/logr v1.3.0 // indirect
github.com/go-logr/logr v1.4.1 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/go-stack/stack v1.8.1 // indirect
Expand All @@ -126,9 +127,9 @@ require (
github.com/godbus/dbus/v5 v5.1.0 // indirect
github.com/gogo/gateway v1.1.0 // indirect
github.com/gogo/protobuf v1.3.3 // indirect
github.com/golang/glog v1.1.2 // indirect
github.com/golang/glog v1.2.0 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
github.com/google/btree v1.1.2 // indirect
github.com/google/flatbuffers v2.0.8+incompatible // indirect
Expand All @@ -138,9 +139,9 @@ require (
github.com/google/orderedcode v0.0.1 // indirect
github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 // indirect
github.com/google/s2a-go v0.1.7 // indirect
github.com/google/uuid v1.4.0 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
github.com/googleapis/gax-go/v2 v2.12.2 // indirect
github.com/gorilla/handlers v1.5.1 // indirect
github.com/gorilla/rpc v1.2.0 // indirect
github.com/gorilla/websocket v1.5.1 // indirect
Expand Down Expand Up @@ -254,7 +255,7 @@ require (
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/spf13/viper v1.15.0 // indirect
github.com/stretchr/testify v1.8.4 // indirect
github.com/stretchr/testify v1.9.0 // indirect
github.com/subosito/gotenv v1.4.2 // indirect
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
github.com/tendermint/go-amino v0.16.0 // indirect
Expand All @@ -273,9 +274,11 @@ require (
github.com/zondax/ledger-go v0.14.3 // indirect
go.etcd.io/bbolt v1.3.8 // indirect
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/otel v1.19.0 // indirect
go.opentelemetry.io/otel/metric v1.19.0 // indirect
go.opentelemetry.io/otel/trace v1.19.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
go.opentelemetry.io/otel v1.24.0 // indirect
go.opentelemetry.io/otel/metric v1.24.0 // indirect
go.opentelemetry.io/otel/trace v1.24.0 // indirect
go.uber.org/dig v1.17.1 // indirect
go.uber.org/fx v1.20.1 // indirect
go.uber.org/mock v0.4.0 // indirect
Expand All @@ -285,20 +288,21 @@ require (
golang.org/x/exp v0.0.0-20240213143201-ec583247a57a // indirect
golang.org/x/mod v0.15.0 // indirect
golang.org/x/net v0.24.0 // indirect
golang.org/x/oauth2 v0.16.0 // indirect
golang.org/x/oauth2 v0.18.0 // indirect
golang.org/x/sync v0.6.0 // indirect
golang.org/x/sys v0.19.0 // indirect
golang.org/x/term v0.19.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/time v0.5.0 // indirect
golang.org/x/tools v0.18.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
gonum.org/v1/gonum v0.13.0 // indirect
google.golang.org/api v0.149.0 // indirect
google.golang.org/api v0.169.0 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe // indirect
google.golang.org/protobuf v1.32.0 // indirect
google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect
google.golang.org/protobuf v1.33.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
Expand All @@ -320,6 +324,7 @@ replace (
github.com/gorilla/rpc => github.com/dymensionxyz/rpc v1.3.1
github.com/libp2p/go-libp2p-kad-dht => github.com/libp2p/go-libp2p-kad-dht v0.25.2
github.com/libp2p/go-libp2p-pubsub => github.com/dymensionxyz/go-libp2p-pubsub v0.0.0-20240513081713-3ecd83c19ea2
github.com/osmosis-labs/osmosis/v15 => github.com/dymensionxyz/osmosis/v15 v15.2.0-dymension-v1.1.3
// replace broken goleveldb
github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
// use cometbft
Expand Down
Loading

0 comments on commit 9a4756e

Please sign in to comment.