0g-chain/x/cdp/legacy/v0_16/migrate.go

110 lines
4.0 KiB
Go
Raw Normal View History

package v0_16
import (
2024-05-01 03:17:24 +00:00
v015cdp "github.com/0glabs/0g-chain/x/cdp/legacy/v0_15"
v016cdp "github.com/0glabs/0g-chain/x/cdp/types"
)
func migrateParams(params v015cdp.Params) v016cdp.Params {
// migrate collateral params
collateralParams := make(v016cdp.CollateralParams, len(params.CollateralParams))
for i, cp := range params.CollateralParams {
collateralParams[i] = v016cdp.CollateralParam{
Denom: cp.Denom,
Type: cp.Type,
LiquidationRatio: cp.LiquidationRatio,
DebtLimit: cp.DebtLimit,
StabilityFee: cp.StabilityFee,
AuctionSize: cp.AuctionSize,
LiquidationPenalty: cp.LiquidationPenalty,
SpotMarketID: cp.SpotMarketID,
LiquidationMarketID: cp.LiquidationMarketID,
KeeperRewardPercentage: cp.KeeperRewardPercentage,
CheckCollateralizationIndexCount: cp.CheckCollateralizationIndexCount,
ConversionFactor: cp.ConversionFactor,
}
}
return v016cdp.Params{
CollateralParams: collateralParams,
DebtParam: v016cdp.DebtParam{
Denom: params.DebtParam.Denom,
ReferenceAsset: params.DebtParam.ReferenceAsset,
ConversionFactor: params.DebtParam.ConversionFactor,
DebtFloor: params.DebtParam.DebtFloor,
},
GlobalDebtLimit: params.GlobalDebtLimit,
SurplusAuctionThreshold: params.SurplusAuctionThreshold,
SurplusAuctionLot: params.SurplusAuctionLot,
DebtAuctionThreshold: params.DebtAuctionThreshold,
DebtAuctionLot: params.DebtAuctionLot,
CircuitBreaker: params.CircuitBreaker,
}
}
func migrateCDPs(oldCDPs v015cdp.CDPs) v016cdp.CDPs {
cdps := make(v016cdp.CDPs, len(oldCDPs))
for i, cdp := range oldCDPs {
cdps[i] = v016cdp.CDP{
ID: cdp.ID,
Owner: cdp.Owner,
Type: cdp.Type,
Collateral: cdp.Collateral,
Principal: cdp.Principal,
AccumulatedFees: cdp.AccumulatedFees,
FeesUpdated: cdp.FeesUpdated,
InterestFactor: cdp.InterestFactor,
}
}
return cdps
}
func migrateDeposits(oldDeposits v015cdp.Deposits) v016cdp.Deposits {
deposits := make(v016cdp.Deposits, len(oldDeposits))
for i, deposit := range oldDeposits {
deposits[i] = v016cdp.Deposit{
CdpID: deposit.CdpID,
Depositor: deposit.Depositor,
Amount: deposit.Amount,
}
}
return deposits
}
func migratePrevAccTimes(oldPrevAccTimes v015cdp.GenesisAccumulationTimes) v016cdp.GenesisAccumulationTimes {
prevAccTimes := make(v016cdp.GenesisAccumulationTimes, len(oldPrevAccTimes))
for i, prevAccTime := range oldPrevAccTimes {
prevAccTimes[i] = v016cdp.GenesisAccumulationTime{
CollateralType: prevAccTime.CollateralType,
PreviousAccumulationTime: prevAccTime.PreviousAccumulationTime,
InterestFactor: prevAccTime.InterestFactor,
}
}
return prevAccTimes
}
func migrateTotalPrincipals(oldTotalPrincipals v015cdp.GenesisTotalPrincipals) v016cdp.GenesisTotalPrincipals {
totalPrincipals := make(v016cdp.GenesisTotalPrincipals, len(oldTotalPrincipals))
for i, tp := range oldTotalPrincipals {
totalPrincipals[i] = v016cdp.GenesisTotalPrincipal{
CollateralType: tp.CollateralType,
TotalPrincipal: tp.TotalPrincipal,
}
}
return totalPrincipals
}
// Migrate converts v0.15 cdp state and returns it in v0.16 format
func Migrate(oldState v015cdp.GenesisState) *v016cdp.GenesisState {
return &v016cdp.GenesisState{
Params: migrateParams(oldState.Params),
CDPs: migrateCDPs(oldState.CDPs),
Deposits: migrateDeposits(oldState.Deposits),
StartingCdpID: oldState.StartingCdpID,
DebtDenom: oldState.DebtDenom,
GovDenom: oldState.GovDenom,
PreviousAccumulationTimes: migratePrevAccTimes(oldState.PreviousAccumulationTimes),
TotalPrincipals: migrateTotalPrincipals(oldState.TotalPrincipals),
}
}