The ticker is not the asset
On a chain where anyone can deploy a token called anything, a symbol is a claim rather than a fact. Here is what we check instead.
A symbol is not an identifier
Nothing stops two contracts on the same chain from both reporting the symbol BELT, and on Robinhood Chain two of them do. One has a market. The other has no pool at any fee tier against USDG or WETH and cannot be traded at all. Both are real contracts, both answer symbol() honestly, and a buyer reading only the ticker has no way to tell them apart. A symbol is a string the deployer chose. It is a claim about identity, not evidence of it, and a lending protocol that treats it as evidence will eventually price the wrong thing.
Decimals catch the lazy impostor
The cheapest check is the one most often skipped. Real USDG on this chain uses six decimals. The impostors that clone its name and symbol overwhelmingly use eighteen, because eighteen is the default in every template. A basket that assumes a uniform eighteen decimals across its legs misprices a six-decimal one by a factor of a trillion, which is not a rounding error but a total loss of meaning. Read decimals() on every contract you touch, and treat a mismatch against what the asset should be as disqualifying rather than curious.
Depth is where the claim gets tested
A token with a plausible name, correct decimals and no liquidity is still not collateral, because collateral is only worth what a liquidation can actually sell it for. So the question is never whether a market exists but how deep it is at the size your cap allows. We size every supply cap so a full liquidation is a fraction of the pool it must clear into, not a multiple of it. One candidate failed exactly this test and was left off the book: its pool held $23.3K against a white-belt cap of $25K, so liquidating a maxed position would have been larger than the market absorbing it.
An empty pool answers as readily as a full one
Ask a Uniswap V3 factory for a pool and it returns whatever address was deployed, whether or not anyone ever funded it. Two of the tokens we looked at have a fee-100 pool sitting at exactly zero liquidity and zero USDG. A reasonable-sounding heuristic, pick the lowest fee tier, selects those pools every time, and every quote against them then reverts or returns nonsense. The pool address existing tells you nothing. Read the liquidity and read the balance.
Depth moves, so constants rot
We checked our figures against a sibling project that had read the same chain two days earlier, and two of its constants were already wrong. One token's deepest pool had moved from the 3000 fee tier to the 500 tier, a difference of $124K in depth. Another had grown roughly twenty-four fold, from $6.9K to $166.8K. Neither project was careless; the chain simply moved. Any parameter derived from liquidity has a shelf life, which is why a cap is reviewed on a schedule rather than set once and inherited forever.
What survives all of it
The five gates behind every listing exist because each one catches something the others miss. A price from a feed we did not build. A venue with measured depth at cap size. A drawdown test the liquidation engine clears without spilling into another market. A cap sized against that measured depth. A named curator who answers for the parameters. A collateral that passes all five arrives at white belt anyway, because passing the checks once is the entry requirement, not the promotion. Everything above is readable on chain: the belt, the LLTV, the cap, the oracle. If this page and the registry disagree, the registry is right.