-
Notifications
You must be signed in to change notification settings - Fork 84
/
vest.go
69 lines (65 loc) · 2.22 KB
/
vest.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package keeper
import (
tmdb "github.com/cometbft/cometbft-db"
"github.com/cosmos/cosmos-sdk/codec"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
storetypes "github.com/cosmos/cosmos-sdk/store/types"
sdk "github.com/cosmos/cosmos-sdk/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
blocktimekeeper "github.com/dydxprotocol/v4-chain/protocol/x/blocktime/keeper"
bridgetypes "github.com/dydxprotocol/v4-chain/protocol/x/bridge/types"
"github.com/dydxprotocol/v4-chain/protocol/x/vest/keeper"
"github.com/dydxprotocol/v4-chain/protocol/x/vest/types"
"testing"
)
func VestKeepers(
t testing.TB,
) (
ctx sdk.Context,
vestKeeper *keeper.Keeper,
storeKey storetypes.StoreKey,
bankKeeper *bankkeeper.BaseKeeper,
blocktimeKeeper *blocktimekeeper.Keeper,
authorities []string,
) {
ctx = initKeepers(t, func(
db *tmdb.MemDB,
registry codectypes.InterfaceRegistry,
cdc *codec.ProtoCodec,
stateStore storetypes.CommitMultiStore,
transientStoreKey storetypes.StoreKey,
) []GenesisInitializer {
authorities = []string{
authtypes.NewModuleAddress(bridgetypes.ModuleName).String(),
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
}
accountKeeper, _ := createAccountKeeper(stateStore, db, cdc, registry)
bankKeeper, _ = createBankKeeper(stateStore, db, cdc, accountKeeper)
blocktimeKeeper, _ = createBlockTimeKeeper(stateStore, db, cdc)
vestKeeper, storeKey = createVestKeeper(
stateStore,
db,
cdc,
bankKeeper,
blocktimeKeeper,
authorities,
)
return []GenesisInitializer{blocktimeKeeper}
})
return ctx, vestKeeper, storeKey, bankKeeper, blocktimeKeeper, authorities
}
func createVestKeeper(
stateStore storetypes.CommitMultiStore,
db *tmdb.MemDB,
cdc codec.BinaryCodec,
bankKeeper *bankkeeper.BaseKeeper,
blocktimeKeeper *blocktimekeeper.Keeper,
authorities []string,
) (*keeper.Keeper, *storetypes.KVStoreKey) {
vestStoreKey := storetypes.NewKVStoreKey(types.StoreKey)
vestKeeper := keeper.NewKeeper(cdc, vestStoreKey, bankKeeper, blocktimeKeeper, authorities)
stateStore.MountStoreWithDB(vestStoreKey, storetypes.StoreTypeIAVL, db)
return vestKeeper, vestStoreKey
}