@@ -157,8 +157,8 @@ def __init__(
157157 self ._initialize_timeout_height_sync_task ()
158158
159159 self ._tokens_and_markets_initialization_lock = asyncio .Lock ()
160- self ._tokens_by_denom : Optional [ Dict [ str , Token ]] = None
161- self ._tokens_by_symbol : Optional [ Dict [ str , Token ]] = None
160+ self ._tokens_by_denom = dict ()
161+ self ._tokens_by_symbol = dict ()
162162 self ._spot_markets : Optional [Dict [str , SpotMarket ]] = None
163163 self ._derivative_markets : Optional [Dict [str , DerivativeMarket ]] = None
164164 self ._binary_option_markets : Optional [Dict [str , BinaryOptionMarket ]] = None
@@ -3291,87 +3291,81 @@ async def _initialize_tokens_and_markets(self):
32913291 derivative_markets = dict ()
32923292 binary_option_markets = dict ()
32933293 tokens_by_symbol , tokens_by_denom = await self ._tokens_from_official_lists (network = self .network )
3294- markets_info = (await self .fetch_spot_markets (market_statuses = ["active" ]))["markets" ]
3295- valid_markets = (
3296- market_info
3297- for market_info in markets_info
3298- if len (market_info .get ("baseTokenMeta" , {}).get ("symbol" , "" )) > 0
3299- and len (market_info .get ("quoteTokenMeta" , {}).get ("symbol" , "" )) > 0
3300- )
3301-
3302- for market_info in valid_markets :
3303- base_token = self ._token_representation (
3304- token_meta = market_info ["baseTokenMeta" ],
3305- denom = market_info ["baseDenom" ],
3306- tokens_by_denom = tokens_by_denom ,
3307- tokens_by_symbol = tokens_by_symbol ,
3308- )
3309- quote_token = self ._token_representation (
3310- token_meta = market_info ["quoteTokenMeta" ],
3311- denom = market_info ["quoteDenom" ],
3312- tokens_by_denom = tokens_by_denom ,
3313- tokens_by_symbol = tokens_by_symbol ,
3314- )
3294+ self ._tokens_by_denom .update (tokens_by_denom )
3295+ self ._tokens_by_symbol .update (tokens_by_symbol )
3296+
3297+ markets_info = (await self .fetch_chain_spot_markets (status = "Active" ))["markets" ]
3298+ for market_info in markets_info :
3299+ base_token = self ._tokens_by_denom .get (market_info ["baseDenom" ])
3300+ quote_token = self ._tokens_by_denom .get (market_info ["quoteDenom" ])
33153301
33163302 market = SpotMarket (
33173303 id = market_info ["marketId" ],
3318- status = market_info ["marketStatus " ],
3304+ status = market_info ["status " ],
33193305 ticker = market_info ["ticker" ],
33203306 base_token = base_token ,
33213307 quote_token = quote_token ,
3322- maker_fee_rate = Decimal (market_info ["makerFeeRate" ]),
3323- taker_fee_rate = Decimal (market_info ["takerFeeRate" ]),
3324- service_provider_fee = Decimal (market_info ["serviceProviderFee" ]),
3325- min_price_tick_size = Decimal (market_info ["minPriceTickSize" ]),
3326- min_quantity_tick_size = Decimal (market_info ["minQuantityTickSize" ]),
3327- min_notional = Decimal (market_info ["minNotional" ]),
3308+ maker_fee_rate = Token .convert_value_from_extended_decimal_format (Decimal (market_info ["makerFeeRate" ])),
3309+ taker_fee_rate = Token .convert_value_from_extended_decimal_format (Decimal (market_info ["takerFeeRate" ])),
3310+ service_provider_fee = Token .convert_value_from_extended_decimal_format (
3311+ Decimal (market_info ["relayerFeeShareRate" ])
3312+ ),
3313+ min_price_tick_size = Token .convert_value_from_extended_decimal_format (
3314+ Decimal (market_info ["minPriceTickSize" ])
3315+ ),
3316+ min_quantity_tick_size = Token .convert_value_from_extended_decimal_format (
3317+ Decimal (market_info ["minQuantityTickSize" ])
3318+ ),
3319+ min_notional = Token .convert_value_from_extended_decimal_format (Decimal (market_info ["minNotional" ])),
33283320 )
33293321
33303322 spot_markets [market .id ] = market
33313323
3332- markets_info = (await self .fetch_derivative_markets (market_statuses = ["active" ]))["markets" ]
3333- valid_markets = (
3334- market_info
3335- for market_info in markets_info
3336- if len (market_info .get ("quoteTokenMeta" , {}).get ("symbol" , "" )) > 0
3337- )
3338-
3339- for market_info in valid_markets :
3340- quote_token = self ._token_representation (
3341- token_meta = market_info ["quoteTokenMeta" ],
3342- denom = market_info ["quoteDenom" ],
3343- tokens_by_denom = tokens_by_denom ,
3344- tokens_by_symbol = tokens_by_symbol ,
3345- )
3346-
3347- market = DerivativeMarket (
3348- id = market_info ["marketId" ],
3349- status = market_info ["marketStatus" ],
3350- ticker = market_info ["ticker" ],
3351- oracle_base = market_info ["oracleBase" ],
3352- oracle_quote = market_info ["oracleQuote" ],
3353- oracle_type = market_info ["oracleType" ],
3354- oracle_scale_factor = market_info ["oracleScaleFactor" ],
3355- initial_margin_ratio = Decimal (market_info ["initialMarginRatio" ]),
3356- maintenance_margin_ratio = Decimal (market_info ["maintenanceMarginRatio" ]),
3324+ markets_info = (await self .fetch_chain_derivative_markets (status = "Active" , with_mid_price_and_tob = False ))[
3325+ "markets"
3326+ ]
3327+ for market_info in markets_info :
3328+ market = market_info ["market" ]
3329+ quote_token = self ._tokens_by_denom .get (market ["quoteDenom" ])
3330+
3331+ derivative_market = DerivativeMarket (
3332+ id = market ["marketId" ],
3333+ status = market ["status" ],
3334+ ticker = market ["ticker" ],
3335+ oracle_base = market ["oracleBase" ],
3336+ oracle_quote = market ["oracleQuote" ],
3337+ oracle_type = market ["oracleType" ],
3338+ oracle_scale_factor = market ["oracleScaleFactor" ],
3339+ initial_margin_ratio = Token .convert_value_from_extended_decimal_format (
3340+ Decimal (market ["initialMarginRatio" ])
3341+ ),
3342+ maintenance_margin_ratio = Token .convert_value_from_extended_decimal_format (
3343+ Decimal (market ["maintenanceMarginRatio" ])
3344+ ),
33573345 quote_token = quote_token ,
3358- maker_fee_rate = Decimal (market_info ["makerFeeRate" ]),
3359- taker_fee_rate = Decimal (market_info ["takerFeeRate" ]),
3360- service_provider_fee = Decimal (market_info ["serviceProviderFee" ]),
3361- min_price_tick_size = Decimal (market_info ["minPriceTickSize" ]),
3362- min_quantity_tick_size = Decimal (market_info ["minQuantityTickSize" ]),
3363- min_notional = Decimal (market_info ["minNotional" ]),
3346+ maker_fee_rate = Token .convert_value_from_extended_decimal_format (Decimal (market ["makerFeeRate" ])),
3347+ taker_fee_rate = Token .convert_value_from_extended_decimal_format (Decimal (market ["takerFeeRate" ])),
3348+ service_provider_fee = Token .convert_value_from_extended_decimal_format (
3349+ Decimal (market ["relayerFeeShareRate" ])
3350+ ),
3351+ min_price_tick_size = Token .convert_value_from_extended_decimal_format (
3352+ Decimal (market ["minPriceTickSize" ])
3353+ ),
3354+ min_quantity_tick_size = Token .convert_value_from_extended_decimal_format (
3355+ Decimal (market ["minQuantityTickSize" ])
3356+ ),
3357+ min_notional = Token .convert_value_from_extended_decimal_format (Decimal (market ["minNotional" ])),
33643358 )
33653359
3366- derivative_markets [market .id ] = market
3360+ derivative_markets [derivative_market .id ] = derivative_market
33673361
3368- markets_info = (await self .fetch_binary_options_markets ( market_status = "active " ))["markets" ]
3362+ markets_info = (await self .fetch_chain_binary_options_markets ( status = "Active " ))["markets" ]
33693363 for market_info in markets_info :
3370- quote_token = tokens_by_denom . get (market_info ["quoteDenom" ], None )
3364+ quote_token = self . _tokens_by_denom . get (market_info ["quoteDenom" ])
33713365
33723366 market = BinaryOptionMarket (
33733367 id = market_info ["marketId" ],
3374- status = market_info ["marketStatus " ],
3368+ status = market_info ["status " ],
33753369 ticker = market_info ["ticker" ],
33763370 oracle_symbol = market_info ["oracleSymbol" ],
33773371 oracle_provider = market_info ["oracleProvider" ],
@@ -3380,21 +3374,25 @@ async def _initialize_tokens_and_markets(self):
33803374 expiration_timestamp = market_info ["expirationTimestamp" ],
33813375 settlement_timestamp = market_info ["settlementTimestamp" ],
33823376 quote_token = quote_token ,
3383- maker_fee_rate = Decimal (market_info ["makerFeeRate" ]),
3384- taker_fee_rate = Decimal (market_info ["takerFeeRate" ]),
3385- service_provider_fee = Decimal (market_info ["serviceProviderFee" ]),
3386- min_price_tick_size = Decimal (market_info ["minPriceTickSize" ]),
3387- min_quantity_tick_size = Decimal (market_info ["minQuantityTickSize" ]),
3388- min_notional = Decimal (market_info ["minNotional" ]),
3377+ maker_fee_rate = Token .convert_value_from_extended_decimal_format (Decimal (market_info ["makerFeeRate" ])),
3378+ taker_fee_rate = Token .convert_value_from_extended_decimal_format (Decimal (market_info ["takerFeeRate" ])),
3379+ service_provider_fee = Token .convert_value_from_extended_decimal_format (
3380+ Decimal (market_info ["relayerFeeShareRate" ])
3381+ ),
3382+ min_price_tick_size = Token .convert_value_from_extended_decimal_format (
3383+ Decimal (market_info ["minPriceTickSize" ])
3384+ ),
3385+ min_quantity_tick_size = Token .convert_value_from_extended_decimal_format (
3386+ Decimal (market_info ["minQuantityTickSize" ])
3387+ ),
3388+ min_notional = Token .convert_value_from_extended_decimal_format (Decimal (market_info ["minNotional" ])),
33893389 settlement_price = None
33903390 if market_info ["settlementPrice" ] == ""
3391- else Decimal (market_info ["settlementPrice" ]),
3391+ else Token . convert_value_from_extended_decimal_format ( Decimal (market_info ["settlementPrice" ]) ),
33923392 )
33933393
33943394 binary_option_markets [market .id ] = market
33953395
3396- self ._tokens_by_denom = tokens_by_denom
3397- self ._tokens_by_symbol = tokens_by_symbol
33983396 self ._spot_markets = spot_markets
33993397 self ._derivative_markets = derivative_markets
34003398 self ._binary_option_markets = binary_option_markets
0 commit comments