mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-11-10 18:15:19 +00:00
993d36d05a
* draft kava-3 to kava-4 incentive migration * fix: use collateral type instead of denom * add additional claim multiplier to incentives * remove testdata file creation
145 lines
6.5 KiB
Go
145 lines
6.5 KiB
Go
package v0_11
|
|
|
|
import (
|
|
"time"
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
|
|
v0_11bep3 "github.com/kava-labs/kava/x/bep3/legacy/v0_11"
|
|
v0_9bep3 "github.com/kava-labs/kava/x/bep3/legacy/v0_9"
|
|
v0_11incentive "github.com/kava-labs/kava/x/incentive"
|
|
v0_9incentive "github.com/kava-labs/kava/x/incentive/legacy/v0_9"
|
|
v0_11pricefeed "github.com/kava-labs/kava/x/pricefeed"
|
|
v0_9pricefeed "github.com/kava-labs/kava/x/pricefeed/legacy/v0_9"
|
|
)
|
|
|
|
// MigrateBep3 migrates from a v0.9 (or v0.10) bep3 genesis state to a v0.11 bep3 genesis state
|
|
func MigrateBep3(oldGenState v0_9bep3.GenesisState) v0_11bep3.GenesisState {
|
|
var assetParams v0_11bep3.AssetParams
|
|
var assetSupplies v0_11bep3.AssetSupplies
|
|
v0_9Params := oldGenState.Params
|
|
|
|
for _, asset := range v0_9Params.SupportedAssets {
|
|
v10AssetParam := v0_11bep3.AssetParam{
|
|
Active: asset.Active,
|
|
Denom: asset.Denom,
|
|
CoinID: asset.CoinID,
|
|
DeputyAddress: v0_9Params.BnbDeputyAddress,
|
|
FixedFee: v0_9Params.BnbDeputyFixedFee,
|
|
MinSwapAmount: sdk.OneInt(), // set min swap to one - prevents accounts that hold zero bnb from creating spam txs
|
|
MaxSwapAmount: v0_9Params.MaxAmount,
|
|
MinBlockLock: v0_9Params.MinBlockLock,
|
|
MaxBlockLock: v0_9Params.MaxBlockLock,
|
|
SupplyLimit: v0_11bep3.SupplyLimit{
|
|
Limit: asset.Limit,
|
|
TimeLimited: false,
|
|
TimePeriod: time.Duration(0),
|
|
TimeBasedLimit: sdk.ZeroInt(),
|
|
},
|
|
}
|
|
assetParams = append(assetParams, v10AssetParam)
|
|
}
|
|
for _, supply := range oldGenState.AssetSupplies {
|
|
newSupply := v0_11bep3.NewAssetSupply(supply.IncomingSupply, supply.OutgoingSupply, supply.CurrentSupply, sdk.NewCoin(supply.CurrentSupply.Denom, sdk.ZeroInt()), time.Duration(0))
|
|
assetSupplies = append(assetSupplies, newSupply)
|
|
}
|
|
var swaps v0_11bep3.AtomicSwaps
|
|
for _, oldSwap := range oldGenState.AtomicSwaps {
|
|
newSwap := v0_11bep3.AtomicSwap{
|
|
Amount: oldSwap.Amount,
|
|
RandomNumberHash: oldSwap.RandomNumberHash,
|
|
ExpireHeight: oldSwap.ExpireHeight,
|
|
Timestamp: oldSwap.Timestamp,
|
|
Sender: oldSwap.Sender,
|
|
Recipient: oldSwap.Recipient,
|
|
SenderOtherChain: oldSwap.SenderOtherChain,
|
|
RecipientOtherChain: oldSwap.RecipientOtherChain,
|
|
ClosedBlock: oldSwap.ClosedBlock,
|
|
Status: v0_11bep3.SwapStatus(oldSwap.Status),
|
|
CrossChain: oldSwap.CrossChain,
|
|
Direction: v0_11bep3.SwapDirection(oldSwap.Direction),
|
|
}
|
|
swaps = append(swaps, newSwap)
|
|
}
|
|
return v0_11bep3.GenesisState{
|
|
Params: v0_11bep3.Params{
|
|
AssetParams: assetParams},
|
|
AtomicSwaps: swaps,
|
|
Supplies: assetSupplies,
|
|
PreviousBlockTime: v0_11bep3.DefaultPreviousBlockTime,
|
|
}
|
|
}
|
|
|
|
// MigrateIncentive migrates from a v0.9 (or v0.10) incentive genesis state to a v0.11 incentive genesis state
|
|
func MigrateIncentive(oldGenState v0_9incentive.GenesisState) v0_11incentive.GenesisState {
|
|
var newRewards v0_11incentive.Rewards
|
|
var newRewardPeriods v0_11incentive.RewardPeriods
|
|
var newClaimPeriods v0_11incentive.ClaimPeriods
|
|
var newClaims v0_11incentive.Claims
|
|
var newClaimPeriodIds v0_11incentive.GenesisClaimPeriodIDs
|
|
|
|
newMultiplier := v0_11incentive.NewMultiplier(v0_11incentive.Large, 12, sdk.OneDec())
|
|
smallMultiplier := v0_11incentive.NewMultiplier(v0_11incentive.Small, 1, sdk.MustNewDecFromStr("0.25"))
|
|
|
|
for _, oldReward := range oldGenState.Params.Rewards {
|
|
newReward := v0_11incentive.NewReward(oldReward.Active, oldReward.Denom+"-a", oldReward.AvailableRewards, oldReward.Duration, v0_11incentive.Multipliers{smallMultiplier, newMultiplier}, oldReward.ClaimDuration)
|
|
newRewards = append(newRewards, newReward)
|
|
}
|
|
newParams := v0_11incentive.NewParams(true, newRewards)
|
|
|
|
for _, oldRewardPeriod := range oldGenState.RewardPeriods {
|
|
|
|
newRewardPeriod := v0_11incentive.NewRewardPeriod(oldRewardPeriod.Denom+"-a", oldRewardPeriod.Start, oldRewardPeriod.End, oldRewardPeriod.Reward, oldRewardPeriod.ClaimEnd, v0_11incentive.Multipliers{smallMultiplier, newMultiplier})
|
|
newRewardPeriods = append(newRewardPeriods, newRewardPeriod)
|
|
}
|
|
|
|
for _, oldClaimPeriod := range oldGenState.ClaimPeriods {
|
|
newClaimPeriod := v0_11incentive.NewClaimPeriod(oldClaimPeriod.Denom+"-a", oldClaimPeriod.ID, oldClaimPeriod.End, v0_11incentive.Multipliers{smallMultiplier, newMultiplier})
|
|
newClaimPeriods = append(newClaimPeriods, newClaimPeriod)
|
|
}
|
|
|
|
for _, oldClaim := range oldGenState.Claims {
|
|
newClaim := v0_11incentive.NewClaim(oldClaim.Owner, oldClaim.Reward, oldClaim.Denom+"-a", oldClaim.ClaimPeriodID)
|
|
newClaims = append(newClaims, newClaim)
|
|
}
|
|
|
|
for _, oldClaimPeriodID := range oldGenState.NextClaimPeriodIDs {
|
|
newClaimPeriodID := v0_11incentive.GenesisClaimPeriodID{
|
|
CollateralType: oldClaimPeriodID.Denom + "-a",
|
|
ID: oldClaimPeriodID.ID,
|
|
}
|
|
newClaimPeriodIds = append(newClaimPeriodIds, newClaimPeriodID)
|
|
}
|
|
|
|
return v0_11incentive.NewGenesisState(newParams, oldGenState.PreviousBlockTime, newRewardPeriods, newClaimPeriods, newClaims, newClaimPeriodIds)
|
|
}
|
|
|
|
// MigratePricefeed migrates from a v0.9 (or v0.10) pricefeed genesis state to a v0.11 pricefeed genesis state
|
|
func MigratePricefeed(oldGenState v0_9pricefeed.GenesisState) v0_11pricefeed.GenesisState {
|
|
var newMarkets v0_11pricefeed.Markets
|
|
var newPostedPrices v0_11pricefeed.PostedPrices
|
|
var oracles []sdk.AccAddress
|
|
|
|
for _, market := range oldGenState.Params.Markets {
|
|
newMarket := v0_11pricefeed.NewMarket(market.MarketID, market.BaseAsset, market.QuoteAsset, market.Oracles, market.Active)
|
|
newMarkets = append(newMarkets, newMarket)
|
|
oracles = market.Oracles
|
|
}
|
|
// ------- add btc, xrp, busd markets --------
|
|
btcSpotMarket := v0_11pricefeed.NewMarket("btc:usd", "btc", "usd", oracles, true)
|
|
btcLiquidationMarket := v0_11pricefeed.NewMarket("btc:usd:30", "btc", "usd", oracles, true)
|
|
xrpSpotMarket := v0_11pricefeed.NewMarket("xrp:usd", "xrp", "usd", oracles, true)
|
|
xrpLiquidationMarket := v0_11pricefeed.NewMarket("xrp:usd:30", "xrp", "usd", oracles, true)
|
|
busdSpotMarket := v0_11pricefeed.NewMarket("busd:usd", "busd", "usd", oracles, true)
|
|
busdLiquidationMarket := v0_11pricefeed.NewMarket("busd:usd:30", "busd", "usd", oracles, true)
|
|
newMarkets = append(newMarkets, btcSpotMarket, btcLiquidationMarket, xrpSpotMarket, xrpLiquidationMarket, busdSpotMarket, busdLiquidationMarket)
|
|
|
|
for _, price := range oldGenState.PostedPrices {
|
|
newPrice := v0_11pricefeed.NewPostedPrice(price.MarketID, price.OracleAddress, price.Price, price.Expiry)
|
|
newPostedPrices = append(newPostedPrices, newPrice)
|
|
}
|
|
newParams := v0_11pricefeed.NewParams(newMarkets)
|
|
|
|
return v0_11pricefeed.NewGenesisState(newParams, newPostedPrices)
|
|
}
|