@@ -99,8 +99,8 @@ def __init__(
9999 self ._initialize_timeout_height_sync_task ()
100100
101101 self ._tokens_and_markets_initialization_lock = asyncio .Lock ()
102- self ._tokens_by_denom : Optional [ Dict [ str , Token ]] = None
103- self ._tokens_by_symbol : Optional [ Dict [ str , Token ]] = None
102+ self ._tokens_by_denom = dict ()
103+ self ._tokens_by_symbol = dict ()
104104 self ._spot_markets : Optional [Dict [str , SpotMarket ]] = None
105105 self ._derivative_markets : Optional [Dict [str , DerivativeMarket ]] = None
106106 self ._binary_option_markets : Optional [Dict [str , BinaryOptionMarket ]] = None
@@ -2794,87 +2794,69 @@ async def _initialize_tokens_and_markets(self):
27942794 derivative_markets = dict ()
27952795 binary_option_markets = dict ()
27962796 tokens_by_symbol , tokens_by_denom = await self ._tokens_from_official_lists (network = self .network )
2797- markets_info = (await self .fetch_spot_markets (market_statuses = ["active" ]))["markets" ]
2798- valid_markets = (
2799- market_info
2800- for market_info in markets_info
2801- if len (market_info .get ("baseTokenMeta" , {}).get ("symbol" , "" )) > 0
2802- and len (market_info .get ("quoteTokenMeta" , {}).get ("symbol" , "" )) > 0
2803- )
2804-
2805- for market_info in valid_markets :
2806- base_token = self ._token_representation (
2807- token_meta = market_info ["baseTokenMeta" ],
2808- denom = market_info ["baseDenom" ],
2809- tokens_by_denom = tokens_by_denom ,
2810- tokens_by_symbol = tokens_by_symbol ,
2811- )
2812- quote_token = self ._token_representation (
2813- token_meta = market_info ["quoteTokenMeta" ],
2814- denom = market_info ["quoteDenom" ],
2815- tokens_by_denom = tokens_by_denom ,
2816- tokens_by_symbol = tokens_by_symbol ,
2817- )
2797+ self ._tokens_by_denom .update (tokens_by_denom )
2798+ self ._tokens_by_symbol .update (tokens_by_symbol )
2799+
2800+ markets_info = (await self .fetch_chain_spot_markets_v2 (status = "Active" ))["markets" ]
2801+ for market_info in markets_info :
2802+ base_token = self ._tokens_by_denom .get (market_info ["baseDenom" ])
2803+ quote_token = self ._tokens_by_denom .get (market_info ["quoteDenom" ])
28182804
28192805 market = SpotMarket (
28202806 id = market_info ["marketId" ],
2821- status = market_info ["marketStatus " ],
2807+ status = market_info ["status " ],
28222808 ticker = market_info ["ticker" ],
28232809 base_token = base_token ,
28242810 quote_token = quote_token ,
2825- maker_fee_rate = Decimal (market_info ["makerFeeRate" ]),
2826- taker_fee_rate = Decimal (market_info ["takerFeeRate" ]),
2827- service_provider_fee = Decimal (market_info ["serviceProviderFee" ]),
2828- min_price_tick_size = Decimal (market_info ["minPriceTickSize" ]),
2829- min_quantity_tick_size = Decimal (market_info ["minQuantityTickSize" ]),
2830- min_notional = Decimal (market_info ["minNotional" ]),
2811+ maker_fee_rate = Token .convert_value_from_chain_format (Decimal (market_info ["makerFeeRate" ])),
2812+ taker_fee_rate = Token .convert_value_from_chain_format (Decimal (market_info ["takerFeeRate" ])),
2813+ service_provider_fee = Token .convert_value_from_chain_format (Decimal (market_info ["relayerFeeShareRate" ])),
2814+ min_price_tick_size = Token .convert_value_from_chain_format (Decimal (market_info ["minPriceTickSize" ])),
2815+ min_quantity_tick_size = Token .convert_value_from_chain_format (
2816+ Decimal (market_info ["minQuantityTickSize" ])
2817+ ),
2818+ min_notional = Token .convert_value_from_chain_format (Decimal (market_info ["minNotional" ])),
28312819 )
28322820
28332821 spot_markets [market .id ] = market
28342822
2835- markets_info = (await self .fetch_derivative_markets (market_statuses = ["active" ]))["markets" ]
2836- valid_markets = (
2837- market_info
2838- for market_info in markets_info
2839- if len (market_info .get ("quoteTokenMeta" , {}).get ("symbol" , "" )) > 0
2840- )
2841-
2842- for market_info in valid_markets :
2843- quote_token = self ._token_representation (
2844- token_meta = market_info ["quoteTokenMeta" ],
2845- denom = market_info ["quoteDenom" ],
2846- tokens_by_denom = tokens_by_denom ,
2847- tokens_by_symbol = tokens_by_symbol ,
2848- )
2849-
2850- market = DerivativeMarket (
2851- id = market_info ["marketId" ],
2852- status = market_info ["marketStatus" ],
2853- ticker = market_info ["ticker" ],
2854- oracle_base = market_info ["oracleBase" ],
2855- oracle_quote = market_info ["oracleQuote" ],
2856- oracle_type = market_info ["oracleType" ],
2857- oracle_scale_factor = market_info ["oracleScaleFactor" ],
2858- initial_margin_ratio = Decimal (market_info ["initialMarginRatio" ]),
2859- maintenance_margin_ratio = Decimal (market_info ["maintenanceMarginRatio" ]),
2823+ markets_info = (await self .fetch_chain_derivative_markets_v2 (status = "Active" , with_mid_price_and_tob = False ))[
2824+ "markets"
2825+ ]
2826+ for market_info in markets_info :
2827+ market = market_info ["market" ]
2828+ quote_token = self ._tokens_by_denom .get (market ["quoteDenom" ])
2829+
2830+ derivative_market = DerivativeMarket (
2831+ id = market ["marketId" ],
2832+ status = market ["status" ],
2833+ ticker = market ["ticker" ],
2834+ oracle_base = market ["oracleBase" ],
2835+ oracle_quote = market ["oracleQuote" ],
2836+ oracle_type = market ["oracleType" ],
2837+ oracle_scale_factor = market ["oracleScaleFactor" ],
2838+ initial_margin_ratio = Token .convert_value_from_chain_format (Decimal (market ["initialMarginRatio" ])),
2839+ maintenance_margin_ratio = Token .convert_value_from_chain_format (
2840+ Decimal (market ["maintenanceMarginRatio" ])
2841+ ),
28602842 quote_token = quote_token ,
2861- maker_fee_rate = Decimal (market_info ["makerFeeRate" ]),
2862- taker_fee_rate = Decimal (market_info ["takerFeeRate" ]),
2863- service_provider_fee = Decimal (market_info [ "serviceProviderFee" ] ),
2864- min_price_tick_size = Decimal (market_info ["minPriceTickSize" ]),
2865- min_quantity_tick_size = Decimal (market_info ["minQuantityTickSize" ]),
2866- min_notional = Decimal (market_info ["minNotional" ]),
2843+ maker_fee_rate = Token . convert_value_from_chain_format ( Decimal (market ["makerFeeRate" ]) ),
2844+ taker_fee_rate = Token . convert_value_from_chain_format ( Decimal (market ["takerFeeRate" ]) ),
2845+ service_provider_fee = Token . convert_value_from_chain_format ( Decimal (market [ "relayerFeeShareRate" ]) ),
2846+ min_price_tick_size = Token . convert_value_from_chain_format ( Decimal (market ["minPriceTickSize" ]) ),
2847+ min_quantity_tick_size = Token . convert_value_from_chain_format ( Decimal (market ["minQuantityTickSize" ]) ),
2848+ min_notional = Token . convert_value_from_chain_format ( Decimal (market ["minNotional" ]) ),
28672849 )
28682850
2869- derivative_markets [market .id ] = market
2851+ derivative_markets [derivative_market .id ] = derivative_market
28702852
2871- markets_info = (await self .fetch_binary_options_markets ( market_status = "active " ))["markets" ]
2853+ markets_info = (await self .fetch_chain_binary_options_markets_v2 ( status = "Active " ))["markets" ]
28722854 for market_info in markets_info :
2873- quote_token = tokens_by_denom . get (market_info ["quoteDenom" ], None )
2855+ quote_token = self . _tokens_by_denom . get (market_info ["quoteDenom" ])
28742856
28752857 market = BinaryOptionMarket (
28762858 id = market_info ["marketId" ],
2877- status = market_info ["marketStatus " ],
2859+ status = market_info ["status " ],
28782860 ticker = market_info ["ticker" ],
28792861 oracle_symbol = market_info ["oracleSymbol" ],
28802862 oracle_provider = market_info ["oracleProvider" ],
@@ -2883,21 +2865,21 @@ async def _initialize_tokens_and_markets(self):
28832865 expiration_timestamp = market_info ["expirationTimestamp" ],
28842866 settlement_timestamp = market_info ["settlementTimestamp" ],
28852867 quote_token = quote_token ,
2886- maker_fee_rate = Decimal (market_info ["makerFeeRate" ]),
2887- taker_fee_rate = Decimal (market_info ["takerFeeRate" ]),
2888- service_provider_fee = Decimal (market_info ["serviceProviderFee" ]),
2889- min_price_tick_size = Decimal (market_info ["minPriceTickSize" ]),
2890- min_quantity_tick_size = Decimal (market_info ["minQuantityTickSize" ]),
2891- min_notional = Decimal (market_info ["minNotional" ]),
2868+ maker_fee_rate = Token .convert_value_from_chain_format (Decimal (market_info ["makerFeeRate" ])),
2869+ taker_fee_rate = Token .convert_value_from_chain_format (Decimal (market_info ["takerFeeRate" ])),
2870+ service_provider_fee = Token .convert_value_from_chain_format (Decimal (market_info ["relayerFeeShareRate" ])),
2871+ min_price_tick_size = Token .convert_value_from_chain_format (Decimal (market_info ["minPriceTickSize" ])),
2872+ min_quantity_tick_size = Token .convert_value_from_chain_format (
2873+ Decimal (market_info ["minQuantityTickSize" ])
2874+ ),
2875+ min_notional = Token .convert_value_from_chain_format (Decimal (market_info ["minNotional" ])),
28922876 settlement_price = None
28932877 if market_info ["settlementPrice" ] == ""
2894- else Decimal (market_info ["settlementPrice" ]),
2878+ else Token . convert_value_from_chain_format ( Decimal (market_info ["settlementPrice" ]) ),
28952879 )
28962880
28972881 binary_option_markets [market .id ] = market
28982882
2899- self ._tokens_by_denom = tokens_by_denom
2900- self ._tokens_by_symbol = tokens_by_symbol
29012883 self ._spot_markets = spot_markets
29022884 self ._derivative_markets = derivative_markets
29032885 self ._binary_option_markets = binary_option_markets
0 commit comments