mirror of
https://github.com/luxfi/dex.git
synced 2026-09-24 00:26:31 +00:00
Explore on Ethereum drew nothing at all — not an empty table, no request made — because enumerating a chain went to an indexer that only carries ours, and the hosted API that would answer costs a contract. Two paths close that without asking anybody for one. /v1/trade/tokens serves a list the binary carries: 935 tokens over the seven chains this gateway prices, identity only, checked at build time rather than per request. No logo, and the struct has nowhere to put one — every public list gives logos as URLs on four hosts belonging to somebody else, fetched by every viewer's browser on every market screen. /v1/trade/price is a reading of the same pools /v1/trade/quote reads: spend a fixed hundred dollars of a numéraire, see what comes back, put the pool's fee back in. Not one whole token — that is a fifty-cent trade in one market and a hundred-thousand-dollar one in the next, and the second moves the pool it is measuring. Not the raw quote either: a pool hands back the mid less its tier, which is $1.0031 for a $1.00 token and $3018.51 for a $3000 one two hops deep. Two numéraires per chain, the dollar and the wrapped native token, and the cheaper reading wins. Measured against an independent source on seven chains, every price inside half a percent. A token no pool holds comes back WITHOUT priceUSD, never with a zero: a screen can draw a dash and it cannot un-draw a wrong number. A reading stands for a minute; an unreadable chain for ten seconds, because the pools have not changed — our access to them has. Fifty per request, eight in flight, and thirty-two readers of one cold price produce one fan-out. Two things this needed that were wrong on their own account. A fee had two units — the V2 arm answered 30 where the V3 arm answered 3000 for the same three tenths of a percent — so feeFromBPS converts once and nothing else means anything else by that number. And the arm reading our own precompiles answered "no liquidity" to an endpoint that never replied, which is enough on its own to report a chain nobody could reach as a pair nobody holds. Co-authored-by: Hanzo Dev <[email protected]>