0g-chain/x/incentive/legacy/v0_16/migrate.go
2024-09-25 15:00:59 +00:00

175 lines
6.8 KiB
Go

package v0_16
import (
v015incentive "github.com/0glabs/0g-chain/x/incentive/legacy/v0_15"
v016incentive "github.com/0glabs/0g-chain/x/incentive/types"
)
func migrateMultiRewardPerids(oldPeriods v015incentive.MultiRewardPeriods) v016incentive.MultiRewardPeriods {
newPeriods := make(v016incentive.MultiRewardPeriods, len(oldPeriods))
for i, oldPeriod := range oldPeriods {
newPeriods[i] = v016incentive.MultiRewardPeriod{
Active: oldPeriod.Active,
CollateralType: oldPeriod.CollateralType,
Start: oldPeriod.Start,
End: oldPeriod.End,
RewardsPerSecond: oldPeriod.RewardsPerSecond,
}
}
return newPeriods
}
func migrateRewardPeriods(oldPeriods v015incentive.RewardPeriods) v016incentive.RewardPeriods {
newPeriods := make(v016incentive.RewardPeriods, len(oldPeriods))
for i, oldPeriod := range oldPeriods {
newPeriods[i] = v016incentive.RewardPeriod{
Active: oldPeriod.Active,
CollateralType: oldPeriod.CollateralType,
Start: oldPeriod.Start,
End: oldPeriod.End,
RewardsPerSecond: oldPeriod.RewardsPerSecond,
}
}
return newPeriods
}
func migrateMultipliersPerDenom(oldMpds v015incentive.MultipliersPerDenom) []v016incentive.MultipliersPerDenom {
mpds := make([]v016incentive.MultipliersPerDenom, len(oldMpds))
for i, oldMpd := range oldMpds {
multipliers := make(v016incentive.Multipliers, len(oldMpd.Multipliers))
for i, multiplier := range oldMpd.Multipliers {
multipliers[i] = v016incentive.Multiplier{
Name: string(multiplier.Name),
MonthsLockup: multiplier.MonthsLockup,
Factor: multiplier.Factor,
}
}
mpds[i] = v016incentive.MultipliersPerDenom{
Denom: oldMpd.Denom,
Multipliers: multipliers,
}
}
return mpds
}
func migrateParams(params v015incentive.Params) v016incentive.Params {
return v016incentive.Params{
USDXMintingRewardPeriods: migrateRewardPeriods(params.USDXMintingRewardPeriods),
HardSupplyRewardPeriods: migrateMultiRewardPerids(params.HardSupplyRewardPeriods),
HardBorrowRewardPeriods: migrateMultiRewardPerids(params.HardBorrowRewardPeriods),
DelegatorRewardPeriods: migrateMultiRewardPerids(params.DelegatorRewardPeriods),
SwapRewardPeriods: migrateMultiRewardPerids(params.SwapRewardPeriods),
ClaimMultipliers: migrateMultipliersPerDenom(params.ClaimMultipliers),
ClaimEnd: params.ClaimEnd,
}
}
func migrateRewardState(oldRewardState v015incentive.GenesisRewardState) v016incentive.GenesisRewardState {
allTimes := make(v016incentive.AccumulationTimes, len(oldRewardState.AccumulationTimes))
for i, at := range oldRewardState.AccumulationTimes {
allTimes[i] = v016incentive.AccumulationTime{
CollateralType: at.CollateralType,
PreviousAccumulationTime: at.PreviousAccumulationTime,
}
}
return v016incentive.GenesisRewardState{
AccumulationTimes: allTimes,
MultiRewardIndexes: migrateMultiRewardIndexes(oldRewardState.MultiRewardIndexes),
}
}
func migrateMultiRewardIndexes(oldMultiRewardIndexes v015incentive.MultiRewardIndexes) v016incentive.MultiRewardIndexes {
multiRewardIndexes := make(v016incentive.MultiRewardIndexes, len(oldMultiRewardIndexes))
for i, multiRewardIndex := range oldMultiRewardIndexes {
multiRewardIndexes[i] = v016incentive.MultiRewardIndex{
CollateralType: multiRewardIndex.CollateralType,
RewardIndexes: migrateRewadIndexes(multiRewardIndex.RewardIndexes),
}
}
return multiRewardIndexes
}
func migrateRewadIndexes(oldRewardIndexes v015incentive.RewardIndexes) v016incentive.RewardIndexes {
rewardIndexes := make(v016incentive.RewardIndexes, len(oldRewardIndexes))
for j, rewardIndex := range oldRewardIndexes {
rewardIndexes[j] = v016incentive.RewardIndex{
CollateralType: rewardIndex.CollateralType,
RewardFactor: rewardIndex.RewardFactor,
}
}
return rewardIndexes
}
func migrateUSDXMintingClaims(oldClaims v015incentive.USDXMintingClaims) v016incentive.USDXMintingClaims {
claims := make(v016incentive.USDXMintingClaims, len(oldClaims))
for i, oldClaim := range oldClaims {
claims[i] = v016incentive.USDXMintingClaim{
BaseClaim: v016incentive.BaseClaim{
Owner: oldClaim.BaseClaim.Owner,
Reward: oldClaim.BaseClaim.Reward,
},
RewardIndexes: migrateRewadIndexes(oldClaim.RewardIndexes),
}
}
return claims
}
func migrateHardLiquidityProviderClaims(oldClaims v015incentive.HardLiquidityProviderClaims) v016incentive.HardLiquidityProviderClaims {
claims := make(v016incentive.HardLiquidityProviderClaims, len(oldClaims))
for i, oldClaim := range oldClaims {
claims[i] = v016incentive.HardLiquidityProviderClaim{
BaseMultiClaim: v016incentive.BaseMultiClaim{
Owner: oldClaim.BaseMultiClaim.Owner,
Reward: oldClaim.BaseMultiClaim.Reward,
},
SupplyRewardIndexes: migrateMultiRewardIndexes(oldClaim.SupplyRewardIndexes),
BorrowRewardIndexes: migrateMultiRewardIndexes(oldClaim.BorrowRewardIndexes),
}
}
return claims
}
func migrateDelegatorClaims(oldClaims v015incentive.DelegatorClaims) v016incentive.DelegatorClaims {
claims := make(v016incentive.DelegatorClaims, len(oldClaims))
for i, oldClaim := range oldClaims {
claims[i] = v016incentive.DelegatorClaim{
BaseMultiClaim: v016incentive.BaseMultiClaim{
Owner: oldClaim.BaseMultiClaim.Owner,
Reward: oldClaim.BaseMultiClaim.Reward,
},
RewardIndexes: migrateMultiRewardIndexes(oldClaim.RewardIndexes),
}
}
return claims
}
func migrateSwapClaims(oldClaims v015incentive.SwapClaims) v016incentive.SwapClaims {
claims := make(v016incentive.SwapClaims, len(oldClaims))
for i, oldClaim := range oldClaims {
claims[i] = v016incentive.SwapClaim{
BaseMultiClaim: v016incentive.BaseMultiClaim{
Owner: oldClaim.BaseMultiClaim.Owner,
Reward: oldClaim.BaseMultiClaim.Reward,
},
RewardIndexes: migrateMultiRewardIndexes(oldClaim.RewardIndexes),
}
}
return claims
}
// Migrate converts v0.15 incentive state and returns it in v0.16 format
func Migrate(oldState v015incentive.GenesisState) *v016incentive.GenesisState {
return &v016incentive.GenesisState{
Params: migrateParams(oldState.Params),
USDXRewardState: migrateRewardState(oldState.USDXRewardState),
HardSupplyRewardState: migrateRewardState(oldState.HardSupplyRewardState),
HardBorrowRewardState: migrateRewardState(oldState.HardBorrowRewardState),
DelegatorRewardState: migrateRewardState(oldState.DelegatorRewardState),
SwapRewardState: migrateRewardState(oldState.SwapRewardState),
USDXMintingClaims: migrateUSDXMintingClaims(oldState.USDXMintingClaims),
HardLiquidityProviderClaims: migrateHardLiquidityProviderClaims(oldState.HardLiquidityProviderClaims),
DelegatorClaims: migrateDelegatorClaims(oldState.DelegatorClaims),
SwapClaims: migrateSwapClaims(oldState.SwapClaims),
}
}