0g-chain/migrate/v0_8/sdk/distribution/v0_38/migrate.go
Ruaridh 4a8b5696cb
v0.8 Migration Scripts (#518)
* initial sketch

* add module migrations

* add migrations for all accout types

* test account migration

* add tendermint migration and migrate cmd

* remove need for errors pkg dependency

* add bech32 decoding fork

* add suggested params and cmd to write them

* add basic upgrade instructions

* fix tests

* address some migration todos

* tidy contrib folder

* finalize params values

* align cdp init genesis with other modules

* add tendermint and distribution test
add custom distribution migration to patch bug

* add staking migration test

* add slashing, evidence tests, refactor auth tests

* add full migration test

* remove go-amino dependency from go.mod
also tidy up unused indirect dependencies

* address remaining TODOs

* remove commented out code from legacy types

* add spot/liquidation markets ids to kava-3 params

* Apply suggestions from code review

Co-authored-by: Alexander Bezobchuk <alexanderbez@users.noreply.github.com>
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>

* address code review suggestions

* add validate genesis to migrate test

* refactor add params func

* remove commented out code from old types

* fix add params

* add deputy address

* add tests using exported kava-2 state

* incorporate new cdp params from master

* update params from review

Co-authored-by: Kevin Davis <karzak@users.noreply.github.com>

* add deputy account

* add committee permissions for new params

Co-authored-by: Alexander Bezobchuk <alexanderbez@users.noreply.github.com>
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
Co-authored-by: Kevin Davis <karzak@users.noreply.github.com>
2020-06-03 15:35:00 -04:00

99 lines
3.0 KiB
Go

package v038
import (
v038dist "github.com/cosmos/cosmos-sdk/x/distribution"
v18de63dist "github.com/kava-labs/kava/migrate/v0_8/sdk/distribution/v18de63"
)
func Migrate(oldGenState v18de63dist.GenesisState) v038dist.GenesisState {
// Changes: some fields moved into a params struct, some changes in json tags
params := v038dist.Params{
CommunityTax: oldGenState.CommunityTax,
BaseProposerReward: oldGenState.BaseProposerReward,
BonusProposerReward: oldGenState.BonusProposerReward,
WithdrawAddrEnabled: oldGenState.WithdrawAddrEnabled,
}
withdrawInfos := []v038dist.DelegatorWithdrawInfo{}
for _, v := range oldGenState.DelegatorWithdrawInfos {
withdrawInfos = append(withdrawInfos, v038dist.DelegatorWithdrawInfo(v))
}
outstandingRewards := []v038dist.ValidatorOutstandingRewardsRecord{}
for _, v := range oldGenState.OutstandingRewards {
outstandingRewards = append(outstandingRewards, v038dist.ValidatorOutstandingRewardsRecord(v))
}
accumulatedComs := []v038dist.ValidatorAccumulatedCommissionRecord{}
for _, v := range oldGenState.ValidatorAccumulatedCommissions {
accumulatedComs = append(accumulatedComs, v038dist.ValidatorAccumulatedCommissionRecord(v))
}
histRewards := []v038dist.ValidatorHistoricalRewardsRecord{}
for _, v := range oldGenState.ValidatorHistoricalRewards {
histRewards = append(histRewards, v038dist.ValidatorHistoricalRewardsRecord{
ValidatorAddress: v.ValidatorAddress,
Period: v.Period,
Rewards: v038dist.NewValidatorHistoricalRewards(
v.Rewards.CumulativeRewardRatio,
v.Rewards.ReferenceCount,
),
})
}
currRewards := []v038dist.ValidatorCurrentRewardsRecord{}
for _, v := range oldGenState.ValidatorCurrentRewards {
currRewards = append(currRewards, v038dist.ValidatorCurrentRewardsRecord{
ValidatorAddress: v.ValidatorAddress,
Rewards: v038dist.NewValidatorCurrentRewards(
v.Rewards.Rewards,
v.Rewards.Period,
),
})
}
startInfos := []v038dist.DelegatorStartingInfoRecord{}
for _, v := range oldGenState.DelegatorStartingInfos {
startInfos = append(startInfos, v038dist.DelegatorStartingInfoRecord{
DelegatorAddress: v.DelegatorAddress,
ValidatorAddress: v.ValidatorAddress,
StartingInfo: v038dist.NewDelegatorStartingInfo(
v.StartingInfo.PreviousPeriod,
v.StartingInfo.Stake,
v.StartingInfo.Height,
),
})
}
slashEvents := []v038dist.ValidatorSlashEventRecord{}
for _, v := range oldGenState.ValidatorSlashEvents {
slashEvents = append(slashEvents, v038dist.ValidatorSlashEventRecord{
ValidatorAddress: v.ValidatorAddress,
Height: v.Height,
Period: v.Period,
Event: v038dist.NewValidatorSlashEvent(
v.Event.ValidatorPeriod,
v.Event.Fraction,
),
})
}
newGenState := v038dist.NewGenesisState(
params,
v038dist.FeePool(oldGenState.FeePool),
withdrawInfos,
oldGenState.PreviousProposer,
outstandingRewards,
accumulatedComs,
histRewards,
currRewards,
startInfos,
slashEvents,
)
return newGenState
}