139 lines
5.3 KiB
Go
139 lines
5.3 KiB
Go
|
package v043
|
||
|
|
||
|
import (
|
||
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||
|
v040staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v040"
|
||
|
v043staking "github.com/cosmos/cosmos-sdk/x/staking/types"
|
||
|
)
|
||
|
|
||
|
// MigrateJSON accepts exported v0.40 x/gov genesis state and migrates it to
|
||
|
// v0.43 x/gov genesis state. The migration includes:
|
||
|
//
|
||
|
// - Gov weighted votes.
|
||
|
func MigrateJSON(oldState *v040staking.GenesisState) *v043staking.GenesisState {
|
||
|
return &v043staking.GenesisState{
|
||
|
Params: migrateParams(oldState.Params),
|
||
|
LastTotalPower: oldState.LastTotalPower,
|
||
|
LastValidatorPowers: migrateLastValidatorPowers(oldState.LastValidatorPowers),
|
||
|
Validators: migrateValidators(oldState.Validators),
|
||
|
Delegations: migrateDelegations(oldState.Delegations),
|
||
|
UnbondingDelegations: migrateUnbondingDelegations(oldState.UnbondingDelegations),
|
||
|
Redelegations: migrateRedelegations(oldState.Redelegations),
|
||
|
Exported: oldState.Exported,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func migrateParams(oldParams v040staking.Params) v043staking.Params {
|
||
|
return v043staking.NewParams(
|
||
|
oldParams.UnbondingTime,
|
||
|
oldParams.MaxValidators,
|
||
|
oldParams.MaxEntries,
|
||
|
oldParams.HistoricalEntries,
|
||
|
oldParams.BondDenom,
|
||
|
sdk.DefaultPowerReduction,
|
||
|
)
|
||
|
}
|
||
|
|
||
|
func migrateLastValidatorPowers(oldLastValidatorPowers []v040staking.LastValidatorPower) []v043staking.LastValidatorPower {
|
||
|
newLastValidatorPowers := make([]v043staking.LastValidatorPower, len(oldLastValidatorPowers))
|
||
|
for i, oldLastValidatorPower := range oldLastValidatorPowers {
|
||
|
newLastValidatorPowers[i] = v043staking.LastValidatorPower{
|
||
|
Address: oldLastValidatorPower.Address,
|
||
|
Power: oldLastValidatorPower.Power,
|
||
|
}
|
||
|
}
|
||
|
return newLastValidatorPowers
|
||
|
}
|
||
|
|
||
|
func migrateValidators(oldValidators []v040staking.Validator) []v043staking.Validator {
|
||
|
newValidators := make([]v043staking.Validator, len(oldValidators))
|
||
|
|
||
|
for i, oldValidator := range oldValidators {
|
||
|
newValidators[i] = v043staking.Validator{
|
||
|
OperatorAddress: oldValidator.OperatorAddress,
|
||
|
ConsensusPubkey: oldValidator.ConsensusPubkey,
|
||
|
Jailed: oldValidator.Jailed,
|
||
|
Status: v043staking.BondStatus(oldValidator.Status),
|
||
|
Tokens: oldValidator.Tokens,
|
||
|
DelegatorShares: oldValidator.DelegatorShares,
|
||
|
Description: v043staking.Description{
|
||
|
Moniker: oldValidator.Description.Moniker,
|
||
|
Identity: oldValidator.Description.Identity,
|
||
|
Website: oldValidator.Description.Website,
|
||
|
SecurityContact: oldValidator.Description.SecurityContact,
|
||
|
Details: oldValidator.Description.Details,
|
||
|
},
|
||
|
UnbondingHeight: oldValidator.UnbondingHeight,
|
||
|
UnbondingTime: oldValidator.UnbondingTime,
|
||
|
Commission: v043staking.Commission{
|
||
|
CommissionRates: v043staking.CommissionRates{
|
||
|
Rate: oldValidator.Commission.CommissionRates.Rate,
|
||
|
MaxRate: oldValidator.Commission.CommissionRates.MaxRate,
|
||
|
MaxChangeRate: oldValidator.Commission.CommissionRates.MaxChangeRate,
|
||
|
},
|
||
|
UpdateTime: oldValidator.Commission.UpdateTime,
|
||
|
},
|
||
|
MinSelfDelegation: oldValidator.MinSelfDelegation,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return newValidators
|
||
|
}
|
||
|
|
||
|
func migrateDelegations(oldDelegations []v040staking.Delegation) []v043staking.Delegation {
|
||
|
newDelegations := make([]v043staking.Delegation, len(oldDelegations))
|
||
|
for i, oldDelegation := range oldDelegations {
|
||
|
newDelegations[i] = v043staking.Delegation{
|
||
|
DelegatorAddress: oldDelegation.DelegatorAddress,
|
||
|
ValidatorAddress: oldDelegation.ValidatorAddress,
|
||
|
Shares: oldDelegation.Shares,
|
||
|
}
|
||
|
}
|
||
|
return newDelegations
|
||
|
}
|
||
|
|
||
|
func migrateUnbondingDelegations(oldUnbondingDelegations []v040staking.UnbondingDelegation) []v043staking.UnbondingDelegation {
|
||
|
newUnbondingDelegations := make([]v043staking.UnbondingDelegation, len(oldUnbondingDelegations))
|
||
|
for i, oldUnbondingDelegation := range oldUnbondingDelegations {
|
||
|
newEntries := make([]v043staking.UnbondingDelegationEntry, len(oldUnbondingDelegation.Entries))
|
||
|
for j, oldEntry := range oldUnbondingDelegation.Entries {
|
||
|
newEntries[j] = v043staking.UnbondingDelegationEntry{
|
||
|
CreationHeight: oldEntry.CreationHeight,
|
||
|
CompletionTime: oldEntry.CompletionTime,
|
||
|
InitialBalance: oldEntry.InitialBalance,
|
||
|
Balance: oldEntry.Balance,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
newUnbondingDelegations[i] = v043staking.UnbondingDelegation{
|
||
|
DelegatorAddress: oldUnbondingDelegation.DelegatorAddress,
|
||
|
ValidatorAddress: oldUnbondingDelegation.ValidatorAddress,
|
||
|
Entries: newEntries,
|
||
|
}
|
||
|
}
|
||
|
return newUnbondingDelegations
|
||
|
}
|
||
|
|
||
|
func migrateRedelegations(oldRedelegations []v040staking.Redelegation) []v043staking.Redelegation {
|
||
|
newRedelegations := make([]v043staking.Redelegation, len(oldRedelegations))
|
||
|
for i, oldRedelegation := range oldRedelegations {
|
||
|
newEntries := make([]v043staking.RedelegationEntry, len(oldRedelegation.Entries))
|
||
|
for j, oldEntry := range oldRedelegation.Entries {
|
||
|
newEntries[j] = v043staking.RedelegationEntry{
|
||
|
CreationHeight: oldEntry.CreationHeight,
|
||
|
CompletionTime: oldEntry.CompletionTime,
|
||
|
InitialBalance: oldEntry.InitialBalance,
|
||
|
SharesDst: oldEntry.SharesDst,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
newRedelegations[i] = v043staking.Redelegation{
|
||
|
DelegatorAddress: oldRedelegation.DelegatorAddress,
|
||
|
ValidatorSrcAddress: oldRedelegation.ValidatorSrcAddress,
|
||
|
ValidatorDstAddress: oldRedelegation.ValidatorDstAddress,
|
||
|
Entries: newEntries,
|
||
|
}
|
||
|
}
|
||
|
return newRedelegations
|
||
|
}
|