mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-12-25 07:45:18 +00:00
update migration command from v0.13 to v0.14 (#880)
* update migration from v0.13 to v0.14 * update dates, add rollback instructions * address review comments
This commit is contained in:
parent
fa97a7db0e
commit
18ee69f480
@ -3,6 +3,7 @@ package migrate
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/kava-labs/kava/migrate/v0_14"
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
@ -11,8 +12,6 @@ import (
|
||||
"github.com/cosmos/cosmos-sdk/version"
|
||||
|
||||
tmtypes "github.com/tendermint/tendermint/types"
|
||||
|
||||
"github.com/kava-labs/kava/migrate/v0_13"
|
||||
)
|
||||
|
||||
// MigrateGenesisCmd returns a command to execute genesis state migration.
|
||||
@ -31,7 +30,7 @@ func MigrateGenesisCmd(_ *server.Context, cdc *codec.Codec) *cobra.Command {
|
||||
return fmt.Errorf("failed to read genesis document from file %s: %w", importGenesis, err)
|
||||
}
|
||||
|
||||
newGenDoc := v0_13.Migrate(*genDoc)
|
||||
newGenDoc := v0_14.Migrate(*genDoc)
|
||||
|
||||
bz, err := cdc.MarshalJSONIndent(newGenDoc, "", " ")
|
||||
if err != nil {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package v0_13
|
||||
package v0_14
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
@ -17,17 +17,17 @@ import (
|
||||
|
||||
"github.com/kava-labs/kava/app"
|
||||
"github.com/kava-labs/kava/x/bep3"
|
||||
v0_13cdp "github.com/kava-labs/kava/x/cdp"
|
||||
v0_14cdp "github.com/kava-labs/kava/x/cdp"
|
||||
v0_11cdp "github.com/kava-labs/kava/x/cdp/legacy/v0_11"
|
||||
v0_13committee "github.com/kava-labs/kava/x/committee"
|
||||
v0_14committee "github.com/kava-labs/kava/x/committee"
|
||||
v0_11committee "github.com/kava-labs/kava/x/committee/legacy/v0_11"
|
||||
v0_13hard "github.com/kava-labs/kava/x/hard"
|
||||
v0_14hard "github.com/kava-labs/kava/x/hard"
|
||||
v0_11hard "github.com/kava-labs/kava/x/hard/legacy/v0_11"
|
||||
v0_13incentive "github.com/kava-labs/kava/x/incentive"
|
||||
v0_14incentive "github.com/kava-labs/kava/x/incentive"
|
||||
v0_11incentive "github.com/kava-labs/kava/x/incentive/legacy/v0_11"
|
||||
"github.com/kava-labs/kava/x/kavadist"
|
||||
v0_11pricefeed "github.com/kava-labs/kava/x/pricefeed"
|
||||
v0_13pricefeed "github.com/kava-labs/kava/x/pricefeed"
|
||||
v0_14pricefeed "github.com/kava-labs/kava/x/pricefeed"
|
||||
validatorvesting "github.com/kava-labs/kava/x/validator-vesting"
|
||||
)
|
||||
|
||||
@ -49,8 +49,8 @@ func Migrate(genDoc tmtypes.GenesisDoc) tmtypes.GenesisDoc {
|
||||
panic(err)
|
||||
}
|
||||
newAppState := MigrateAppState(appStateMap)
|
||||
v0_13Codec := app.MakeCodec()
|
||||
marshaledNewAppState, err := v0_13Codec.MarshalJSON(newAppState)
|
||||
v0_14Codec := app.MakeCodec()
|
||||
marshaledNewAppState, err := v0_14Codec.MarshalJSON(newAppState)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
@ -63,40 +63,40 @@ func Migrate(genDoc tmtypes.GenesisDoc) tmtypes.GenesisDoc {
|
||||
|
||||
// MigrateAppState migrates application state from v0.11 (or v0.12) format to a kava v0.13.x format
|
||||
func MigrateAppState(v0_11AppState genutil.AppMap) genutil.AppMap {
|
||||
v0_13AppState := v0_11AppState
|
||||
v0_14AppState := v0_11AppState
|
||||
cdc := app.MakeCodec()
|
||||
var hardGenState v0_11hard.GenesisState
|
||||
if v0_11AppState[v0_13hard.ModuleName] == nil {
|
||||
if v0_11AppState[v0_14hard.ModuleName] == nil {
|
||||
cdc.MustUnmarshalJSON(v0_11AppState[v0_11hard.ModuleName], &hardGenState)
|
||||
delete(v0_11AppState, v0_11hard.ModuleName)
|
||||
v0_13AppState[v0_13hard.ModuleName] = cdc.MustMarshalJSON(
|
||||
v0_14AppState[v0_14hard.ModuleName] = cdc.MustMarshalJSON(
|
||||
Hard(hardGenState))
|
||||
}
|
||||
delete(v0_13AppState, v0_11hard.ModuleName)
|
||||
delete(v0_14AppState, v0_11hard.ModuleName)
|
||||
if v0_11AppState[v0_11cdp.ModuleName] != nil {
|
||||
var cdpGenState v0_11cdp.GenesisState
|
||||
cdc.MustUnmarshalJSON(v0_11AppState[v0_11cdp.ModuleName], &cdpGenState)
|
||||
delete(v0_11AppState, v0_11cdp.ModuleName)
|
||||
v0_13AppState[v0_13cdp.ModuleName] = cdc.MustMarshalJSON(
|
||||
v0_14AppState[v0_14cdp.ModuleName] = cdc.MustMarshalJSON(
|
||||
CDP(cdpGenState))
|
||||
}
|
||||
if v0_11AppState[v0_11incentive.ModuleName] != nil {
|
||||
var incentiveGenState v0_11incentive.GenesisState
|
||||
cdc.MustUnmarshalJSON(v0_11AppState[v0_13incentive.ModuleName], &incentiveGenState)
|
||||
cdc.MustUnmarshalJSON(v0_11AppState[v0_14incentive.ModuleName], &incentiveGenState)
|
||||
delete(v0_11AppState, v0_11incentive.ModuleName)
|
||||
v0_13AppState[v0_13incentive.ModuleName] = cdc.MustMarshalJSON(Incentive(hardGenState, incentiveGenState))
|
||||
v0_14AppState[v0_14incentive.ModuleName] = cdc.MustMarshalJSON(Incentive(hardGenState, incentiveGenState))
|
||||
}
|
||||
if v0_11AppState[v0_11pricefeed.ModuleName] != nil {
|
||||
var pricefeedGS v0_11pricefeed.GenesisState
|
||||
cdc.MustUnmarshalJSON(v0_11AppState[v0_13pricefeed.ModuleName], &pricefeedGS)
|
||||
cdc.MustUnmarshalJSON(v0_11AppState[v0_14pricefeed.ModuleName], &pricefeedGS)
|
||||
delete(v0_11AppState, v0_11pricefeed.ModuleName)
|
||||
v0_13AppState[v0_13pricefeed.ModuleName] = cdc.MustMarshalJSON(Pricefeed(pricefeedGS))
|
||||
v0_14AppState[v0_14pricefeed.ModuleName] = cdc.MustMarshalJSON(Pricefeed(pricefeedGS))
|
||||
}
|
||||
if v0_11AppState[bep3.ModuleName] != nil {
|
||||
var bep3GS bep3.GenesisState
|
||||
cdc.MustUnmarshalJSON(v0_11AppState[bep3.ModuleName], &bep3GS)
|
||||
delete(v0_11AppState, bep3.ModuleName)
|
||||
v0_13AppState[bep3.ModuleName] = cdc.MustMarshalJSON(Bep3(bep3GS))
|
||||
v0_14AppState[bep3.ModuleName] = cdc.MustMarshalJSON(Bep3(bep3GS))
|
||||
}
|
||||
if v0_11AppState[v0_11committee.ModuleName] != nil {
|
||||
var committeeGS v0_11committee.GenesisState
|
||||
@ -106,32 +106,32 @@ func MigrateAppState(v0_11AppState genutil.AppMap) genutil.AppMap {
|
||||
cdc.MustUnmarshalJSON(v0_11AppState[v0_11committee.ModuleName], &committeeGS)
|
||||
delete(v0_11AppState, v0_11committee.ModuleName)
|
||||
cdc = app.MakeCodec()
|
||||
v0_13AppState[v0_13committee.ModuleName] = cdc.MustMarshalJSON(Committee(committeeGS))
|
||||
v0_14AppState[v0_14committee.ModuleName] = cdc.MustMarshalJSON(Committee(committeeGS))
|
||||
}
|
||||
if v0_11AppState[auth.ModuleName] != nil {
|
||||
var authGS auth.GenesisState
|
||||
cdc.MustUnmarshalJSON(v0_11AppState[auth.ModuleName], &authGS)
|
||||
delete(v0_11AppState, auth.ModuleName)
|
||||
v0_13AppState[auth.ModuleName] = cdc.MustMarshalJSON(Auth(authGS))
|
||||
v0_14AppState[auth.ModuleName] = cdc.MustMarshalJSON(Auth(authGS))
|
||||
}
|
||||
return v0_13AppState
|
||||
return v0_14AppState
|
||||
|
||||
}
|
||||
|
||||
// CDP migrates from a v0.11 cdp genesis state to a v0.13 cdp genesis state
|
||||
func CDP(oldGenState v0_11cdp.GenesisState) v0_13cdp.GenesisState {
|
||||
var newCDPs v0_13cdp.CDPs
|
||||
var newDeposits v0_13cdp.Deposits
|
||||
var newCollateralParams v0_13cdp.CollateralParams
|
||||
var newGenesisAccumulationTimes v0_13cdp.GenesisAccumulationTimes
|
||||
func CDP(oldGenState v0_11cdp.GenesisState) v0_14cdp.GenesisState {
|
||||
var newCDPs v0_14cdp.CDPs
|
||||
var newDeposits v0_14cdp.Deposits
|
||||
var newCollateralParams v0_14cdp.CollateralParams
|
||||
var newGenesisAccumulationTimes v0_14cdp.GenesisAccumulationTimes
|
||||
var previousAccumulationTime time.Time
|
||||
var totalPrincipals v0_13cdp.GenesisTotalPrincipals
|
||||
var totalPrincipals v0_14cdp.GenesisTotalPrincipals
|
||||
newStartingID := oldGenState.StartingCdpID
|
||||
|
||||
totalPrincipalMap := make(map[string]sdk.Int)
|
||||
|
||||
for _, cdp := range oldGenState.CDPs {
|
||||
newCDP := v0_13cdp.NewCDPWithFees(cdp.ID, cdp.Owner, cdp.Collateral, cdp.Type, cdp.Principal, cdp.AccumulatedFees, cdp.FeesUpdated, sdk.OneDec())
|
||||
newCDP := v0_14cdp.NewCDPWithFees(cdp.ID, cdp.Owner, cdp.Collateral, cdp.Type, cdp.Principal, cdp.AccumulatedFees, cdp.FeesUpdated, sdk.OneDec())
|
||||
if previousAccumulationTime.Before(cdp.FeesUpdated) {
|
||||
previousAccumulationTime = cdp.FeesUpdated
|
||||
}
|
||||
@ -145,19 +145,19 @@ func CDP(oldGenState v0_11cdp.GenesisState) v0_13cdp.GenesisState {
|
||||
}
|
||||
|
||||
for _, cp := range oldGenState.Params.CollateralParams {
|
||||
newCollateralParam := v0_13cdp.NewCollateralParam(cp.Denom, cp.Type, cp.LiquidationRatio, cp.DebtLimit, cp.StabilityFee, cp.AuctionSize, cp.LiquidationPenalty, cp.Prefix, cp.SpotMarketID, cp.LiquidationMarketID, sdk.MustNewDecFromStr("0.01"), sdk.NewInt(10), cp.ConversionFactor)
|
||||
newCollateralParam := v0_14cdp.NewCollateralParam(cp.Denom, cp.Type, cp.LiquidationRatio, cp.DebtLimit, cp.StabilityFee, cp.AuctionSize, cp.LiquidationPenalty, cp.Prefix, cp.SpotMarketID, cp.LiquidationMarketID, sdk.MustNewDecFromStr("0.01"), sdk.NewInt(10), cp.ConversionFactor)
|
||||
newCollateralParams = append(newCollateralParams, newCollateralParam)
|
||||
newGenesisAccumulationTime := v0_13cdp.NewGenesisAccumulationTime(cp.Type, previousAccumulationTime, sdk.OneDec())
|
||||
newGenesisAccumulationTime := v0_14cdp.NewGenesisAccumulationTime(cp.Type, previousAccumulationTime, sdk.OneDec())
|
||||
newGenesisAccumulationTimes = append(newGenesisAccumulationTimes, newGenesisAccumulationTime)
|
||||
}
|
||||
|
||||
for _, dep := range oldGenState.Deposits {
|
||||
newDep := v0_13cdp.NewDeposit(dep.CdpID, dep.Depositor, dep.Amount)
|
||||
newDep := v0_14cdp.NewDeposit(dep.CdpID, dep.Depositor, dep.Amount)
|
||||
newDeposits = append(newDeposits, newDep)
|
||||
}
|
||||
|
||||
for ctype, tp := range totalPrincipalMap {
|
||||
totalPrincipal := v0_13cdp.NewGenesisTotalPrincipal(ctype, tp)
|
||||
totalPrincipal := v0_14cdp.NewGenesisTotalPrincipal(ctype, tp)
|
||||
totalPrincipals = append(totalPrincipals, totalPrincipal)
|
||||
}
|
||||
|
||||
@ -165,13 +165,13 @@ func CDP(oldGenState v0_11cdp.GenesisState) v0_13cdp.GenesisState {
|
||||
|
||||
oldDebtParam := oldGenState.Params.DebtParam
|
||||
|
||||
newDebtParam := v0_13cdp.NewDebtParam(oldDebtParam.Denom, oldDebtParam.ReferenceAsset, oldDebtParam.ConversionFactor, oldDebtParam.DebtFloor)
|
||||
newDebtParam := v0_14cdp.NewDebtParam(oldDebtParam.Denom, oldDebtParam.ReferenceAsset, oldDebtParam.ConversionFactor, oldDebtParam.DebtFloor)
|
||||
|
||||
newGlobalDebtLimit := oldGenState.Params.GlobalDebtLimit
|
||||
|
||||
newParams := v0_13cdp.NewParams(newGlobalDebtLimit, newCollateralParams, newDebtParam, oldGenState.Params.SurplusAuctionThreshold, oldGenState.Params.SurplusAuctionLot, oldGenState.Params.DebtAuctionThreshold, oldGenState.Params.DebtAuctionLot, false)
|
||||
newParams := v0_14cdp.NewParams(newGlobalDebtLimit, newCollateralParams, newDebtParam, oldGenState.Params.SurplusAuctionThreshold, oldGenState.Params.SurplusAuctionLot, oldGenState.Params.DebtAuctionThreshold, oldGenState.Params.DebtAuctionLot, false)
|
||||
|
||||
return v0_13cdp.NewGenesisState(
|
||||
return v0_14cdp.NewGenesisState(
|
||||
newParams,
|
||||
newCDPs,
|
||||
newDeposits,
|
||||
@ -184,59 +184,59 @@ func CDP(oldGenState v0_11cdp.GenesisState) v0_13cdp.GenesisState {
|
||||
}
|
||||
|
||||
// Hard migrates from a v0.11 hard (harvest) genesis state to a v0.13 hard genesis state
|
||||
func Hard(genesisState v0_11hard.GenesisState) v0_13hard.GenesisState {
|
||||
v13Deposits := v0_13hard.Deposits{}
|
||||
v13DepositorMap := make(map[string]v0_13hard.Deposit)
|
||||
v13GenesisAccumulationTimes := v0_13hard.GenesisAccumulationTimes{}
|
||||
func Hard(genesisState v0_11hard.GenesisState) v0_14hard.GenesisState {
|
||||
v13Deposits := v0_14hard.Deposits{}
|
||||
v13DepositorMap := make(map[string]v0_14hard.Deposit)
|
||||
v13GenesisAccumulationTimes := v0_14hard.GenesisAccumulationTimes{}
|
||||
v13TotalSupplied := sdk.NewCoins()
|
||||
|
||||
for _, dep := range genesisState.Deposits {
|
||||
v13Deposit, ok := v13DepositorMap[dep.Depositor.String()]
|
||||
if !ok {
|
||||
v13Deposit := v0_13hard.NewDeposit(dep.Depositor, sdk.NewCoins(dep.Amount), v0_13hard.SupplyInterestFactors{v0_13hard.NewSupplyInterestFactor(dep.Amount.Denom, sdk.OneDec())})
|
||||
v13Deposit := v0_14hard.NewDeposit(dep.Depositor, sdk.NewCoins(dep.Amount), v0_14hard.SupplyInterestFactors{v0_14hard.NewSupplyInterestFactor(dep.Amount.Denom, sdk.OneDec())})
|
||||
v13DepositorMap[dep.Depositor.String()] = v13Deposit
|
||||
} else {
|
||||
v13Deposit.Amount = v13Deposit.Amount.Add(dep.Amount)
|
||||
v13Deposit.Index = append(v13Deposit.Index, v0_13hard.NewSupplyInterestFactor(dep.Amount.Denom, sdk.OneDec()))
|
||||
v13Deposit.Index = append(v13Deposit.Index, v0_14hard.NewSupplyInterestFactor(dep.Amount.Denom, sdk.OneDec()))
|
||||
v13DepositorMap[dep.Depositor.String()] = v13Deposit
|
||||
}
|
||||
}
|
||||
|
||||
defaultInterestModel := v0_13hard.NewInterestRateModel(sdk.ZeroDec(), sdk.MustNewDecFromStr("0.05"), sdk.MustNewDecFromStr("0.8"), sdk.MustNewDecFromStr("1.0"))
|
||||
newParams := v0_13hard.NewParams(
|
||||
v0_13hard.MoneyMarkets{
|
||||
defaultInterestModel := v0_14hard.NewInterestRateModel(sdk.ZeroDec(), sdk.MustNewDecFromStr("0.05"), sdk.MustNewDecFromStr("0.8"), sdk.MustNewDecFromStr("1.0"))
|
||||
newParams := v0_14hard.NewParams(
|
||||
v0_14hard.MoneyMarkets{
|
||||
|
||||
v0_13hard.NewMoneyMarket("btcb", v0_13hard.NewBorrowLimit(true, sdk.ZeroDec(), sdk.MustNewDecFromStr("0.5")), "btc:usd", sdk.NewInt(100000000),
|
||||
v0_14hard.NewMoneyMarket("btcb", v0_14hard.NewBorrowLimit(true, sdk.ZeroDec(), sdk.MustNewDecFromStr("0.5")), "btc:usd", sdk.NewInt(100000000),
|
||||
defaultInterestModel,
|
||||
sdk.MustNewDecFromStr("0.025"), sdk.MustNewDecFromStr("0.02"),
|
||||
),
|
||||
// bnb
|
||||
v0_13hard.NewMoneyMarket("bnb", v0_13hard.NewBorrowLimit(true, sdk.ZeroDec(), sdk.MustNewDecFromStr("0.5")), "bnb:usd", sdk.NewInt(100000000),
|
||||
v0_14hard.NewMoneyMarket("bnb", v0_14hard.NewBorrowLimit(true, sdk.ZeroDec(), sdk.MustNewDecFromStr("0.5")), "bnb:usd", sdk.NewInt(100000000),
|
||||
defaultInterestModel,
|
||||
sdk.MustNewDecFromStr("0.025"), sdk.MustNewDecFromStr("0.02"),
|
||||
),
|
||||
// xrpb
|
||||
v0_13hard.NewMoneyMarket("xrpb", v0_13hard.NewBorrowLimit(true, sdk.ZeroDec(), sdk.MustNewDecFromStr("0.5")), "xrp:usd", sdk.NewInt(100000000),
|
||||
v0_14hard.NewMoneyMarket("xrpb", v0_14hard.NewBorrowLimit(true, sdk.ZeroDec(), sdk.MustNewDecFromStr("0.5")), "xrp:usd", sdk.NewInt(100000000),
|
||||
defaultInterestModel,
|
||||
sdk.MustNewDecFromStr("0.025"), sdk.MustNewDecFromStr("0.02"),
|
||||
),
|
||||
// busd
|
||||
v0_13hard.NewMoneyMarket("busd", v0_13hard.NewBorrowLimit(true, sdk.MustNewDecFromStr("100000000000000"), sdk.MustNewDecFromStr("0.5")), "busd:usd", sdk.NewInt(100000000),
|
||||
v0_14hard.NewMoneyMarket("busd", v0_14hard.NewBorrowLimit(true, sdk.MustNewDecFromStr("100000000000000"), sdk.MustNewDecFromStr("0.5")), "busd:usd", sdk.NewInt(100000000),
|
||||
defaultInterestModel,
|
||||
sdk.MustNewDecFromStr("0.025"), sdk.MustNewDecFromStr("0.02"),
|
||||
),
|
||||
// usdx
|
||||
v0_13hard.NewMoneyMarket("usdx", v0_13hard.NewBorrowLimit(true, sdk.ZeroDec(), sdk.ZeroDec()), "usdx:usd", sdk.NewInt(1000000),
|
||||
v0_14hard.NewMoneyMarket("usdx", v0_14hard.NewBorrowLimit(true, sdk.ZeroDec(), sdk.ZeroDec()), "usdx:usd", sdk.NewInt(1000000),
|
||||
defaultInterestModel,
|
||||
sdk.MustNewDecFromStr("0.025"), sdk.MustNewDecFromStr("0.02"),
|
||||
),
|
||||
// ukava
|
||||
v0_13hard.NewMoneyMarket("ukava", v0_13hard.NewBorrowLimit(true, sdk.ZeroDec(), sdk.MustNewDecFromStr("0.5")), "kava:usd", sdk.NewInt(1000000),
|
||||
v0_14hard.NewMoneyMarket("ukava", v0_14hard.NewBorrowLimit(true, sdk.ZeroDec(), sdk.MustNewDecFromStr("0.5")), "kava:usd", sdk.NewInt(1000000),
|
||||
defaultInterestModel,
|
||||
sdk.MustNewDecFromStr("0.025"), sdk.MustNewDecFromStr("0.02"),
|
||||
),
|
||||
// hard
|
||||
v0_13hard.NewMoneyMarket("hard", v0_13hard.NewBorrowLimit(true, sdk.ZeroDec(), sdk.MustNewDecFromStr("0.5")), "hard:usd", sdk.NewInt(1000000),
|
||||
v0_14hard.NewMoneyMarket("hard", v0_14hard.NewBorrowLimit(true, sdk.ZeroDec(), sdk.MustNewDecFromStr("0.5")), "hard:usd", sdk.NewInt(1000000),
|
||||
defaultInterestModel,
|
||||
sdk.MustNewDecFromStr("0.025"), sdk.MustNewDecFromStr("0.02"),
|
||||
),
|
||||
@ -253,16 +253,16 @@ func Hard(genesisState v0_11hard.GenesisState) v0_13hard.GenesisState {
|
||||
})
|
||||
|
||||
for _, mm := range newParams.MoneyMarkets {
|
||||
genAccumulationTime := v0_13hard.NewGenesisAccumulationTime(mm.Denom, GenesisTime, sdk.OneDec(), sdk.OneDec())
|
||||
genAccumulationTime := v0_14hard.NewGenesisAccumulationTime(mm.Denom, GenesisTime, sdk.OneDec(), sdk.OneDec())
|
||||
v13GenesisAccumulationTimes = append(v13GenesisAccumulationTimes, genAccumulationTime)
|
||||
}
|
||||
|
||||
return v0_13hard.NewGenesisState(newParams, v13GenesisAccumulationTimes, v13Deposits, v0_13hard.DefaultBorrows, v13TotalSupplied, v0_13hard.DefaultTotalBorrowed, v0_13hard.DefaultTotalReserves)
|
||||
return v0_14hard.NewGenesisState(newParams, v13GenesisAccumulationTimes, v13Deposits, v0_14hard.DefaultBorrows, v13TotalSupplied, v0_14hard.DefaultTotalBorrowed, v0_14hard.DefaultTotalReserves)
|
||||
}
|
||||
|
||||
// Incentive migrates from a v0.11 incentive genesis state to a v0.13 incentive genesis state
|
||||
func Incentive(hardGS v0_11hard.GenesisState, incentiveGS v0_11incentive.GenesisState) v0_13incentive.GenesisState {
|
||||
usdxMintingRewardPeriods := v0_13incentive.RewardPeriods{}
|
||||
func Incentive(hardGS v0_11hard.GenesisState, incentiveGS v0_11incentive.GenesisState) v0_14incentive.GenesisState {
|
||||
usdxMintingRewardPeriods := v0_14incentive.RewardPeriods{}
|
||||
usdxRewardsPerSecondMap := make(map[string]sdk.Coin)
|
||||
usdxRewardsPerSecondMap["bnb-a"] = sdk.NewCoin("ukava", sdk.NewInt(122354))
|
||||
usdxRewardsPerSecondMap["btcb-a"] = sdk.NewCoin("ukava", sdk.NewInt(158730))
|
||||
@ -276,49 +276,49 @@ func Incentive(hardGS v0_11hard.GenesisState, incentiveGS v0_11incentive.Genesis
|
||||
if !ok {
|
||||
panic(fmt.Sprintf("No rewards per second for collateral type: %s\n", rp.CollateralType))
|
||||
}
|
||||
newRP := v0_13incentive.NewRewardPeriod(true, rp.CollateralType, GenesisTime, RewardEndTime, rewardsPerSecond)
|
||||
newRP := v0_14incentive.NewRewardPeriod(true, rp.CollateralType, GenesisTime, RewardEndTime, rewardsPerSecond)
|
||||
usdxMintingRewardPeriods = append(usdxMintingRewardPeriods, newRP)
|
||||
}
|
||||
|
||||
hardSupplyRewardPeriods := v0_13incentive.MultiRewardPeriods{}
|
||||
hardSupplyRewardPeriods := v0_14incentive.MultiRewardPeriods{}
|
||||
for _, rp := range hardGS.Params.LiquidityProviderSchedules {
|
||||
newRP := v0_13incentive.NewMultiRewardPeriod(true, rp.DepositDenom, rp.Start, rp.End, sdk.NewCoins(rp.RewardsPerSecond))
|
||||
newRP := v0_14incentive.NewMultiRewardPeriod(true, rp.DepositDenom, rp.Start, rp.End, sdk.NewCoins(rp.RewardsPerSecond))
|
||||
hardSupplyRewardPeriods = append(hardSupplyRewardPeriods, newRP)
|
||||
}
|
||||
hardBorrowRewardPeriods := v0_13incentive.MultiRewardPeriods{}
|
||||
hardDelegatorRewardPeriods := v0_13incentive.RewardPeriods{}
|
||||
hardBorrowRewardPeriods := v0_14incentive.MultiRewardPeriods{}
|
||||
hardDelegatorRewardPeriods := v0_14incentive.RewardPeriods{}
|
||||
for _, rp := range hardGS.Params.DelegatorDistributionSchedules {
|
||||
newRP := v0_13incentive.NewRewardPeriod(rp.DistributionSchedule.Active, rp.DistributionSchedule.DepositDenom, rp.DistributionSchedule.Start, rp.DistributionSchedule.End, rp.DistributionSchedule.RewardsPerSecond)
|
||||
newRP := v0_14incentive.NewRewardPeriod(rp.DistributionSchedule.Active, rp.DistributionSchedule.DepositDenom, rp.DistributionSchedule.Start, rp.DistributionSchedule.End, rp.DistributionSchedule.RewardsPerSecond)
|
||||
hardDelegatorRewardPeriods = append(hardDelegatorRewardPeriods, newRP)
|
||||
}
|
||||
params := v0_13incentive.NewParams(usdxMintingRewardPeriods, hardSupplyRewardPeriods, hardBorrowRewardPeriods, hardDelegatorRewardPeriods, v0_13incentive.Multipliers{v0_13incentive.NewMultiplier(v0_13incentive.Small, 1, sdk.MustNewDecFromStr("0.2")), v0_13incentive.NewMultiplier(v0_13incentive.Large, 12, sdk.MustNewDecFromStr("1.0"))}, ClaimEndTime)
|
||||
params := v0_14incentive.NewParams(usdxMintingRewardPeriods, hardSupplyRewardPeriods, hardBorrowRewardPeriods, hardDelegatorRewardPeriods, v0_14incentive.Multipliers{v0_14incentive.NewMultiplier(v0_14incentive.Small, 1, sdk.MustNewDecFromStr("0.2")), v0_14incentive.NewMultiplier(v0_14incentive.Large, 12, sdk.MustNewDecFromStr("1.0"))}, ClaimEndTime)
|
||||
|
||||
usdxGenAccumulationTimes := v0_13incentive.GenesisAccumulationTimes{}
|
||||
usdxGenAccumulationTimes := v0_14incentive.GenesisAccumulationTimes{}
|
||||
|
||||
for _, rp := range params.USDXMintingRewardPeriods {
|
||||
gat := v0_13incentive.NewGenesisAccumulationTime(rp.CollateralType, GenesisTime)
|
||||
gat := v0_14incentive.NewGenesisAccumulationTime(rp.CollateralType, GenesisTime)
|
||||
usdxGenAccumulationTimes = append(usdxGenAccumulationTimes, gat)
|
||||
}
|
||||
hardSupplyGenAccumulationTimes := v0_13incentive.GenesisAccumulationTimes{}
|
||||
hardSupplyGenAccumulationTimes := v0_14incentive.GenesisAccumulationTimes{}
|
||||
for _, rp := range params.HardSupplyRewardPeriods {
|
||||
gat := v0_13incentive.NewGenesisAccumulationTime(rp.CollateralType, GenesisTime)
|
||||
gat := v0_14incentive.NewGenesisAccumulationTime(rp.CollateralType, GenesisTime)
|
||||
hardSupplyGenAccumulationTimes = append(hardSupplyGenAccumulationTimes, gat)
|
||||
}
|
||||
hardBorrowGenAccumulationTimes := v0_13incentive.GenesisAccumulationTimes{}
|
||||
hardBorrowGenAccumulationTimes := v0_14incentive.GenesisAccumulationTimes{}
|
||||
for _, rp := range params.HardBorrowRewardPeriods {
|
||||
gat := v0_13incentive.NewGenesisAccumulationTime(rp.CollateralType, GenesisTime)
|
||||
gat := v0_14incentive.NewGenesisAccumulationTime(rp.CollateralType, GenesisTime)
|
||||
hardBorrowGenAccumulationTimes = append(hardBorrowGenAccumulationTimes, gat)
|
||||
}
|
||||
|
||||
hardDelegatorGenAccumulationTimes := v0_13incentive.GenesisAccumulationTimes{}
|
||||
hardDelegatorGenAccumulationTimes := v0_14incentive.GenesisAccumulationTimes{}
|
||||
|
||||
for _, rp := range params.HardDelegatorRewardPeriods {
|
||||
gat := v0_13incentive.NewGenesisAccumulationTime(rp.CollateralType, GenesisTime)
|
||||
gat := v0_14incentive.NewGenesisAccumulationTime(rp.CollateralType, GenesisTime)
|
||||
hardDelegatorGenAccumulationTimes = append(hardDelegatorGenAccumulationTimes, gat)
|
||||
}
|
||||
|
||||
usdxClaims := v0_13incentive.USDXMintingClaims{}
|
||||
usdxClaimMap := make(map[string]v0_13incentive.USDXMintingClaim)
|
||||
usdxClaims := v0_14incentive.USDXMintingClaims{}
|
||||
usdxClaimMap := make(map[string]v0_14incentive.USDXMintingClaim)
|
||||
claimEndMap := make(map[uint64]time.Time)
|
||||
|
||||
for _, cp := range incentiveGS.ClaimPeriods {
|
||||
@ -331,12 +331,12 @@ func Incentive(hardGS v0_11hard.GenesisState, incentiveGS v0_11incentive.Genesis
|
||||
}
|
||||
newClaim, ok := usdxClaimMap[claim.Owner.String()]
|
||||
if !ok {
|
||||
newClaim = v0_13incentive.NewUSDXMintingClaim(claim.Owner, claim.Reward, v0_13incentive.RewardIndexes{v0_13incentive.NewRewardIndex(claim.CollateralType, sdk.ZeroDec())})
|
||||
newClaim = v0_14incentive.NewUSDXMintingClaim(claim.Owner, claim.Reward, v0_14incentive.RewardIndexes{v0_14incentive.NewRewardIndex(claim.CollateralType, sdk.ZeroDec())})
|
||||
} else {
|
||||
newClaim.Reward = newClaim.Reward.Add(claim.Reward)
|
||||
_, found := newClaim.RewardIndexes.GetRewardIndex(claim.CollateralType)
|
||||
if !found {
|
||||
newClaim.RewardIndexes = append(newClaim.RewardIndexes, v0_13incentive.NewRewardIndex(claim.CollateralType, sdk.ZeroDec()))
|
||||
newClaim.RewardIndexes = append(newClaim.RewardIndexes, v0_14incentive.NewRewardIndex(claim.CollateralType, sdk.ZeroDec()))
|
||||
}
|
||||
}
|
||||
usdxClaimMap[newClaim.Owner.String()] = newClaim
|
||||
@ -346,8 +346,8 @@ func Incentive(hardGS v0_11hard.GenesisState, incentiveGS v0_11incentive.Genesis
|
||||
usdxClaims = append(usdxClaims, claim)
|
||||
}
|
||||
|
||||
hardClaims := v0_13incentive.HardLiquidityProviderClaims{}
|
||||
hardClaimMap := make(map[string]v0_13incentive.HardLiquidityProviderClaim)
|
||||
hardClaims := v0_14incentive.HardLiquidityProviderClaims{}
|
||||
hardClaimMap := make(map[string]v0_14incentive.HardLiquidityProviderClaim)
|
||||
|
||||
for _, claim := range hardGS.Claims {
|
||||
newClaim, ok := hardClaimMap[claim.Owner.String()]
|
||||
@ -355,25 +355,25 @@ func Incentive(hardGS v0_11hard.GenesisState, incentiveGS v0_11incentive.Genesis
|
||||
// if claim.Type == "lp" -- hard supply
|
||||
// if claim.Type == "stake" -- hard delegator
|
||||
// hard barrow always empty
|
||||
delegatorIndexes := v0_13incentive.RewardIndexes{}
|
||||
supplyIndexes := v0_13incentive.MultiRewardIndexes{}
|
||||
borrowIndexes := v0_13incentive.MultiRewardIndexes{}
|
||||
delegatorIndexes := v0_14incentive.RewardIndexes{}
|
||||
supplyIndexes := v0_14incentive.MultiRewardIndexes{}
|
||||
borrowIndexes := v0_14incentive.MultiRewardIndexes{}
|
||||
if claim.Type == v0_11hard.Stake {
|
||||
delegatorIndexes = v0_13incentive.RewardIndexes{v0_13incentive.NewRewardIndex(claim.DepositDenom, sdk.ZeroDec())}
|
||||
delegatorIndexes = v0_14incentive.RewardIndexes{v0_14incentive.NewRewardIndex(claim.DepositDenom, sdk.ZeroDec())}
|
||||
}
|
||||
if claim.Type == v0_11hard.LP {
|
||||
supplyIndexes = v0_13incentive.MultiRewardIndexes{v0_13incentive.NewMultiRewardIndex(claim.DepositDenom, v0_13incentive.RewardIndexes{v0_13incentive.NewRewardIndex("hard", sdk.ZeroDec())})}
|
||||
supplyIndexes = v0_14incentive.MultiRewardIndexes{v0_14incentive.NewMultiRewardIndex(claim.DepositDenom, v0_14incentive.RewardIndexes{v0_14incentive.NewRewardIndex("hard", sdk.ZeroDec())})}
|
||||
}
|
||||
newClaim = v0_13incentive.NewHardLiquidityProviderClaim(claim.Owner, sdk.NewCoins(claim.Amount), supplyIndexes, borrowIndexes, delegatorIndexes)
|
||||
newClaim = v0_14incentive.NewHardLiquidityProviderClaim(claim.Owner, sdk.NewCoins(claim.Amount), supplyIndexes, borrowIndexes, delegatorIndexes)
|
||||
} else {
|
||||
newClaim.Reward = newClaim.Reward.Add(claim.Amount)
|
||||
if claim.Type == v0_11hard.Stake {
|
||||
newClaim.DelegatorRewardIndexes = v0_13incentive.RewardIndexes{v0_13incentive.NewRewardIndex(claim.DepositDenom, sdk.ZeroDec())}
|
||||
newClaim.DelegatorRewardIndexes = v0_14incentive.RewardIndexes{v0_14incentive.NewRewardIndex(claim.DepositDenom, sdk.ZeroDec())}
|
||||
}
|
||||
if claim.Type == v0_11hard.LP {
|
||||
_, found := newClaim.SupplyRewardIndexes.GetRewardIndex(claim.DepositDenom)
|
||||
if !found {
|
||||
newClaim.SupplyRewardIndexes = append(newClaim.SupplyRewardIndexes, v0_13incentive.NewMultiRewardIndex(claim.DepositDenom, v0_13incentive.RewardIndexes{v0_13incentive.NewRewardIndex("hard", sdk.ZeroDec())}))
|
||||
newClaim.SupplyRewardIndexes = append(newClaim.SupplyRewardIndexes, v0_14incentive.NewMultiRewardIndex(claim.DepositDenom, v0_14incentive.RewardIndexes{v0_14incentive.NewRewardIndex("hard", sdk.ZeroDec())}))
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -387,7 +387,7 @@ func Incentive(hardGS v0_11hard.GenesisState, incentiveGS v0_11incentive.Genesis
|
||||
sort.Slice(hardClaims, func(i, j int) bool { return hardClaims[i].Owner.String() < hardClaims[j].Owner.String() })
|
||||
sort.Slice(usdxClaims, func(i, j int) bool { return usdxClaims[i].Owner.String() < usdxClaims[j].Owner.String() })
|
||||
|
||||
return v0_13incentive.NewGenesisState(
|
||||
return v0_14incentive.NewGenesisState(
|
||||
params,
|
||||
usdxGenAccumulationTimes,
|
||||
hardSupplyGenAccumulationTimes,
|
||||
@ -446,7 +446,7 @@ func Auth(genesisState auth.GenesisState) auth.GenesisState {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
if acc.GetAddress().Equals(supply.NewModuleAddress(v0_13cdp.LiquidatorMacc)) {
|
||||
if acc.GetAddress().Equals(supply.NewModuleAddress(v0_14cdp.LiquidatorMacc)) {
|
||||
liquidatorMaccIndex = idx
|
||||
}
|
||||
if acc.GetAddress().Equals(hardDelegatorAddr) {
|
||||
@ -475,8 +475,8 @@ func Auth(genesisState auth.GenesisState) auth.GenesisState {
|
||||
|
||||
// migrate harvest account to new hard name
|
||||
harvestAcc := genesisState.Accounts[harvestIdx].(*supply.ModuleAccount)
|
||||
harvestAcc.Address = supply.NewModuleAddress(v0_13hard.ModuleAccountName)
|
||||
harvestAcc.Name = v0_13hard.ModuleAccountName
|
||||
harvestAcc.Address = supply.NewModuleAddress(v0_14hard.ModuleAccountName)
|
||||
harvestAcc.Name = v0_14hard.ModuleAccountName
|
||||
harvestAcc.Permissions = []string{supply.Minter}
|
||||
genesisState.Accounts[harvestIdx] = harvestAcc
|
||||
|
||||
@ -531,13 +531,13 @@ func Bep3(genesisState bep3.GenesisState) bep3.GenesisState {
|
||||
}
|
||||
|
||||
// Committee migrates from a v0.11 (or v0.12) committee genesis state to a v0.13 committee genesis state
|
||||
func Committee(genesisState v0_11committee.GenesisState) v0_13committee.GenesisState {
|
||||
committees := []v0_13committee.Committee{}
|
||||
votes := []v0_13committee.Vote{}
|
||||
proposals := []v0_13committee.Proposal{}
|
||||
func Committee(genesisState v0_11committee.GenesisState) v0_14committee.GenesisState {
|
||||
committees := []v0_14committee.Committee{}
|
||||
votes := []v0_14committee.Vote{}
|
||||
proposals := []v0_14committee.Proposal{}
|
||||
|
||||
var newStabilityCommittee v0_13committee.Committee
|
||||
var newSafetyCommittee v0_13committee.Committee
|
||||
var newStabilityCommittee v0_14committee.Committee
|
||||
var newSafetyCommittee v0_14committee.Committee
|
||||
|
||||
for _, com := range genesisState.Committees {
|
||||
if com.ID == 1 {
|
||||
@ -546,33 +546,33 @@ func Committee(genesisState v0_11committee.GenesisState) v0_13committee.GenesisS
|
||||
newStabilityCommittee.Members = com.Members
|
||||
newStabilityCommittee.VoteThreshold = com.VoteThreshold
|
||||
newStabilityCommittee.ProposalDuration = com.ProposalDuration
|
||||
var newStabilityCommitteePermissions []v0_13committee.Permission
|
||||
var newStabilitySubParamPermissions v0_13committee.SubParamChangePermission
|
||||
var newStabilityCommitteePermissions []v0_14committee.Permission
|
||||
var newStabilitySubParamPermissions v0_14committee.SubParamChangePermission
|
||||
|
||||
for _, perm := range com.Permissions {
|
||||
subPerm, ok := perm.(v0_11committee.SubParamChangePermission)
|
||||
if ok {
|
||||
// update AllowedParams
|
||||
var newAllowedParams v0_13committee.AllowedParams
|
||||
var newAllowedParams v0_14committee.AllowedParams
|
||||
for _, ap := range subPerm.AllowedParams {
|
||||
if ap.Subspace == "harvest" {
|
||||
continue
|
||||
}
|
||||
newAP := v0_13committee.AllowedParam(ap)
|
||||
newAP := v0_14committee.AllowedParam(ap)
|
||||
newAllowedParams = append(newAllowedParams, newAP)
|
||||
}
|
||||
hrdaMMAp := v0_13committee.AllowedParam{Subspace: "hard", Key: "MoneyMarkets"}
|
||||
hardLimitAp := v0_13committee.AllowedParam{Subspace: "hard", Key: "MinimumBorrowUSDValue"}
|
||||
hrdaMMAp := v0_14committee.AllowedParam{Subspace: "hard", Key: "MoneyMarkets"}
|
||||
hardLimitAp := v0_14committee.AllowedParam{Subspace: "hard", Key: "MinimumBorrowUSDValue"}
|
||||
newAllowedParams = append(newAllowedParams, hrdaMMAp)
|
||||
newAllowedParams = append(newAllowedParams, hardLimitAp)
|
||||
|
||||
newStabilitySubParamPermissions.AllowedParams = newAllowedParams
|
||||
|
||||
// update AllowedCollateralParams
|
||||
var newCollateralParams v0_13committee.AllowedCollateralParams
|
||||
var newCollateralParams v0_14committee.AllowedCollateralParams
|
||||
collateralTypes := []string{"bnb-a", "busd-a", "busd-b", "btcb-a", "xrpb-a", "ukava-a", "hard-a", "hbtc-a"}
|
||||
for _, cp := range subPerm.AllowedCollateralParams {
|
||||
newCP := v0_13committee.NewAllowedCollateralParam(
|
||||
newCP := v0_14committee.NewAllowedCollateralParam(
|
||||
cp.Type,
|
||||
cp.Denom,
|
||||
cp.LiquidationRatio,
|
||||
@ -597,14 +597,14 @@ func Committee(genesisState v0_11committee.GenesisState) v0_13committee.GenesisS
|
||||
}
|
||||
}
|
||||
if !foundCtype {
|
||||
newCP := v0_13committee.NewAllowedCollateralParam(cType, false, false, true, true, true, false, false, false, false, false, true, true)
|
||||
newCP := v0_14committee.NewAllowedCollateralParam(cType, false, false, true, true, true, false, false, false, false, false, true, true)
|
||||
newCollateralParams = append(newCollateralParams, newCP)
|
||||
}
|
||||
}
|
||||
newStabilitySubParamPermissions.AllowedCollateralParams = newCollateralParams
|
||||
|
||||
// update AllowedDebtParam
|
||||
newDP := v0_13committee.AllowedDebtParam{
|
||||
newDP := v0_14committee.AllowedDebtParam{
|
||||
Denom: subPerm.AllowedDebtParam.Denom,
|
||||
ReferenceAsset: subPerm.AllowedDebtParam.ReferenceAsset,
|
||||
ConversionFactor: subPerm.AllowedDebtParam.ConversionFactor,
|
||||
@ -613,40 +613,40 @@ func Committee(genesisState v0_11committee.GenesisState) v0_13committee.GenesisS
|
||||
newStabilitySubParamPermissions.AllowedDebtParam = newDP
|
||||
|
||||
// update AllowedAssetParams
|
||||
var newAssetParams v0_13committee.AllowedAssetParams
|
||||
var newAssetParams v0_14committee.AllowedAssetParams
|
||||
for _, ap := range subPerm.AllowedAssetParams {
|
||||
newAP := v0_13committee.AllowedAssetParam(ap)
|
||||
newAP := v0_14committee.AllowedAssetParam(ap)
|
||||
newAssetParams = append(newAssetParams, newAP)
|
||||
}
|
||||
newStabilitySubParamPermissions.AllowedAssetParams = newAssetParams
|
||||
|
||||
// Update Allowed Markets
|
||||
var newMarketParams v0_13committee.AllowedMarkets
|
||||
var newMarketParams v0_14committee.AllowedMarkets
|
||||
for _, mp := range subPerm.AllowedMarkets {
|
||||
newMP := v0_13committee.AllowedMarket(mp)
|
||||
newMP := v0_14committee.AllowedMarket(mp)
|
||||
newMarketParams = append(newMarketParams, newMP)
|
||||
}
|
||||
newStabilitySubParamPermissions.AllowedMarkets = newMarketParams
|
||||
|
||||
// Add hard money market committee permissions
|
||||
var newMoneyMarketParams v0_13committee.AllowedMoneyMarkets
|
||||
var newMoneyMarketParams v0_14committee.AllowedMoneyMarkets
|
||||
hardMMDenoms := []string{"bnb", "busd", "btcb", "xrpb", "usdx", "ukava", "hard"}
|
||||
for _, mmDenom := range hardMMDenoms {
|
||||
newMoneyMarketParam := v0_13committee.NewAllowedMoneyMarket(mmDenom, true, false, false, true, true, true)
|
||||
newMoneyMarketParam := v0_14committee.NewAllowedMoneyMarket(mmDenom, true, false, false, true, true, true)
|
||||
newMoneyMarketParams = append(newMoneyMarketParams, newMoneyMarketParam)
|
||||
}
|
||||
newStabilitySubParamPermissions.AllowedMoneyMarkets = newMoneyMarketParams
|
||||
newStabilityCommitteePermissions = append(newStabilityCommitteePermissions, newStabilitySubParamPermissions)
|
||||
}
|
||||
}
|
||||
newStabilityCommitteePermissions = append(newStabilityCommitteePermissions, v0_13committee.TextPermission{})
|
||||
newStabilityCommitteePermissions = append(newStabilityCommitteePermissions, v0_14committee.TextPermission{})
|
||||
newStabilityCommittee.Permissions = newStabilityCommitteePermissions
|
||||
committees = append(committees, newStabilityCommittee)
|
||||
} else {
|
||||
newSafetyCommittee.ID = com.ID
|
||||
newSafetyCommittee.Description = com.Description
|
||||
newSafetyCommittee.Members = com.Members
|
||||
newSafetyCommittee.Permissions = []v0_13committee.Permission{v0_13committee.SoftwareUpgradePermission{}}
|
||||
newSafetyCommittee.Permissions = []v0_14committee.Permission{v0_14committee.SoftwareUpgradePermission{}}
|
||||
newSafetyCommittee.VoteThreshold = com.VoteThreshold
|
||||
newSafetyCommittee.ProposalDuration = com.ProposalDuration
|
||||
committees = append(committees, newSafetyCommittee)
|
||||
@ -654,21 +654,21 @@ func Committee(genesisState v0_11committee.GenesisState) v0_13committee.GenesisS
|
||||
}
|
||||
|
||||
for _, v := range genesisState.Votes {
|
||||
votes = append(votes, v0_13committee.Vote(v))
|
||||
votes = append(votes, v0_14committee.Vote(v))
|
||||
}
|
||||
|
||||
for _, p := range genesisState.Proposals {
|
||||
newPubProp := v0_13committee.PubProposal(p.PubProposal)
|
||||
newProp := v0_13committee.NewProposal(newPubProp, p.ID, p.CommitteeID, p.Deadline)
|
||||
newPubProp := v0_14committee.PubProposal(p.PubProposal)
|
||||
newProp := v0_14committee.NewProposal(newPubProp, p.ID, p.CommitteeID, p.Deadline)
|
||||
proposals = append(proposals, newProp)
|
||||
}
|
||||
return v0_13committee.NewGenesisState(
|
||||
return v0_14committee.NewGenesisState(
|
||||
genesisState.NextProposalID, committees, proposals, votes)
|
||||
}
|
||||
|
||||
// Pricefeed migrates from a v0.11 (or v0.12) pricefeed genesis state to a v0.13 pricefeed genesis state
|
||||
func Pricefeed(genesisState v0_11pricefeed.GenesisState) v0_13pricefeed.GenesisState {
|
||||
newMarkets := v0_13pricefeed.Markets{}
|
||||
func Pricefeed(genesisState v0_11pricefeed.GenesisState) v0_14pricefeed.GenesisState {
|
||||
newMarkets := v0_14pricefeed.Markets{}
|
||||
oracles := genesisState.Params.Markets[0].Oracles
|
||||
|
||||
for _, m := range genesisState.Params.Markets {
|
||||
@ -677,7 +677,7 @@ func Pricefeed(genesisState v0_11pricefeed.GenesisState) v0_13pricefeed.GenesisS
|
||||
usdx := v0_11pricefeed.NewMarket("usdx:usd", "usdx", "usd", oracles, true)
|
||||
newMarkets = append(newMarkets, usdx)
|
||||
|
||||
newPrices := v0_13pricefeed.PostedPrices{}
|
||||
newPrices := v0_14pricefeed.PostedPrices{}
|
||||
|
||||
for _, p := range genesisState.PostedPrices {
|
||||
if p.Expiry.After(GenesisTime) {
|
||||
@ -685,7 +685,7 @@ func Pricefeed(genesisState v0_11pricefeed.GenesisState) v0_13pricefeed.GenesisS
|
||||
}
|
||||
}
|
||||
|
||||
return v0_13pricefeed.NewGenesisState(v0_13pricefeed.NewParams(newMarkets), newPrices)
|
||||
return v0_14pricefeed.NewGenesisState(v0_14pricefeed.NewParams(newMarkets), newPrices)
|
||||
}
|
||||
|
||||
func removeIndex(accs authexported.GenesisAccounts, index int) authexported.GenesisAccounts {
|
@ -1,13 +1,14 @@
|
||||
# Kava-5 Upgrade Instructions
|
||||
# Kava-5.1 Upgrade Instructions
|
||||
|
||||
## Software Version and Key Dates
|
||||
|
||||
* The version of Kava for kava-5 is v0.13.1
|
||||
* Kava-4 validators should prepare to shutdown their nodes March 4th, 2021 at 13:00 UTC
|
||||
* Kava-5 genesis time is set to March 4th, 2021 at 15:00 UTC
|
||||
* The version of cosmos-sdk for kava-5 is v0.39.2
|
||||
* The version of tendermint for kava-5 v0.33.9
|
||||
* The minimum version of golang for kava-5 is 1.13+, 1.15+ has been tested and is recommended.
|
||||
* We will be upgrading from chain-id "kava-6" to chain-id "kava-5.1". This is to keep the features in our roadmap aligned with the features on mainnet going forward.
|
||||
* The version of Kava for kava-5.1 is v0.14.0
|
||||
* Kava-6 validators should prepare to shutdown their nodes March 24th, 2021 at 13:00 UTC by setting `--halt-time` to `1616590800`
|
||||
* Kava-5.1 genesis time is set to March 24th, 2021 at 15:00 UTC
|
||||
* The version of cosmos-sdk for kava-5.1 is v0.39.2
|
||||
* The version of tendermint for kava-5.1 v0.33.9
|
||||
* The minimum version of golang for kava-5.1 is 1.13+, 1.15+ has been tested and is recommended.
|
||||
|
||||
### Risks
|
||||
|
||||
@ -17,44 +18,44 @@ The riskiest thing a validator can do is discover that they made a mistake and r
|
||||
|
||||
### Recovery
|
||||
|
||||
Prior to exporting kava-4 state, validators are encouraged to take a full data snapshot at the export height before proceeding. Snap-shotting depends heavily on infrastructure, but generally this can be done by backing up the .kvd and .kvcli directories.
|
||||
Prior to exporting kava-6 state, validators are encouraged to take a full data snapshot at the export height before proceeding. Snap-shotting depends heavily on infrastructure, but generally this can be done by backing up the .kvd and .kvcli directories.
|
||||
|
||||
It is critically important to back-up the .kvd/data/priv_validator_state.json file after stopping your kvd process. This file is updated every block as your validator participates in consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.
|
||||
|
||||
In the event that the upgrade does not succeed, validators and operators must downgrade back to v0.12.2 of the Kava software and restore to their latest snapshot before restarting their nodes.
|
||||
In the event that the upgrade does not succeed, validators and operators must downgrade back to v0.12.4 of the Kava software and restore to their latest snapshot before restarting their nodes.
|
||||
|
||||
## Upgrade Procedure
|
||||
|
||||
### Before the upgrade
|
||||
|
||||
Set your node to produce the final block of kava-4 at __13:00__ UTC March 4th, 2021. To restart your node with that stop time,
|
||||
Set your node to produce the final block of kava-6 at __13:00__ UTC March 24th, 2021. To restart your node with that stop time,
|
||||
|
||||
```sh
|
||||
kvd start --halt-time 1614862800
|
||||
kvd start --halt-time 1616590800
|
||||
```
|
||||
|
||||
You can safely set the halt-time flag at any time.
|
||||
|
||||
### On the day of the upgrade
|
||||
|
||||
__The kava chain is expected to halt at 13:00 UTC, and restart with new software at 15:00 UTC March 4th. Do not stop your node and begin the upgrade before 13:00UTC on March 4th, or you may go offline and be unable to recover until after the upgrade!__
|
||||
__The kava chain is expected to halt at 13:00 UTC, and restart with new software at 15:00 UTC March 24th. Do not stop your node and begin the upgrade before 13:00UTC on March 24th, or you may go offline and be unable to recover until after the upgrade!__
|
||||
|
||||
Kava developers will update this PR with the final block number when it is reached. __Make sure the kvd process is stopped before proceeding and that you have backed up your validator__. Failure to backup your validator could make it impossible to restart your node if the upgrade fails.
|
||||
|
||||
1. Export State (this __MUST__ be done using __v0.12.2__, previous v0.12.x versions will not produce the same genesis hash!)
|
||||
1. Export State (this __MUST__ be done using __v0.12.4__, previous v0.12.x versions will not produce the same genesis hash!)
|
||||
|
||||
```sh
|
||||
kvd export --for-zero-height --height 1267330 > export-genesis.json
|
||||
kvd export --for-zero-height --height PLACEHOLDER > export-genesis.json
|
||||
```
|
||||
|
||||
__Note:__ This can take a while!
|
||||
|
||||
2. Update to kava-5
|
||||
2. Update to kava-5.1
|
||||
|
||||
```sh
|
||||
# in the `kava` folder
|
||||
git pull
|
||||
git checkout v0.13.1
|
||||
git checkout v0.14.0
|
||||
make install
|
||||
|
||||
# verify versions
|
||||
@ -62,8 +63,8 @@ __Note:__ This can take a while!
|
||||
# name: kava
|
||||
# server_name: kvd
|
||||
# client_name: kvcli
|
||||
# version: 0.13.1
|
||||
# commit: 203d7e0063555166808fd560092e6cf64ac19117
|
||||
# version: 0.14.0
|
||||
# commit: PLACEHOLDER
|
||||
# build_tags: netgo,ledger
|
||||
# go: go version go1.15.8 linux/amd64
|
||||
|
||||
@ -74,17 +75,17 @@ __Note:__ This can take a while!
|
||||
# Verify output of genesis migration
|
||||
kvd validate-genesis genesis.json # should say it's valid
|
||||
jq -S -c -M '' genesis.json | shasum -a 256
|
||||
# 5200ab3b16fe6100a67c707688f10e3ee9affeda93a4b472b9bf40faafdd5dc0
|
||||
# PLACEHOLDER
|
||||
|
||||
# Restart node with migrated genesis state
|
||||
cp genesis.json ~/.kvd/config/genesis.json
|
||||
kvd unsafe-reset-all
|
||||
|
||||
# Restart node -
|
||||
# ! Be sure to remove --halt-time flag if it is set in systemd/docker
|
||||
# ! Be sure to remove --halt-time flag if it is set in systemd/docker
|
||||
kvd start
|
||||
```
|
||||
|
||||
### Coordination
|
||||
|
||||
If the kava-5 chain does not launch by March 4, 2021 at 17:00 UTC, the launch should be considered a failure. Validators should restore the state from kava-4 and coordinate a relaunch. In the event of launch failure, coordination will occur in the [Kava discord](https://discord.com/invite/kQzh3Uv).
|
||||
If the kava-5.1 chain does not launch by March 24, 2021 at 17:00 UTC, the launch should be considered a failure and validators should refer to the [rollback]("./rollback.md") instructions to restart the previous kava-6 chain. In the event of launch failure, coordination will occur in the [Kava discord](https://discord.com/invite/kQzh3Uv).
|
@ -1,4 +1,4 @@
|
||||
package v0_13
|
||||
package v0_14
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
@ -20,11 +20,11 @@ import (
|
||||
"github.com/kava-labs/kava/app"
|
||||
"github.com/kava-labs/kava/x/bep3"
|
||||
v0_11cdp "github.com/kava-labs/kava/x/cdp/legacy/v0_11"
|
||||
v0_13committee "github.com/kava-labs/kava/x/committee"
|
||||
v0_14committee "github.com/kava-labs/kava/x/committee"
|
||||
v0_11committee "github.com/kava-labs/kava/x/committee/legacy/v0_11"
|
||||
v0_13hard "github.com/kava-labs/kava/x/hard"
|
||||
v0_14hard "github.com/kava-labs/kava/x/hard"
|
||||
v0_11hard "github.com/kava-labs/kava/x/hard/legacy/v0_11"
|
||||
v0_13incentive "github.com/kava-labs/kava/x/incentive"
|
||||
v0_14incentive "github.com/kava-labs/kava/x/incentive"
|
||||
v0_11incentive "github.com/kava-labs/kava/x/incentive/legacy/v0_11"
|
||||
v0_11pricefeed "github.com/kava-labs/kava/x/pricefeed"
|
||||
validatorvesting "github.com/kava-labs/kava/x/validator-vesting"
|
||||
@ -125,7 +125,7 @@ func TestIncentive(t *testing.T) {
|
||||
require.NotPanics(t, func() {
|
||||
cdc.MustUnmarshalJSON(bz, &oldHarvestGenState)
|
||||
})
|
||||
newGenState := v0_13incentive.GenesisState{}
|
||||
newGenState := v0_14incentive.GenesisState{}
|
||||
require.NotPanics(t, func() {
|
||||
newGenState = Incentive(oldHarvestGenState, oldIncentiveGenState)
|
||||
})
|
||||
@ -145,7 +145,7 @@ func TestHard(t *testing.T) {
|
||||
require.NotPanics(t, func() {
|
||||
cdc.MustUnmarshalJSON(bz, &oldHarvestGenState)
|
||||
})
|
||||
newGenState := v0_13hard.GenesisState{}
|
||||
newGenState := v0_14hard.GenesisState{}
|
||||
require.NotPanics(t, func() {
|
||||
newGenState = Hard(oldHarvestGenState)
|
||||
})
|
||||
@ -175,10 +175,10 @@ func TestCommittee(t *testing.T) {
|
||||
}
|
||||
|
||||
oldSPCP := oldGenState.Committees[0].Permissions[0].(v0_11committee.SubParamChangePermission)
|
||||
newSPCP := newGenState.Committees[0].Permissions[0].(v0_13committee.SubParamChangePermission)
|
||||
require.Equal(t, len(oldSPCP.AllowedParams), len(newSPCP.AllowedParams))
|
||||
newSPCP := newGenState.Committees[0].Permissions[0].(v0_14committee.SubParamChangePermission)
|
||||
require.Equal(t, len(oldSPCP.AllowedParams)-14, len(newSPCP.AllowedParams)) // accounts for removed/redundant keys
|
||||
require.Equal(t, len(oldSPCP.AllowedAssetParams), len(newSPCP.AllowedAssetParams))
|
||||
require.Equal(t, len(oldSPCP.AllowedCollateralParams), len(newSPCP.AllowedCollateralParams))
|
||||
require.Equal(t, len(oldSPCP.AllowedCollateralParams)+3, len(newSPCP.AllowedCollateralParams)) // accounts for new cdp collateral types
|
||||
require.Equal(t, len(oldSPCP.AllowedMarkets), len(newSPCP.AllowedMarkets))
|
||||
}
|
||||
|
40
migrate/v0_14/rollback.md
Normal file
40
migrate/v0_14/rollback.md
Normal file
@ -0,0 +1,40 @@
|
||||
# Kava-5-1 Rollback Instructions
|
||||
|
||||
In the event that the kava-5.1 relaunch is unsuccessful, we will restart the kava-6 chain using the last known state.
|
||||
|
||||
In order to restore the previous chain, the following data must be recovered by validators:
|
||||
|
||||
* The database that contains the state of the previous chain (in ~/.kvd/data by default)
|
||||
* The priv_validator_state.json file of the validator (in ~/.kvd/data by default)
|
||||
|
||||
If you don't have the database data, the Kava developer team or another validator will share a copy of the database via Amazon s3 a similar service. You will be able to download a copy of the data and verify it before starting your node.
|
||||
If you don't have the backup priv_validator_state.json file, you will not have double sign protection on the first block. If this is the case, it's best to consult in the validator discord before starting your node.
|
||||
|
||||
## Restoring state procedure
|
||||
|
||||
1. Copy the contents of your backup data directory back to the $KVD_HOME/data directory. By default this is ~/.kvd/data.
|
||||
|
||||
```
|
||||
# Assumes backup is stored in "backup" directory
|
||||
rm -rf ~/.kvd/data
|
||||
mv backup/.kvd/data ~/.kvd/data
|
||||
```
|
||||
|
||||
2. Install the previous version of kava
|
||||
|
||||
```
|
||||
# from kava directory
|
||||
git checkout v0.12.4
|
||||
make install
|
||||
|
||||
## verify version
|
||||
kvd version --long
|
||||
```
|
||||
|
||||
3. Restart kvd process
|
||||
|
||||
```
|
||||
### be sure to remove --halt-time flag if it is set
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl restart kvd
|
||||
```
|
Loading…
Reference in New Issue
Block a user