cosmos-sdk/x/auth/legacy/v0_38/migrate.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)
}