2021-11-16 03:23:52 -08:00
|
|
|
package keeper
|
|
|
|
|
|
|
|
import (
|
2022-10-14 15:12:57 -07:00
|
|
|
"io/ioutil"
|
2021-11-16 03:23:52 -08:00
|
|
|
"testing"
|
2022-10-14 15:12:57 -07:00
|
|
|
"time"
|
2021-11-16 03:23:52 -08:00
|
|
|
|
2022-10-14 15:12:57 -07:00
|
|
|
"github.com/CosmWasm/wasmd/x/wasm"
|
|
|
|
wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper"
|
|
|
|
wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types"
|
|
|
|
"github.com/cosmos/cosmos-sdk/baseapp"
|
2021-11-16 03:23:52 -08:00
|
|
|
"github.com/cosmos/cosmos-sdk/store"
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
2022-10-14 15:12:57 -07:00
|
|
|
"github.com/cosmos/cosmos-sdk/version"
|
|
|
|
authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
|
|
|
|
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
|
|
|
|
capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper"
|
|
|
|
capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types"
|
2022-10-21 13:28:04 -07:00
|
|
|
"github.com/wormhole-foundation/wormchain/app"
|
|
|
|
"github.com/wormhole-foundation/wormchain/app/wasm_handlers"
|
|
|
|
"github.com/wormhole-foundation/wormchain/x/wormhole/keeper"
|
|
|
|
"github.com/wormhole-foundation/wormchain/x/wormhole/types"
|
2022-10-14 15:12:57 -07:00
|
|
|
|
|
|
|
paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
|
|
|
|
paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
|
2021-11-16 03:23:52 -08:00
|
|
|
"github.com/stretchr/testify/require"
|
2022-10-14 15:12:57 -07:00
|
|
|
"github.com/tendermint/spm/cosmoscmd"
|
2021-11-16 03:23:52 -08:00
|
|
|
"github.com/tendermint/tendermint/libs/log"
|
|
|
|
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
|
|
|
|
tmdb "github.com/tendermint/tm-db"
|
|
|
|
)
|
|
|
|
|
|
|
|
func WormholeKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) {
|
2023-02-13 19:01:46 -08:00
|
|
|
k, _, _, ctx := WormholeKeeperAndWasmd(t)
|
|
|
|
return k, ctx
|
|
|
|
}
|
|
|
|
|
|
|
|
func WormholeKeeperAndWasmd(t testing.TB) (*keeper.Keeper, wasmkeeper.Keeper, *wasmkeeper.PermissionedKeeper, sdk.Context) {
|
2022-10-14 15:12:57 -07:00
|
|
|
keys := sdk.NewKVStoreKeys(
|
|
|
|
authtypes.StoreKey,
|
|
|
|
paramstypes.StoreKey,
|
|
|
|
capabilitytypes.StoreKey,
|
|
|
|
types.StoreKey,
|
|
|
|
wasmtypes.StoreKey,
|
|
|
|
)
|
|
|
|
tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey)
|
|
|
|
memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey, types.MemStoreKey)
|
|
|
|
maccPerms := map[string][]string{}
|
2021-11-16 03:23:52 -08:00
|
|
|
|
|
|
|
db := tmdb.NewMemDB()
|
|
|
|
stateStore := store.NewCommitMultiStore(db)
|
2022-10-14 15:12:57 -07:00
|
|
|
stateStore.MountStoreWithDB(keys[authtypes.StoreKey], sdk.StoreTypeIAVL, db)
|
|
|
|
stateStore.MountStoreWithDB(keys[paramstypes.StoreKey], sdk.StoreTypeIAVL, db)
|
|
|
|
stateStore.MountStoreWithDB(keys[capabilitytypes.StoreKey], sdk.StoreTypeIAVL, db)
|
|
|
|
stateStore.MountStoreWithDB(keys[types.StoreKey], sdk.StoreTypeIAVL, db)
|
|
|
|
stateStore.MountStoreWithDB(keys[wasmtypes.StoreKey], sdk.StoreTypeIAVL, db)
|
|
|
|
stateStore.MountStoreWithDB(memKeys[types.MemStoreKey], sdk.StoreTypeMemory, nil)
|
|
|
|
stateStore.MountStoreWithDB(tkeys[paramstypes.TStoreKey], sdk.StoreTypeTransient, nil)
|
2021-11-16 03:23:52 -08:00
|
|
|
require.NoError(t, stateStore.LoadLatestVersion())
|
|
|
|
|
2022-10-14 15:12:57 -07:00
|
|
|
encodingConfig := cosmoscmd.MakeEncodingConfig(app.ModuleBasics)
|
|
|
|
appCodec := encodingConfig.Marshaler
|
|
|
|
amino := encodingConfig.Amino
|
|
|
|
|
|
|
|
paramsKeeper := paramskeeper.NewKeeper(appCodec, amino, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey])
|
|
|
|
paramsKeeper.Subspace(types.ModuleName)
|
|
|
|
paramsKeeper.Subspace(wasm.ModuleName)
|
|
|
|
|
|
|
|
paramsKeeper.Subspace(authtypes.ModuleName)
|
|
|
|
subspace_auth, _ := paramsKeeper.GetSubspace(authtypes.ModuleName)
|
|
|
|
accountKeeper := authkeeper.NewAccountKeeper(
|
|
|
|
appCodec, keys[authtypes.StoreKey], subspace_auth, authtypes.ProtoBaseAccount, maccPerms,
|
|
|
|
)
|
|
|
|
// this line is used by starport scaffolding # stargate/app/paramSubspace
|
|
|
|
|
|
|
|
subspaceWasmd, _ := paramsKeeper.GetSubspace(wasmtypes.ModuleName)
|
|
|
|
|
|
|
|
bApp := baseapp.NewBaseApp("wormchain", log.NewNopLogger(), db, encodingConfig.TxConfig.TxDecoder())
|
|
|
|
bApp.SetVersion(version.Version)
|
|
|
|
bApp.SetInterfaceRegistry(encodingConfig.InterfaceRegistry)
|
|
|
|
|
|
|
|
appapp := &app.App{
|
|
|
|
BaseApp: bApp,
|
|
|
|
}
|
|
|
|
|
2021-11-16 03:23:52 -08:00
|
|
|
k := keeper.NewKeeper(
|
2022-10-14 15:12:57 -07:00
|
|
|
appCodec,
|
|
|
|
keys[types.StoreKey],
|
|
|
|
memKeys[types.MemStoreKey],
|
|
|
|
accountKeeper,
|
2021-11-16 03:23:52 -08:00
|
|
|
nil,
|
|
|
|
)
|
|
|
|
|
2023-02-13 19:01:46 -08:00
|
|
|
supportedFeatures := "iterator,staking,stargate,wormhole"
|
2022-10-14 15:12:57 -07:00
|
|
|
appapp.WormholeKeeper = *k
|
|
|
|
|
|
|
|
appapp.CapabilityKeeper = capabilitykeeper.NewKeeper(appCodec, keys[capabilitytypes.StoreKey], memKeys[capabilitytypes.MemStoreKey])
|
|
|
|
scopedWasmKeeper := appapp.CapabilityKeeper.ScopeToModule(wasm.ModuleName)
|
|
|
|
|
|
|
|
wasmDir, err := ioutil.TempDir("", "")
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
wasmKeeper := wasm.NewKeeper(
|
|
|
|
appCodec,
|
|
|
|
keys[wasmtypes.StoreKey],
|
|
|
|
subspaceWasmd,
|
|
|
|
accountKeeper,
|
|
|
|
&wasm_handlers.BankKeeperHandler{},
|
|
|
|
&wasm_handlers.StakingKeeperHandler{},
|
|
|
|
&wasm_handlers.DistributionKeeperHandler{},
|
|
|
|
&wasm_handlers.ChannelKeeperHandler{},
|
|
|
|
&wasm_handlers.PortKeeperHandler{},
|
|
|
|
scopedWasmKeeper,
|
|
|
|
&wasm_handlers.ICS20TransferPortSourceHandler{},
|
2023-08-07 11:18:40 -07:00
|
|
|
appapp.WormholeKeeper,
|
2022-10-14 15:12:57 -07:00
|
|
|
appapp.MsgServiceRouter(),
|
|
|
|
appapp.GRPCQueryRouter(),
|
|
|
|
wasmDir,
|
|
|
|
wasm.DefaultWasmConfig(),
|
|
|
|
supportedFeatures,
|
2023-02-13 19:01:46 -08:00
|
|
|
wasmkeeper.WithQueryPlugins(keeper.NewCustomQueryHandler(appapp.WormholeKeeper)),
|
2022-10-14 15:12:57 -07:00
|
|
|
)
|
|
|
|
ctx := sdk.NewContext(stateStore, tmproto.Header{
|
2023-01-30 11:41:29 -08:00
|
|
|
Time: time.Now(),
|
|
|
|
// The height should be at least 1, because the allowlist antehandler
|
|
|
|
// passes everything at height 0 for gen tx's.
|
2023-01-27 08:51:09 -08:00
|
|
|
Height: 1,
|
2022-10-14 15:12:57 -07:00
|
|
|
}, false, log.NewNopLogger())
|
|
|
|
appapp.MountKVStores(keys)
|
|
|
|
appapp.MountTransientStores(tkeys)
|
|
|
|
appapp.MountMemoryStores(memKeys)
|
|
|
|
|
|
|
|
wasmGenState := wasmtypes.GenesisState{}
|
|
|
|
wasmGenState.Params.CodeUploadAccess = wasmtypes.DefaultUploadAccess
|
|
|
|
wasmGenState.Params.InstantiateDefaultPermission = wasmtypes.AccessTypeEverybody
|
|
|
|
wasmKeeper.SetParams(ctx, wasmGenState.Params)
|
|
|
|
permissionedWasmKeeper := wasmkeeper.NewDefaultPermissionKeeper(wasmKeeper)
|
|
|
|
appapp.WormholeKeeper.SetWasmdKeeper(permissionedWasmKeeper)
|
|
|
|
k.SetWasmdKeeper(permissionedWasmKeeper)
|
|
|
|
|
2023-02-13 19:01:46 -08:00
|
|
|
return k, wasmKeeper, permissionedWasmKeeper, ctx
|
2021-11-16 03:23:52 -08:00
|
|
|
}
|