Skip to content
Open
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
61d0ebc
try memory store wrapped in kvstore for unbonding delegations cache
randy-cro Nov 5, 2025
d1b0eba
add memory cache to unbonding validators and redelegations
randy-cro Nov 5, 2025
ab33f48
remove ctx from getPrefix
randy-cro Nov 5, 2025
54dff0c
remove ctx from getKey
randy-cro Nov 5, 2025
a326ce4
fix to make dirty true when setEntry is called and the cache is full
randy-cro Nov 5, 2025
864125b
return empty slice as default for getEntry
randy-cro Nov 5, 2025
b2ceaea
fix tests
randy-cro Nov 5, 2025
68c352f
correct fix: return empty slice for getEntry if entry cant be found/e…
randy-cro Nov 6, 2025
104058e
remove unneeded comments
randy-cro Nov 6, 2025
8acdaa8
panic should loadFromStore be nil
randy-cro Nov 6, 2025
4630a2d
move storeService panic to within cacheEntry
randy-cro Nov 6, 2025
bc01cc1
fix cache tests
randy-cro Nov 6, 2025
e0cf240
fix tests
randy-cro Nov 6, 2025
3adb919
gofumpt
randy-cro Nov 6, 2025
c9e2836
update CHANGELOG
randy-cro Nov 6, 2025
53afe08
fix comment
randy-cro Nov 6, 2025
0b27b14
gofumpt
randy-cro Nov 6, 2025
86c61a1
remove unneeded comment
randy-cro Nov 6, 2025
34f719d
fix tests
randy-cro Nov 6, 2025
1558400
lint:rename CacheEntryType as EntryType to prevent import stuttering
randy-cro Nov 6, 2025
7a064e7
add mutex lock for methods
randy-cro Nov 6, 2025
4f5b0ce
move load check outside of cache entry to prevent deadlock, lint:refa…
randy-cro Nov 6, 2025
edaa5db
minor refactor + gofumpt
randy-cro Nov 6, 2025
88156ba
fix iterator race + possible race in checkreloading
randy-cro Nov 6, 2025
020693b
add dirty load checks to prevent reloading more than once
randy-cro Nov 6, 2025
4259048
fix race issues due to gas in tests
randy-cro Nov 6, 2025
22489fd
fix error logs
randy-cro Nov 7, 2025
266b797
add debug logs (to be removed)
randy-cro Nov 7, 2025
1d656b1
test out gaslessContext
randy-cro Nov 10, 2025
f90e32d
Revert "test out gaslessContext"
randy-cro Nov 10, 2025
1d08aee
Revert "add debug logs (to be removed)"
randy-cro Nov 10, 2025
db990aa
set dirty flag to true as soon as the cache is full
randy-cro Nov 11, 2025
f7c14c2
use already present noopGasMeter
randy-cro Nov 11, 2025
179d412
add debug logs (to be removed)
randy-cro Nov 11, 2025
dd9b81f
remove unused import
randy-cro Nov 11, 2025
2b94181
fix import
randy-cro Nov 11, 2025
aa1e079
Revert "use already present noopGasMeter"
randy-cro Nov 11, 2025
8b92ff4
Revert "remove unused import"
randy-cro Nov 11, 2025
046165c
Revert "fix import"
randy-cro Nov 11, 2025
4057979
Revert "add debug logs (to be removed)"
randy-cro Nov 11, 2025
cacaca6
Reapply "add debug logs (to be removed)"
randy-cro Nov 11, 2025
298069d
move dirty,full flag to store, remove count
randy-cro Nov 11, 2025
85f41c9
fix test
randy-cro Nov 11, 2025
eb8929b
refactor
randy-cro Nov 12, 2025
28bc58c
use baseapp noopgasmeter
randy-cro Nov 12, 2025
91a9b0c
add more tests
randy-cro Nov 12, 2025
d2e1080
refactor
randy-cro Nov 12, 2025
fbecd69
update CHANGELOG
randy-cro Nov 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ Ref: https://keepachangelog.com/en/1.0.0/

