-
Notifications
You must be signed in to change notification settings - Fork 13
/
genesis.go
61 lines (46 loc) · 1.41 KB
/
genesis.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
package keeper
import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/gravity-devs/liquidity/v2/x/liquidity/types"
)
// InitGenesis initializes the liquidity module's state from a given genesis state.
func (k Keeper) InitGenesis(ctx sdk.Context, genState types.GenesisState) {
if err := k.ValidateGenesis(ctx, genState); err != nil {
panic(err)
}
k.SetParams(ctx, genState.Params)
for _, record := range genState.PoolRecords {
k.SetPoolRecord(ctx, record)
}
}
// ExportGenesis returns the liquidity module's genesis state.
func (k Keeper) ExportGenesis(ctx sdk.Context) *types.GenesisState {
params := k.GetParams(ctx)
var poolRecords []types.PoolRecord
pools := k.GetAllPools(ctx)
for _, pool := range pools {
record, found := k.GetPoolRecord(ctx, pool)
if found {
poolRecords = append(poolRecords, record)
}
}
if len(poolRecords) == 0 {
poolRecords = []types.PoolRecord{}
}
return types.NewGenesisState(params, poolRecords)
}
// ValidateGenesis validates the liquidity module's genesis state.
func (k Keeper) ValidateGenesis(ctx sdk.Context, genState types.GenesisState) error {
if err := genState.Params.Validate(); err != nil {
return err
}
cc, _ := ctx.CacheContext()
k.SetParams(cc, genState.Params)
for _, record := range genState.PoolRecords {
record = k.SetPoolRecord(cc, record)
if err := k.ValidatePoolRecord(cc, record); err != nil {
return err
}
}
return nil
}