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
		
			
				
	
	
		
			353 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			353 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package v0_16
 | 
						|
 | 
						|
import (
 | 
						|
	"testing"
 | 
						|
	"time"
 | 
						|
 | 
						|
	"github.com/cosmos/cosmos-sdk/codec"
 | 
						|
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						|
	"github.com/stretchr/testify/suite"
 | 
						|
 | 
						|
	app "github.com/kava-labs/kava/app"
 | 
						|
	v015pricefeed "github.com/kava-labs/kava/x/pricefeed/legacy/v0_15"
 | 
						|
	v016pricefeed "github.com/kava-labs/kava/x/pricefeed/types"
 | 
						|
)
 | 
						|
 | 
						|
type migrateTestSuite struct {
 | 
						|
	suite.Suite
 | 
						|
 | 
						|
	addresses   []sdk.AccAddress
 | 
						|
	v15genstate v015pricefeed.GenesisState
 | 
						|
	cdc         codec.Codec
 | 
						|
	legacyCdc   *codec.LegacyAmino
 | 
						|
}
 | 
						|
 | 
						|
func (s *migrateTestSuite) SetupTest() {
 | 
						|
	app.SetSDKConfig()
 | 
						|
 | 
						|
	s.v15genstate = v015pricefeed.GenesisState{
 | 
						|
		Params:       v015pricefeed.Params{},
 | 
						|
		PostedPrices: v015pricefeed.PostedPrices{},
 | 
						|
	}
 | 
						|
 | 
						|
	config := app.MakeEncodingConfig()
 | 
						|
	s.cdc = config.Marshaler
 | 
						|
 | 
						|
	legacyCodec := codec.NewLegacyAmino()
 | 
						|
	s.legacyCdc = legacyCodec
 | 
						|
 | 
						|
	_, accAddresses := app.GeneratePrivKeyAddressPairs(10)
 | 
						|
	s.addresses = accAddresses
 | 
						|
}
 | 
						|
 | 
						|