### Features

* (x/staking) [#1733](https://github.com/crypto-org-chain/cosmos-sdk/pull/1730) Fix staking cache to in-memory KV store and ensure rollback on discarded contexts.
* (x/staking) [#1730](https://github.com/crypto-org-chain/cosmos-sdk/pull/1730) Normalize cache validator queue key to be UTC.
* (x/staking) [#1725](https://github.com/crypto-org-chain/cosmos-sdk/pull/1725) Optimize staking endblocker execution by caching queue entries from iterators.
* (baseapp) [#205](https://github.com/crypto-org-chain/cosmos-sdk/pull/205) Add `TxExecutor` baseapp option, add `TxIndex`/`TxCount`/`MsgIndex`/`BlockGasUsed` fields to `Context, to support tx parallel execution.
Expand Down
20 changes: 16 additions & 4 deletions simapp/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,9 +144,10 @@ type SimApp struct {
interfaceRegistry types.InterfaceRegistry

// keys to access the substores
keys map[string]*storetypes.KVStoreKey
tkeys map[string]*storetypes.TransientStoreKey
okeys map[string]*storetypes.ObjectStoreKey
keys map[string]*storetypes.KVStoreKey
tkeys map[string]*storetypes.TransientStoreKey
okeys map[string]*storetypes.ObjectStoreKey
memKeys map[string]*storetypes.MemoryStoreKey

// keepers
AccountKeeper authkeeper.AccountKeeper
Expand Down Expand Up @@ -271,6 +272,7 @@ func NewSimApp(

tkeys := storetypes.NewTransientStoreKeys(paramstypes.TStoreKey)
okeys := storetypes.NewObjectStoreKeys(banktypes.ObjectStoreKey)
memKeys := storetypes.NewMemoryStoreKeys(stakingtypes.CacheStoreKey)
app := &SimApp{
BaseApp: bApp,
legacyAmino: legacyAmino,
Expand All @@ -280,6 +282,7 @@ func NewSimApp(
keys: keys,
tkeys: tkeys,
okeys: okeys,
memKeys: memKeys,
}

app.ParamsKeeper = initParamsKeeper(appCodec, legacyAmino, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey])
Expand Down Expand Up @@ -319,7 +322,15 @@ func NewSimApp(
stakingCacheSize := cast.ToInt(appOpts.Get(server.FlagStakingCacheSize))

app.StakingKeeper = stakingkeeper.NewKeeper(
appCodec, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), app.AccountKeeper, app.BankKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), authcodec.NewBech32Codec(sdk.Bech32PrefixValAddr), authcodec.NewBech32Codec(sdk.Bech32PrefixConsAddr), stakingCacheSize,
appCodec,
runtime.NewKVStoreService(keys[stakingtypes.StoreKey]),
runtime.NewMemStoreService(memKeys[stakingtypes.CacheStoreKey]), // Memory store for cache
app.AccountKeeper,
app.BankKeeper,
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
authcodec.NewBech32Codec(sdk.Bech32PrefixValAddr),
authcodec.NewBech32Codec(sdk.Bech32PrefixConsAddr),
stakingCacheSize,
)
app.MintKeeper = mintkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[minttypes.StoreKey]), app.StakingKeeper, app.AccountKeeper, app.BankKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String())

Expand Down Expand Up @@ -526,6 +537,7 @@ func NewSimApp(
// initialize stores
app.MountKVStores(keys)
app.MountTransientStores(tkeys)
app.MountMemoryStores(memKeys)
app.MountObjectStores(okeys)

// initialize BaseApp
Expand Down
4 changes: 3 additions & 1 deletion tests/integration/bank/keeper/deterministic_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import (
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
_ "github.com/cosmos/cosmos-sdk/x/params"
_ "github.com/cosmos/cosmos-sdk/x/staking"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
)

var (
Expand Down Expand Up @@ -65,10 +66,11 @@ type deterministicFixture struct {
func initDeterministicFixture(t *testing.T) *deterministicFixture {
keys := storetypes.NewKVStoreKeys(authtypes.StoreKey, banktypes.StoreKey)
okeys := storetypes.NewObjectStoreKeys(banktypes.ObjectStoreKey)
memKeys := storetypes.NewMemoryStoreKeys(stakingtypes.CacheStoreKey)
cdc := moduletestutil.MakeTestEncodingConfig(auth.AppModuleBasic{}, bank.AppModuleBasic{}).Codec

logger := log.NewTestLogger(t)
cms := integration.CreateMultiStore(keys, okeys, logger)
cms := integration.CreateMultiStore(keys, okeys, memKeys, logger)

newCtx := sdk.NewContext(cms, cmtproto.Header{}, true, logger)

Expand Down
5 changes: 3 additions & 2 deletions tests/integration/distribution/keeper/msg_server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,11 @@ func initFixture(t testing.TB) *fixture {
okeys := storetypes.NewObjectStoreKeys(
banktypes.ObjectStoreKey,
)
memKeys := storetypes.NewMemoryStoreKeys(stakingtypes.CacheStoreKey)
cdc := moduletestutil.MakeTestEncodingConfig(auth.AppModuleBasic{}, distribution.AppModuleBasic{}).Codec

logger := log.NewTestLogger(t)
cms := integration.CreateMultiStore(keys, okeys, logger)
cms := integration.CreateMultiStore(keys, okeys, memKeys, logger)

newCtx := sdk.NewContext(cms, types.Header{}, true, logger)

Expand Down Expand Up @@ -107,7 +108,7 @@ func initFixture(t testing.TB) *fixture {
log.NewNopLogger(),
)

stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr), 0)
stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), runtime.NewMemStoreService(memKeys[stakingtypes.CacheStoreKey]), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr), 0)

distrKeeper := distrkeeper.NewKeeper(
cdc, runtime.NewKVStoreService(keys[distrtypes.StoreKey]), accountKeeper, bankKeeper, stakingKeeper, distrtypes.ModuleName, authority.String(),
Expand Down
6 changes: 4 additions & 2 deletions tests/integration/evidence/keeper/infraction_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,12 @@ func initFixture(t testing.TB) *fixture {
okeys := storetypes.NewObjectStoreKeys(
banktypes.ObjectStoreKey,
)
memKeys := storetypes.NewMemoryStoreKeys(stakingtypes.CacheStoreKey)

cdc := moduletestutil.MakeTestEncodingConfig(auth.AppModuleBasic{}, evidence.AppModuleBasic{}).Codec

logger := log.NewTestLogger(t)
cms := integration.CreateMultiStore(keys, okeys, logger)
cms := integration.CreateMultiStore(keys, okeys, memKeys, logger)

newCtx := sdk.NewContext(cms, cmtproto.Header{}, true, logger)

Expand Down Expand Up @@ -124,7 +126,7 @@ func initFixture(t testing.TB) *fixture {
log.NewNopLogger(),
)

stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr), 0)
stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), runtime.NewMemStoreService(memKeys[stakingtypes.CacheStoreKey]), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr), 0)

