53 lines
1.5 KiB
Go
53 lines
1.5 KiB
Go
package v038
|
|
|
|
import (
|
|
v036auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v0_36"
|
|
v036genaccounts "github.com/cosmos/cosmos-sdk/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)
|
|
}
|