forked from maticnetwork/heimdall
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenesis.go
54 lines (46 loc) · 1.46 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
package staking
import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/maticnetwork/heimdall/staking/types"
hmTypes "github.com/maticnetwork/heimdall/types"
)
// InitGenesis sets distribution information for genesis.
func InitGenesis(ctx sdk.Context, keeper Keeper, data types.GenesisState) {
// get current val set
var vals []*hmTypes.Validator
if len(data.CurrentValSet.Validators) == 0 {
vals = data.Validators
} else {
vals = data.CurrentValSet.Validators
}
if len(vals) != 0 {
resultValSet := hmTypes.NewValidatorSet(vals)
// add validators in store
for _, validator := range resultValSet.Validators {
// Add individual validator to state
if err := keeper.AddValidator(ctx, *validator); err != nil {
keeper.Logger(ctx).Error("Error InitGenesis", "error", err)
}
// update validator set in store
if err := keeper.UpdateValidatorSetInStore(ctx, *resultValSet); err != nil {
panic(err)
}
// increament accum if init validator set
if len(data.CurrentValSet.Validators) == 0 {
keeper.IncrementAccum(ctx, 1)
}
}
}
for _, sequence := range data.StakingSequences {
keeper.SetStakingSequence(ctx, sequence)
}
}
// ExportGenesis returns a GenesisState for a given context and keeper.
func ExportGenesis(ctx sdk.Context, keeper Keeper) types.GenesisState {
// return new genesis state
return types.NewGenesisState(
keeper.GetAllValidators(ctx),
keeper.GetValidatorSet(ctx),
keeper.GetStakingSequences(ctx),
)
}