func (s *migrateTestSuite) TestMigrate_JSON() {
 | 
						|
	// Migrate v15 pricefeed to v16
 | 
						|
	v15Params := `{
 | 
						|
		"params": {
 | 
						|
			"markets": [
 | 
						|
				{
 | 
						|
					"active": true,
 | 
						|
					"base_asset": "bnb",
 | 
						|
					"market_id": "bnb:usd",
 | 
						|
					"oracles": ["kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em"],
 | 
						|
					"quote_asset": "usd"
 | 
						|
				},
 | 
						|
				{
 | 
						|
					"active": true,
 | 
						|
					"base_asset": "bnb",
 | 
						|
					"market_id": "bnb:usd:30",
 | 
						|
					"oracles": ["kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em"],
 | 
						|
					"quote_asset": "usd"
 | 
						|
				}
 | 
						|
			]
 | 
						|
		},
 | 
						|
		"posted_prices": [
 | 
						|
			{
 | 
						|
				"expiry": "2022-07-20T00:00:00Z",
 | 
						|
				"market_id": "bnb:usd",
 | 
						|
				"oracle_address": "kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em",
 | 
						|
				"price": "215.962650000000001782"
 | 
						|
			},
 | 
						|
			{
 | 
						|
				"expiry": "2022-07-20T00:00:00Z",
 | 
						|
				"market_id": "bnb:usd:30",
 | 
						|
				"oracle_address": "kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em",
 | 
						|
				"price": "217.962650000000001782"
 | 
						|
			}
 | 
						|
		]
 | 
						|
	}`
 | 
						|
 | 
						|
	expectedV16Params := `{
 | 
						|
		"params": {
 | 
						|
			"markets": [
 | 
						|
				{
 | 
						|
					"market_id": "bnb:usd",
 | 
						|
					"base_asset": "bnb",
 | 
						|
					"quote_asset": "usd",
 | 
						|
					"oracles": [
 | 
						|
						"kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em"
 | 
						|
					],
 | 
						|
					"active": true
 | 
						|
				},
 | 
						|
				{
 | 
						|
					"market_id": "bnb:usd:30",
 | 
						|
					"base_asset": "bnb",
 | 
						|
					"quote_asset": "usd",
 | 
						|
					"oracles": [
 | 
						|
						"kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em"
 | 
						|
					],
 | 
						|
					"active": true
 | 
						|
				},
 | 
						|
				{
 | 
						|
					"market_id": "atom:usd",
 | 
						|
					"base_asset": "atom",
 | 
						|
					"quote_asset": "usd",
 | 
						|
					"oracles": [
 | 
						|
						"kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em"
 | 
						|
					],
 | 
						|
					"active": true
 | 
						|
				},
 | 
						|
				{
 | 
						|
					"market_id": "atom:usd:30",
 | 
						|
					"base_asset": "atom",
 | 
						|
					"quote_asset": "usd",
 | 
						|
					"oracles": [
 | 
						|
						"kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em"
 | 
						|
					],
 | 
						|
					"active": true
 | 
						|
				},
 | 
						|
				{
 | 
						|
					"market_id": "akt:usd",
 | 
						|
					"base_asset": "akt",
 | 
						|
					"quote_asset": "usd",
 | 
						|
					"oracles": [
 | 
						|
						"kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em"
 | 
						|
					],
 | 
						|
					"active": true
 | 
						|
				},
 | 
						|
				{
 | 
						|
					"market_id": "akt:usd:30",
 | 
						|
					"base_asset": "akt",
 | 
						|
					"quote_asset": "usd",
 | 
						|
					"oracles": [
 | 
						|
						"kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em"
 | 
						|
					],
 | 
						|
					"active": true
 | 
						|
				},
 | 
						|
				{
 | 
						|
					"market_id": "luna:usd",
 | 
						|
					"base_asset": "luna",
 | 
						|
					"quote_asset": "usd",
 | 
						|
					"oracles": [
 | 
						|
						"kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em"
 | 
						|
					],
 | 
						|
					"active": true
 | 
						|
				},
 | 
						|
				{
 | 
						|
					"market_id": "luna:usd:30",
 | 
						|
					"base_asset": "luna",
 | 
						|
					"quote_asset": "usd",
 | 
						|
					"oracles": [
 | 
						|
						"kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em"
 | 
						|
					],
 | 
						|
					"active": true
 | 
						|
				},
 | 
						|
				{
 | 
						|
					"market_id": "osmo:usd",
 | 
						|
					"base_asset": "osmo",
 | 
						|
					"quote_asset": "usd",
 | 
						|
					"oracles": [
 | 
						|
						"kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em"
 | 
						|
					],
 | 
						|
					"active": true
 | 
						|
				},
 | 
						|
				{
 | 
						|
					"market_id": "osmo:usd:30",
 | 
						|
					"base_asset": "osmo",
 | 
						|
					"quote_asset": "usd",
 | 
						|
					"oracles": [
 | 
						|
						"kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em"
 | 
						|
					],
 | 
						|
					"active": true
 | 
						|
				},
 | 
						|
				{
 | 
						|
					"market_id": "ust:usd",
 | 
						|
					"base_asset": "ust",
 | 
						|
					"quote_asset": "usd",
 | 
						|
					"oracles": [
 | 
						|
						"kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em"
 | 
						|
					],
 | 
						|
					"active": true
 | 
						|
				},
 | 
						|
				{
 | 
						|
					"market_id": "ust:usd:30",
 | 
						|
					"base_asset": "ust",
 | 
						|
					"quote_asset": "usd",
 | 
						|
					"oracles": [
 | 
						|
						"kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em"
 | 
						|
					],
 | 
						|
					"active": true
 | 
						|
				}
 | 
						|
			]
 | 
						|
		},
 | 
						|
		"posted_prices": [
 | 
						|
			{
 | 
						|
				"market_id": "bnb:usd",
 | 
						|
				"oracle_address": "kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em",
 | 
						|
				"price": "215.962650000000001782",
 | 
						|
				"expiry": "2022-07-20T00:00:00Z"
 | 
						|
			},
 | 
						|
			{
 | 
						|
				"market_id": "bnb:usd:30",
 | 
						|
				"oracle_address": "kava1acge4tcvhf3q6fh53fgwaa7vsq40wvx6wn50em",
 | 
						|
				"price": "217.962650000000001782",
 | 
						|
				"expiry": "2022-07-20T00:00:00Z"
 | 
						|
			}
 | 
						|
		]
 | 
						|
	}`
 | 
						|
 | 
						|
	err := s.legacyCdc.UnmarshalJSON([]byte(v15Params), &s.v15genstate)
 | 
						|
	s.Require().NoError(err)
 | 
						|
	genstate := Migrate(s.v15genstate)
 | 
						|
 | 
						|
	// v16 pricefeed json should be the same as v15 but with IBC markets added
 | 
						|
	actual := s.cdc.MustMarshalJSON(genstate)
 | 
						|
 | 
						|
	s.Require().NoError(err)
 | 
						|
	s.Require().JSONEq(expectedV16Params, string(actual))
 | 
						|
}
 | 
						|
 | 
						|
