cross

Method

How a venue is chosen, how a quote is made, and why the addresses everyone checks first are the wrong ones. Where a figure could not be measured it is absent rather than estimated.

Chain 4663 · measured at block 57,600,352 · 2026-09-08

01

What a cross is

A cross is what a broker does when one side of a trade is matched against the other: two positions change hands in one event, or neither does. In an account that settles on a cycle, moving from one holding to another is two events with a gap between them — you sell, the cash settles later, and until it does you are holding money instead of a position while the market carries on without you.

Here both legs are one transaction. It either fills or it reverts, and there is no state in which you own the proceeds of the first leg and not the second. That is not a feature anyone built; it is what a transaction is. What had to be built is everything around it, because on this chain finding the other side of the trade is the hard part.

02

The rate is one number, not two prices

CROSS quotes a cross as a ratio between the two securities — one NVDA is so many TSLA — rather than as two dollar prices. That is how the decision is actually made. Nobody moving between two holdings cares what either is worth in dollars at the instant they press the button; they care how many of the second they end up holding for each one of the first they gave up.

Quoting it as two prices also imports a problem that does not need to exist: it requires a dollar value, and no price oracle is published for this chain. The ratio needs none.

Dollars are shown anyway, because nobody thinks in ratios alone — but they are QUOTED rather than looked up. The value of a quantity here is what that exact quantity would fetch if sold into USDG through the same routing that would fill it, which makes it an executable number and not a mark. It therefore carries the price impact of the size being valued, which is the honest answer: a large position in a thin security is not worth its marginal price, and a mark would insist that it was.

The two sides are valued separately and both are shown, so the gap between them is visible. That gap — dollars in against dollars out — is what the crossing actually costs, fees and both legs’ impact included, and it is the number the trade should be judged on. It is routinely nothing like the price impact against a single pool’s own mark: a five percent fee tier will show a modest impact and take five percent of the value.

03

Where the book actually is

There are three UniversalRouters deployed on this chain and no two of them are the same code. An earlier version of this page said there were two and that they were byte for byte identical; both halves of that were wrong, and the correction is here rather than quietly removed.

The one at Uniswap’s canonical address embeds a poolManager with no code and a zero codehash — an account never touched on this chain — and embeds the published V3 factory, which here is occupied. Every v4 command routed through it addresses nothing.

The other two both name the live PoolManager holding 14,615 ether and $48.2M. What separates them is not capability but use: across forty-two consecutive router transactions sampled from recent blocks, every one went to 0x8876789976dEcBfCbBbe364623C63652db8C0904 and none to the other. That is the one this product settles a v4 fill through, and the exact bytes it sends are checked in this repository against a transaction the chain has already accepted.

And at the version below that it is worse than absent. Uniswap’s canonical V3 factory, both canonical quoters, the canonical SwapRouter and the canonical position manager are all occupied — by one and the same 2,109-byte contract, compiled with a solc 0.4 series, whose selectors are recoverETH(), changeForwardingAddress(address) and changeOwner(address). A funds forwarder, sitting on five of the best-known addresses in decentralised finance.

Its fallback swallows everything. Call getPool on it and the call succeeds and returns empty data — so a client checking for a revert sees no error, decodes the zero address, and concludes there is no pool. That is the failure this product exists to make visible: not a missing contract, which announces itself, but a present one that answers every question with silence.

The same thing is true one version down. The canonical Uniswap V2 factory here is complete and busy — 41,274 pairs — and for equities it is empty. NVIDIA against the dollar holds $0.19 on it. The deepest equity pools are on a V3 factory that is likewise not the published one. Both live deployments were identified by reading an address back off a contract that had to know it — a router’s own factory(), a position manager’s own poolManager() — rather than by trusting a directory.

04

The asset this venue is built around is not the one v3 taught you to expect

A Uniswap v3 pool can only hold ERC-20s, so ether has to be wrapped to be traded and “the ether pool” has always meant the WETH pool. v4 removed that restriction: a pool can hold the chain’s own gas token directly, addressed as a currency of zero.

On this venue that is not a detail. Counting pool sides across two million recent blocks, native ether appears 18,507 times, the dollar 10,036, and wrapped ether 1,044. Ether is the deepest asset here by a wide margin and wrapped ether is a rounding error beside it — so an index built on the v3 habit misses most of the book, and misses it silently, because every pair it did index still answers.

