cosmos-sdk/x/staking/legacy/v043/json.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
}