-
Notifications
You must be signed in to change notification settings - Fork 0
/
migrate.go
109 lines (101 loc) · 3.97 KB
/
migrate.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package v0_16
import (
v015cdp "github.com/incubus-network/fury/x/cdp/legacy/v0_15"
v016cdp "github.com/incubus-network/fury/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),
}
}