mirror of
				https://github.com/0glabs/0g-chain.git
				synced 2025-11-04 10:37:26 +00:00 
			
		
		
		
	* Add ibc markets to pricefeed * Default empty oracles if no markets * Update pricefeed migration tests * Add ibc markets to testdata genesis pricefeed * Add existing pricefeed markets and new ibc markets to committee permissions * Remove stray empty branch * Panic on committee migration if pricefeed app state is missing * Remove redundant import
		
			
				
	
	
		
			135 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package v0_16
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/cosmos/cosmos-sdk/types"
 | 
						|
	v015pricefeed "github.com/kava-labs/kava/x/pricefeed/legacy/v0_15"
 | 
						|
	v016pricefeed "github.com/kava-labs/kava/x/pricefeed/types"
 | 
						|
)
 | 
						|
 | 
						|
var NewIBCMarkets = []v016pricefeed.Market{
 | 
						|
	{
 | 
						|
		MarketID:   "atom:usd",
 | 
						|
		BaseAsset:  "atom",
 | 
						|
		QuoteAsset: "usd",
 | 
						|
		Oracles:    nil,
 | 
						|
		Active:     true,
 | 
						|
	},
 | 
						|
	{
 | 
						|
		MarketID:   "atom:usd:30",
 | 
						|
		BaseAsset:  "atom",
 | 
						|
		QuoteAsset: "usd",
 | 
						|
		Oracles:    nil,
 | 
						|
		Active:     true,
 | 
						|
	},
 | 
						|
	{
 | 
						|
		MarketID:   "akt:usd",
 | 
						|
		BaseAsset:  "akt",
 | 
						|
		QuoteAsset: "usd",
 | 
						|
		Oracles:    nil,
 | 
						|
		Active:     true,
 | 
						|
	},
 | 
						|
	{
 | 
						|
		MarketID:   "akt:usd:30",
 | 
						|
		BaseAsset:  "akt",
 | 
						|
		QuoteAsset: "usd",
 | 
						|
		Oracles:    nil,
 | 
						|
		Active:     true,
 | 
						|
	},
 | 
						|
	{
 | 
						|
		MarketID:   "luna:usd",
 | 
						|
		BaseAsset:  "luna",
 | 
						|
		QuoteAsset: "usd",
 | 
						|
		Oracles:    nil,
 | 
						|
		Active:     true,
 | 
						|
	},
 | 
						|
	{
 | 
						|
		MarketID:   "luna:usd:30",
 | 
						|
		BaseAsset:  "luna",
 | 
						|
		QuoteAsset: "usd",
 | 
						|
		Oracles:    nil,
 | 
						|
		Active:     true,
 | 
						|
	},
 | 
						|
	{
 | 
						|
		MarketID:   "osmo:usd",
 | 
						|
		BaseAsset:  "osmo",
 | 
						|
		QuoteAsset: "usd",
 | 
						|
		Oracles:    nil,
 | 
						|
		Active:     true,
 | 
						|
	},
 | 
						|
	{
 | 
						|
		MarketID:   "osmo:usd:30",
 | 
						|
		BaseAsset:  "osmo",
 | 
						|
		QuoteAsset: "usd",
 | 
						|
		Oracles:    nil,
 | 
						|
		Active:     true,
 | 
						|
	},
 | 
						|
	{
 | 
						|
		MarketID:   "ust:usd",
 | 
						|
		BaseAsset:  "ust",
 | 
						|
		QuoteAsset: "usd",
 | 
						|
		Oracles:    nil,
 | 
						|
		Active:     true,
 | 
						|
	},
 | 
						|
	{
 | 
						|
		MarketID:   "ust:usd:30",
 | 
						|
		BaseAsset:  "ust",
 | 
						|
		QuoteAsset: "usd",
 | 
						|
		Oracles:    nil,
 | 
						|
		Active:     true,
 | 
						|
	},
 | 
						|
}
 | 
						|
 | 
						|
func migrateParams(params v015pricefeed.Params) v016pricefeed.Params {
 | 
						|
	markets := make(v016pricefeed.Markets, len(params.Markets))
 | 
						|
	for i, market := range params.Markets {
 | 
						|
		markets[i] = v016pricefeed.Market{
 | 
						|
			MarketID:   market.MarketID,
 | 
						|
			BaseAsset:  market.BaseAsset,
 | 
						|
			QuoteAsset: market.QuoteAsset,
 | 
						|
			Oracles:    market.Oracles,
 | 
						|
			Active:     market.Active,
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	markets = addIbcMarkets(markets)
 | 
						|
 | 
						|
	return v016pricefeed.Params{Markets: markets}
 | 
						|
}
 | 
						|
 | 
						|
func addIbcMarkets(markets v016pricefeed.Markets) v016pricefeed.Markets {
 | 
						|
	var oracles []types.AccAddress
 | 
						|
 | 
						|
	if len(markets) > 0 {
 | 
						|
		oracles = markets[0].Oracles
 | 
						|
	}
 | 
						|
 | 
						|
	for _, newMarket := range NewIBCMarkets {
 | 
						|
		// newMarket is a copy, should not affect other uses of NewIBCMarkets
 | 
						|
		newMarket.Oracles = oracles
 | 
						|
		markets = append(markets, newMarket)
 | 
						|
	}
 | 
						|
 | 
						|
	return markets
 | 
						|
}
 | 
						|
 | 
						|
func migratePostedPrices(oldPostedPrices v015pricefeed.PostedPrices) v016pricefeed.PostedPrices {
 | 
						|
	newPrices := make(v016pricefeed.PostedPrices, len(oldPostedPrices))
 | 
						|
	for i, price := range oldPostedPrices {
 | 
						|
		newPrices[i] = v016pricefeed.PostedPrice{
 | 
						|
			MarketID:      price.MarketID,
 | 
						|
			OracleAddress: price.OracleAddress,
 | 
						|
			Price:         price.Price,
 | 
						|
			Expiry:        price.Expiry,
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return newPrices
 | 
						|
}
 | 
						|
 | 
						|
// Migrate converts v0.15 pricefeed state and returns it in v0.16 format
 | 
						|
func Migrate(oldState v015pricefeed.GenesisState) *v016pricefeed.GenesisState {
 | 
						|
	return &v016pricefeed.GenesisState{
 | 
						|
		Params:       migrateParams(oldState.Params),
 | 
						|
		PostedPrices: migratePostedPrices(oldState.PostedPrices),
 | 
						|
	}
 | 
						|
}
 |