slashingKeeper := slashingkeeper.NewKeeper(cdc, codec.NewLegacyAmino(), runtime.NewKVStoreService(keys[slashingtypes.StoreKey]), stakingKeeper, authority.String())

Expand Down
6 changes: 4 additions & 2 deletions tests/integration/gov/keeper/keeper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,12 @@ func initFixture(t testing.TB) *fixture {
okeys := storetypes.NewObjectStoreKeys(
banktypes.ObjectStoreKey,
)
memKeys := storetypes.NewMemoryStoreKeys(stakingtypes.CacheStoreKey)

cdc := moduletestutil.MakeTestEncodingConfig(auth.AppModuleBasic{}, bank.AppModuleBasic{}, gov.AppModuleBasic{}).Codec

logger := log.NewTestLogger(t)
cms := integration.CreateMultiStore(keys, okeys, logger)
cms := integration.CreateMultiStore(keys, okeys, memKeys, logger)

newCtx := sdk.NewContext(cms, cmtproto.Header{}, true, logger)

Expand Down Expand Up @@ -95,7 +97,7 @@ func initFixture(t testing.TB) *fixture {
log.NewNopLogger(),
)

stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr), 0)
stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), runtime.NewMemStoreService(memKeys[stakingtypes.CacheStoreKey]), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr), 0)