func (s *migrateTestSuite) TestMigrate_Params() {
 | 
						|
	s.v15genstate.Params = v015pricefeed.Params{
 | 
						|
		Markets: v015pricefeed.Markets{
 | 
						|
			{
 | 
						|
				MarketID:   "market-1",
 | 
						|
				BaseAsset:  "kava",
 | 
						|
				QuoteAsset: "usd",
 | 
						|
				Oracles:    s.addresses,
 | 
						|
				Active:     true,
 | 
						|
			},
 | 
						|
		},
 | 
						|
	}
 | 
						|
	expectedParams := v016pricefeed.Params{
 | 
						|
		Markets: v016pricefeed.Markets{
 | 
						|
			{
 | 
						|
				MarketID:   "market-1",
 | 
						|
				BaseAsset:  "kava",
 | 
						|
				QuoteAsset: "usd",
 | 
						|
				Oracles:    s.addresses,
 | 
						|
				Active:     true,
 | 
						|
			},
 | 
						|
			{
 | 
						|
				MarketID:   "atom:usd",
 | 
						|
				BaseAsset:  "atom",
 | 
						|
				QuoteAsset: "usd",
 | 
						|
				Oracles:    s.addresses,
 | 
						|
				Active:     true,
 | 
						|
			},
 | 
						|
			{
 | 
						|
				MarketID:   "atom:usd:30",
 | 
						|
				BaseAsset:  "atom",
 | 
						|
				QuoteAsset: "usd",
 | 
						|
				Oracles:    s.addresses,
 | 
						|
				Active:     true,
 | 
						|
			},
 | 
						|
			{
 | 
						|
				MarketID:   "akt:usd",
 | 
						|
				BaseAsset:  "akt",
 | 
						|
				QuoteAsset: "usd",
 | 
						|
				Oracles:    s.addresses,
 | 
						|
				Active:     true,
 | 
						|
			},
 | 
						|
			{
 | 
						|
				MarketID:   "akt:usd:30",
 | 
						|
				BaseAsset:  "akt",
 | 
						|
				QuoteAsset: "usd",
 | 
						|
				Oracles:    s.addresses,
 | 
						|
				Active:     true,
 | 
						|
			},
 | 
						|
			{
 | 
						|
				MarketID:   "luna:usd",
 | 
						|
				BaseAsset:  "luna",
 | 
						|
				QuoteAsset: "usd",
 | 
						|
				Oracles:    s.addresses,
 | 
						|
				Active:     true,
 | 
						|
			},
 | 
						|
			{
 | 
						|
				MarketID:   "luna:usd:30",
 | 
						|
				BaseAsset:  "luna",
 | 
						|
				QuoteAsset: "usd",
 | 
						|
				Oracles:    s.addresses,
 | 
						|
				Active:     true,
 | 
						|
			},
 | 
						|
			{
 | 
						|
				MarketID:   "osmo:usd",
 | 
						|
				BaseAsset:  "osmo",
 | 
						|
				QuoteAsset: "usd",
 | 
						|
				Oracles:    s.addresses,
 | 
						|
				Active:     true,
 | 
						|
			},
 | 
						|
			{
 | 
						|
				MarketID:   "osmo:usd:30",
 | 
						|
				BaseAsset:  "osmo",
 | 
						|
				QuoteAsset: "usd",
 | 
						|
				Oracles:    s.addresses,
 | 
						|
				Active:     true,
 | 
						|
			},
 | 
						|
			{
 | 
						|
				MarketID:   "ust:usd",
 | 
						|
				BaseAsset:  "ust",
 | 
						|
				QuoteAsset: "usd",
 | 
						|
				Oracles:    s.addresses,
 | 
						|
				Active:     true,
 | 
						|
			},
 | 
						|
			{
 | 
						|
				MarketID:   "ust:usd:30",
 | 
						|
				BaseAsset:  "ust",
 | 
						|
				QuoteAsset: "usd",
 | 
						|
				Oracles:    s.addresses,
 | 
						|
				Active:     true,
 | 
						|
			},
 | 
						|
		},
 | 
						|
	}
 | 
						|
	genState := Migrate(s.v15genstate)
 | 
						|
	s.Require().Equal(expectedParams, genState.Params)
 | 
						|
}
 | 
						|
 | 
						|