There is no USDC on this chain, and no USDT or DAI either: 120,175 pools sampled over six million blocks turned up exactly one dollar, and it is Global Dollar. This product quotes what is here rather than what is usually here.

05

A pool existing is not a market

NVDA / USDG has 247 initialised pools. 32 of them hold any liquidity at all. Among the rest are pools set at fee rates approaching ninety percent, which is not a market — it is something that answers a query.

NVIDIA against Tesla has 2 pools directly, at ordinary fee tiers, and both are empty. So a router that looks for a direct pair, finds one and stops has found the worst available answer in the shape of the best one. CROSS quotes every pool that could fill, on the size actually being traded, and takes the one that returns the most. Pools it cannot price are listed with the reason rather than dropped, because a router that silently discards what it could not read looks identical to one that found nothing there.

06

The balance is not the position

These are ERC-8056 scaled tokens. The number an ERC-20 balanceOf returns is not the number of shares held: the share count is that balance multiplied by a value the issuer updates when a corporate action lands. 12 of the 194 securities already carry a multiplier other than one. CrowdStrike carries exactly 4.0, because the company split four for one and the token absorbed it by changing the multiplier rather than by minting.

So an interface that renders the raw balance shows a quarter of that holding while looking entirely normal. The pools have the same problem in reverse: an automated market maker prices raw token units, so a pool’s price is a price per token and the price per share is that divided by the multiplier. Both are real numbers and they are not the same number. Every quantity in this product says which of the two it is.

07

Identifiers, and why they are checked

A ticker is not an identifier. Roughly 4,228,127 tokens have been deployed on this chain and nothing prevents any of them from calling itself NVDA. The address answers the question a ticker cannot and no person can carry it — forty-two hexadecimal characters with no redundancy, where a single transposed pair still looks exactly like an address.

The issuer publishes an ISO 6166 identifier for every one of these securities, and this product recomputes each one against its own check digit at build time rather than trusting the list. All 194 pass. The American ones carry a second identifier nested inside them with a check digit of its own, and all of those pass separately — Apple’s reads US · 037833100 · 5.

A check digit is not decoration. Measured across the whole published list, it catches every adjacent transposition of two digits except a zero beside a nine, which is the one pair the algorithm provably cannot see, and about ninety-nine percent of single-character substitutions. It is the difference between an identifier that can be read down a telephone and one that cannot.

08

What can be done to these tokens

Every one of the 194 securities is a beacon proxy, and all of them share a single registry contract at 0xe10b6f6B275de231345c20D14Ab812db62151b00. That one contract can upgrade every implementation at once, pause every token at once, and refuse any address. It has used two of the three: the system was globally paused once and unpaused a hundred and forty-two blocks later, and 175 addresses are blocked right now. The blocklist is enforced inside transfer, so a pool holding these tokens can be frozen without notice.

There is no fee on transfer and no allowlist — measured rather than assumed, by simulating a transfer from a real holder and comparing both balances either side of it. So these are permissionlessly tradable instruments, right up until somebody decides they are not. That is a property of the assets, not of this interface, and it is on this page because a product that quotes them and omits it is not being straight with you.

09

What this is not

Not affiliated with, endorsed by, or connected to Robinhood. Unaudited. Not investment advice, and not a broker: CROSS never takes custody, never holds an order, and cannot fill anything itself — it reads public state and hands your wallet a transaction to sign.

The current build settles a v3 path of any length through SwapRouter02, and a single v4 hop through the live UniversalRouter. A cross that needs TWO v4 hops is declined: that calldata shape could not be established from any transaction on this chain, and calldata that has not been proven is not something to put in front of a wallet. Where a declined route would have paid more, the shortfall is shown in basis points rather than hidden.

Two kinds of pool are listed and never quoted. One is the pool whose fee is set by a hook at swap time, because that fee is not in the state that was read. The other is newer and worse: a pool whose hook holds BEFORE_SWAP_RETURNS_DELTA or AFTER_SWAP_RETURNS_DELTA, which lets it change the amounts after the pool’s own arithmetic has run. 82 of the funded pools indexed here carry one. The deepest NVIDIA-against-the-dollar pool on this chain is among them: it advertises a fee of zero, and quoting it from state made it look like the best venue on the chain by nearly two percent. A hook’s permissions are written into the low fourteen bits of its own address, so this is checked without asking anyone.

Open the terminal