/
migrate.go
52 lines (40 loc) · 1.52 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
package v038
import (
v036auth "github.com/DFWallet/anatha/x/auth/legacy/v0_36"
v036genaccounts "github.com/DFWallet/anatha/x/genaccounts/legacy/v0_36"
)
// Migrate accepts exported genesis state from v0.34 and migrates it to v0.38
// genesis state.
func Migrate(authGenState v036auth.GenesisState, genAccountsGenState v036genaccounts.GenesisState) GenesisState {
accounts := make(GenesisAccounts, len(genAccountsGenState))
for i, acc := range genAccountsGenState {
var genAccount GenesisAccount
baseAccount := NewBaseAccount(acc.Address, acc.Coins.Sort(), nil, acc.AccountNumber, acc.Sequence)
switch {
case !acc.OriginalVesting.IsZero():
baseVestingAccount := NewBaseVestingAccount(
baseAccount, acc.OriginalVesting.Sort(), acc.DelegatedFree.Sort(),
acc.DelegatedVesting.Sort(), acc.EndTime,
)
if acc.StartTime != 0 && acc.EndTime != 0 {
// continuous vesting account type
genAccount = NewContinuousVestingAccountRaw(baseVestingAccount, acc.StartTime)
} else if acc.EndTime != 0 {
// delayed vesting account type
genAccount = NewDelayedVestingAccountRaw(baseVestingAccount)
}
case acc.ModuleName != "":
// module account type
genAccount = NewModuleAccount(baseAccount, acc.ModuleName, acc.ModulePermissions...)
default:
// standard account type
genAccount = baseAccount
}
accounts[i] = genAccount
}
accounts = sanitizeGenesisAccounts(accounts)
if err := validateGenAccounts(accounts); err != nil {
panic(err)
}
return NewGenesisState(authGenState.Params, accounts)
}