// set default staking params
stakingKeeper.SetParams(newCtx, stakingtypes.DefaultParams())
Expand Down
7 changes: 5 additions & 2 deletions tests/integration/slashing/keeper/keeper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,13 @@ func initFixture(t testing.TB) *fixture {
authtypes.StoreKey, banktypes.StoreKey, slashingtypes.StoreKey, stakingtypes.StoreKey,
)
okeys := storetypes.NewObjectStoreKeys(banktypes.ObjectStoreKey)

memKeys := storetypes.NewMemoryStoreKeys(stakingtypes.CacheStoreKey)

cdc := moduletestutil.MakeTestEncodingConfig(auth.AppModuleBasic{}).Codec

logger := log.NewTestLogger(t)
cms := integration.CreateMultiStore(keys, okeys, logger)
cms := integration.CreateMultiStore(keys, okeys, memKeys, logger)

newCtx := sdk.NewContext(cms, cmtproto.Header{}, true, logger)

Expand Down Expand Up @@ -93,7 +96,7 @@ func initFixture(t testing.TB) *fixture {
log.NewNopLogger(),
)

stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr), 0)
stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), runtime.NewMemStoreService(memKeys[stakingtypes.CacheStoreKey]), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr), 0)

slashingKeeper := slashingkeeper.NewKeeper(cdc, &codec.LegacyAmino{}, runtime.NewKVStoreService(keys[slashingtypes.StoreKey]), stakingKeeper, authority.String())

Expand Down
6 changes: 4 additions & 2 deletions tests/integration/staking/keeper/common_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,12 @@ func initFixture(t testing.TB) *fixture {
okeys := storetypes.NewObjectStoreKeys(
banktypes.ObjectStoreKey,
)
memKeys := storetypes.NewMemoryStoreKeys(types.CacheStoreKey)

cdc := moduletestutil.MakeTestEncodingConfig(auth.AppModuleBasic{}, staking.AppModuleBasic{}).Codec

logger := log.NewTestLogger(t)
cms := integration.CreateMultiStore(keys, okeys, logger)
cms := integration.CreateMultiStore(keys, okeys, memKeys, logger)

newCtx := sdk.NewContext(cms, cmtprototypes.Header{}, true, logger)

Expand Down Expand Up @@ -137,7 +139,7 @@ func initFixture(t testing.TB) *fixture {
log.NewNopLogger(),
)

stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[types.StoreKey]), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr), 0)
stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[types.StoreKey]), runtime.NewMemStoreService(memKeys[types.CacheStoreKey]), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr), 0)

authModule := auth.NewAppModule(cdc, accountKeeper, authsims.RandomGenesisAccounts, nil)
bankModule := bank.NewAppModule(cdc, bankKeeper, accountKeeper, nil)
Expand Down
5 changes: 3 additions & 2 deletions tests/integration/staking/keeper/determinstic_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,11 @@ func initDeterministicFixture(t *testing.T) *deterministicFixture {
authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey,
)
okeys := storetypes.NewObjectStoreKeys(banktypes.ObjectStoreKey)
memKeys := storetypes.NewMemoryStoreKeys(stakingtypes.CacheStoreKey)
cdc := moduletestutil.MakeTestEncodingConfig(auth.AppModuleBasic{}, distribution.AppModuleBasic{}).Codec