func (s *migrateTestSuite) TestMigrate_PostedPrices() {
 | 
						|
	s.v15genstate.PostedPrices = v015pricefeed.PostedPrices{
 | 
						|
		{
 | 
						|
			MarketID:      "market-1",
 | 
						|
			OracleAddress: s.addresses[0],
 | 
						|
			Price:         sdk.MustNewDecFromStr("1.2"),
 | 
						|
			Expiry:        time.Date(2020, time.January, 1, 0, 0, 0, 0, time.UTC),
 | 
						|
		},
 | 
						|
		{
 | 
						|
			MarketID:      "market-2",
 | 
						|
			OracleAddress: s.addresses[1],
 | 
						|
			Price:         sdk.MustNewDecFromStr("1.899"),
 | 
						|
			Expiry:        time.Date(2021, time.January, 1, 0, 0, 0, 0, time.UTC),
 | 
						|
		},
 | 
						|
	}
 | 
						|
	expected := v016pricefeed.PostedPrices{
 | 
						|
		{
 | 
						|
			MarketID:      "market-1",
 | 
						|
			OracleAddress: s.addresses[0],
 | 
						|
			Price:         sdk.MustNewDecFromStr("1.2"),
 | 
						|
			Expiry:        time.Date(2020, time.January, 1, 0, 0, 0, 0, time.UTC),
 | 
						|
		},
 | 
						|
		{
 | 
						|
			MarketID:      "market-2",
 | 
						|
			OracleAddress: s.addresses[1],
 | 
						|
			Price:         sdk.MustNewDecFromStr("1.899"),
 | 
						|
			Expiry:        time.Date(2021, time.January, 1, 0, 0, 0, 0, time.UTC),
 | 
						|
		},
 | 
						|
	}
 | 
						|
	genState := Migrate(s.v15genstate)
 | 
						|
	s.Require().Equal(expected, genState.PostedPrices)
 | 
						|
}
 | 
						|
 | 
						|
func TestPriceFeedMigrateTestSuite(t *testing.T) {
 | 
						|
	suite.Run(t, new(migrateTestSuite))
 | 
						|
}
 |