-
Notifications
You must be signed in to change notification settings - Fork 0
/
migrate.go
96 lines (77 loc) · 4.13 KB
/
migrate.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package v036
import (
"github.com/evoblockchain/evochain/libs/cosmos-sdk/codec"
v034auth "github.com/evoblockchain/evochain/libs/cosmos-sdk/x/auth/legacy/v0_34"
v036auth "github.com/evoblockchain/evochain/libs/cosmos-sdk/x/auth/legacy/v0_36"
v034distr "github.com/evoblockchain/evochain/libs/cosmos-sdk/x/distribution/legacy/v0_34"
v036distr "github.com/evoblockchain/evochain/libs/cosmos-sdk/x/distribution/legacy/v0_36"
v034genAccounts "github.com/evoblockchain/evochain/libs/cosmos-sdk/x/genaccounts/legacy/v0_34"
v036genAccounts "github.com/evoblockchain/evochain/libs/cosmos-sdk/x/genaccounts/legacy/v0_36"
"github.com/evoblockchain/evochain/libs/cosmos-sdk/x/genutil"
v034gov "github.com/evoblockchain/evochain/libs/cosmos-sdk/x/gov/legacy/v0_34"
v036gov "github.com/evoblockchain/evochain/libs/cosmos-sdk/x/gov/legacy/v0_36"
v034staking "github.com/evoblockchain/evochain/libs/cosmos-sdk/x/staking/legacy/v0_34"
v036staking "github.com/evoblockchain/evochain/libs/cosmos-sdk/x/staking/legacy/v0_36"
v036supply "github.com/evoblockchain/evochain/libs/cosmos-sdk/x/supply/legacy/v0_36"
)
// Migrate migrates exported state from v0.34 to a v0.36 genesis state.
func Migrate(appState genutil.AppMap) genutil.AppMap {
v034Codec := codec.New()
codec.RegisterCrypto(v034Codec)
v034gov.RegisterCodec(v034Codec)
v036Codec := codec.New()
codec.RegisterCrypto(v036Codec)
v036gov.RegisterCodec(v036Codec)
// migrate genesis accounts state
if appState[v034genAccounts.ModuleName] != nil {
var genAccs v034genAccounts.GenesisState
v034Codec.MustUnmarshalJSON(appState[v034genAccounts.ModuleName], &genAccs)
var authGenState v034auth.GenesisState
v034Codec.MustUnmarshalJSON(appState[v034auth.ModuleName], &authGenState)
var govGenState v034gov.GenesisState
v034Codec.MustUnmarshalJSON(appState[v034gov.ModuleName], &govGenState)
var distrGenState v034distr.GenesisState
v034Codec.MustUnmarshalJSON(appState[v034distr.ModuleName], &distrGenState)
var stakingGenState v034staking.GenesisState
v034Codec.MustUnmarshalJSON(appState[v034staking.ModuleName], &stakingGenState)
delete(appState, v034genAccounts.ModuleName) // delete old key in case the name changed
appState[v036genAccounts.ModuleName] = v036Codec.MustMarshalJSON(
v036genAccounts.Migrate(
genAccs, authGenState.CollectedFees, distrGenState.FeePool.CommunityPool, govGenState.Deposits,
stakingGenState.Validators, stakingGenState.UnbondingDelegations, distrGenState.OutstandingRewards,
stakingGenState.Params.BondDenom, v036distr.ModuleName, v036gov.ModuleName,
),
)
}
// migrate auth state
if appState[v034auth.ModuleName] != nil {
var authGenState v034auth.GenesisState
v034Codec.MustUnmarshalJSON(appState[v034auth.ModuleName], &authGenState)
delete(appState, v034auth.ModuleName) // delete old key in case the name changed
appState[v036auth.ModuleName] = v036Codec.MustMarshalJSON(v036auth.Migrate(authGenState))
}
// migrate gov state
if appState[v034gov.ModuleName] != nil {
var govGenState v034gov.GenesisState
v034Codec.MustUnmarshalJSON(appState[v034gov.ModuleName], &govGenState)
delete(appState, v034gov.ModuleName) // delete old key in case the name changed
appState[v036gov.ModuleName] = v036Codec.MustMarshalJSON(v036gov.Migrate(govGenState))
}
// migrate distribution state
if appState[v034distr.ModuleName] != nil {
var slashingGenState v034distr.GenesisState
v034Codec.MustUnmarshalJSON(appState[v034distr.ModuleName], &slashingGenState)
delete(appState, v034distr.ModuleName) // delete old key in case the name changed
appState[v036distr.ModuleName] = v036Codec.MustMarshalJSON(v036distr.Migrate(slashingGenState))
}
// migrate staking state
if appState[v034staking.ModuleName] != nil {
var stakingGenState v034staking.GenesisState
v034Codec.MustUnmarshalJSON(appState[v034staking.ModuleName], &stakingGenState)
delete(appState, v034staking.ModuleName) // delete old key in case the name changed
appState[v036staking.ModuleName] = v036Codec.MustMarshalJSON(v036staking.Migrate(stakingGenState))
}
// migrate supply state
appState[v036supply.ModuleName] = v036Codec.MustMarshalJSON(v036supply.EmptyGenesisState())
return appState
}