logger := log.NewTestLogger(t)
cms := integration.CreateMultiStore(keys, okeys, logger)
cms := integration.CreateMultiStore(keys, okeys, memKeys, logger)

newCtx := sdk.NewContext(cms, cmtproto.Header{}, true, logger)

Expand Down Expand Up @@ -108,7 +109,7 @@ func initDeterministicFixture(t *testing.T) *deterministicFixture {
log.NewNopLogger(),
)

stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr), 0)
stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), runtime.NewMemStoreService(memKeys[stakingtypes.CacheStoreKey]), accountKeeper, bankKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr), 0)

authModule := auth.NewAppModule(cdc, accountKeeper, authsims.RandomGenesisAccounts, nil)
bankModule := bank.NewAppModule(cdc, bankKeeper, accountKeeper, nil)
Expand Down
14 changes: 14 additions & 0 deletions testutil/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,20 @@ func DefaultContextWithDB(t testing.TB, key, tkey storetypes.StoreKey) TestConte
return TestContext{ctx, db, cms}
}

func DefaultContextWithMemoryStore(t testing.TB, key, tkey, memKey storetypes.StoreKey) TestContext {
db := dbm.NewMemDB()
cms := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())
cms.MountStoreWithDB(key, storetypes.StoreTypeIAVL, db)
cms.MountStoreWithDB(tkey, storetypes.StoreTypeTransient, db)
cms.MountStoreWithDB(memKey, storetypes.StoreTypeMemory, db)
err := cms.LoadLatestVersion()
assert.NoError(t, err)

ctx := sdk.NewContext(cms, cmtproto.Header{Time: time.Now()}, false, log.NewNopLogger())

return TestContext{ctx, db, cms}
}

func DefaultContextWithObjectStore(t testing.TB, key, tkey, okey storetypes.StoreKey) TestContext {
db := dbm.NewMemDB()
cms := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())
Expand Down
4 changes: 2 additions & 2 deletions testutil/integration/example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func Example() {
// replace the logger by testing values in a real test case (e.g. log.NewTestLogger(t))
logger := log.NewNopLogger()

cms := integration.CreateMultiStore(keys, nil, logger)
cms := integration.CreateMultiStore(keys, nil, nil, logger)
newCtx := sdk.NewContext(cms, cmtproto.Header{}, true, logger)

accountKeeper := authkeeper.NewAccountKeeper(
Expand Down Expand Up @@ -126,7 +126,7 @@ func Example_oneModule() {
// replace the logger by testing values in a real test case (e.g. log.NewTestLogger(t))
logger := log.NewLogger(io.Discard)

cms := integration.CreateMultiStore(keys, nil, logger)
cms := integration.CreateMultiStore(keys, nil, nil, logger)
newCtx := sdk.NewContext(cms, cmtproto.Header{}, true, logger)

accountKeeper := authkeeper.NewAccountKeeper(
Expand Down
6 changes: 5 additions & 1 deletion testutil/integration/router.go
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@
}

// CreateMultiStore is a helper for setting up multiple stores for provided modules.
func CreateMultiStore(keys map[string]*storetypes.KVStoreKey, okeys map[string]*storetypes.ObjectStoreKey, logger log.Logger) storetypes.CommitMultiStore {
func CreateMultiStore(keys map[string]*storetypes.KVStoreKey, okeys map[string]*storetypes.ObjectStoreKey, memKeys map[string]*storetypes.MemoryStoreKey, logger log.Logger) storetypes.CommitMultiStore {
db := dbm.NewMemDB()
cms := store.NewCommitMultiStore(db, logger, metrics.NewNoOpMetrics())

Expand All @@ -190,6 +190,10 @@
cms.MountStoreWithDB(okeys[key], storetypes.StoreTypeObject, nil)
}

for key := range memKeys {
cms.MountStoreWithDB(memKeys[key], storetypes.StoreTypeMemory, nil)
}

_ = cms.LoadLatestVersion()
return cms
}
Loading
Loading