From Scattered Pools to One Fill
Three steps, none of which asks you to trust the interface: read the chain, ask the pools what they will actually give, then let the contract check the result against what you signed.
1 · Read
The engine asks DexScreener one thing only — which pools exist. Everything else comes from chain 4663 directly. Concentrated pools are priced from their own state; Uniswap v4 has no pool contract at all, so its price is read out of the singleton’s storage.
slot = keccak256(abi.encode(poolId, 6)) sqrtPriceX96 = extsload(slot) & ((1 << 160) - 1)
Half the live pools on this chain are v4. Before this was read on-chain, their prices came from an indexer that converts cross-equity pairs through its own rate, and that produced spreads of three to four percent that did not exist. Reading the singleton cut the widest spread on SPY from 4.74% to 1.25%.
2 · Quote
A price without a size is decoration. Modelling the swap inside the current tick overstates the output by roughly 0.16% on a pool with one-tick spacing — and venues differ from each other by about 0.01%, so the model’s error is an order of magnitude larger than the thing being measured.
VoxQuoter asks the pools instead. It calls their real swap, and in the callback reverts with the numbers rather than paying. Nothing settles, nothing is signed, and one eth_call prices the whole book — including how much input each pool can actually absorb.
3 · Execute
The router pulls, routes, and checks. What landed is measured as a balance delta, the protocol fee is taken before the comparison, and anything short of the signed minimum reverts.
uint256 got = IERC20(tokenOut).balanceOf(address(this)) - outBefore; if (bps != 0) got -= (got * bps) / 10_000; if (got < minOut) revert VoxSlippage(got, minOut);
A concentrated pool takes only as much input as its liquidity allows. If it takes less than the order, the remainder would sit in the router — so a partial fill is a revert, not a partial success.
Contracts
Deployed at block 50,072,426. Protocol fee is zero and the ceiling written into the contract is 30 basis points. Ownership transfer takes two steps, so a mistyped address cannot take the keys away.
What it deliberately does not do
Hop.pool is supplied by the caller and is not validated against a factory. What the contract enforces is that money leaving for that pool belongs to this call and never exceeds its own amountIn — a route into someone else’s pool can only hurt whoever signed it.
Both directions, one call
Buying and selling are the same call with the tokens the other way round. A route can take up to three hops, so an equity with no direct pool in your currency is reached through the deepest bridge — but a second hop is only taken when it beats the direct route by more than ten basis points, because an extra hop is a second fee and a second pool that can run out.
Uniswap v2 pools are not supported on purpose. There are no live v2 venues on this chain, and the constant-product formula silently understates the output on a Solidly-style curve. Splitting one order across several venues and executing on v4 are the next phase.
There is no audit. The contracts hold nothing between transactions and the source is public, and that is the whole of what can honestly be said today.
Six Venues, Measured Not Assumed
Which AMM a venue actually runs is determined by asking its pools, not by reading the indexer’s label. Two venues here arrive with no version tag at all and were being read as constant-product — one of them answers getReserves with raw balances that are not a price.
Why forks work without adapters
Every v3 descendant here keeps the same swap signature and the same callback shape, and only renames the callback. The router answers any selector through its fallback, so Ramses, Giga and Algebra pools are executed by the same code path as Uniswap. What the callback pays is fixed by the hop being executed, not by whatever the pool asks for.
Why forge cannot prove this
Tokenised equities on this chain are Stylus contracts — WebAssembly, not EVM bytecode. The revm inside Foundry refuses to execute them, and the Up and Alandale pools are equity-paired only. Fork tests therefore cover the router against ordinary ERC-20 pairs, and the venues that carry the actual product are proven on the live chain instead:
That script simulates a real swap through the deployed router on one pool per venue against live mainnet state. Balances and allowances are supplied by state override, so it needs no funds and moves nothing.
Recompute Everything
Every figure on this site is derived, and each derivation is a command. If what you compute disagrees with what is published here, what is published is wrong.
Encoder against cast, keccak against cast, the canonical registry, venue executability, partial-fill rejection, and a dry-run of a real trade.
Resolves each ticker to the contract carrying the real market, drops pools claiming billions against no volume, and prints the venue table.
Finds where a pool stops absorbing, then shows the router rejecting an order past that point rather than filling it halfway.
Every selector, topic and calldata this site builds, compared byte for byte against foundry. It fails before the app can send nonsense.
A round trip, both directions
Five dollars of USDG into 0.02275283 NVDA, then 0.02 NVDA back out for 4.392261 USDG. Same contract, opposite directions, routed by the same code the app runs. Deviation from the quote was zero on the buy and 0.002% on the sell, and the router held nothing after either.
What is not proven
There is no audit. Uniswap v4 is read but not yet executed against. Splitting a single order across venues is designed but not shipped. Those are stated here rather than left for someone to discover.
A Layer, Not a Venue
Voxelithic does not hold liquidity and does not want any. It reads what already exists on Robinhood Chain and makes it addressable as one book.
Tokenised equities on chain 4663 trade in around 170 pools spread over nine venues and quoted in three different denominations — dollars, wrapped ether, and other equities. Nothing forces those quotes to agree, and they do not.
The gap is not the interesting part on its own; anyone can screenshot two prices. The interesting part is that acting on it requires knowing how much each pool can absorb before it stops, and having something that refuses to fill you at a worse number than you accepted. That is the whole protocol.
What exists today
A depth engine that reads every live pool from the chain. A quoter that makes the pools do their own arithmetic. A router that verifies the fill. All three are deployed, verified, and reproducible from the repository.
What does not
No audit. No token utility that requires anyone to buy anything. No claimed partnerships, no investor list, and no press quotes — if something is not linkable, it is not on this site.
What Actually Shipped
Deploys and measurements, newest first. Anything listed here has an address, a transaction, or a command attached to it.
VoxRouter and VoxQuoter deployed to chain 4663 at block 50,072,426 and verified on Blockscout. Protocol fee set to zero.
Settled at zero deviation from the quote, with nothing left on the router afterwards.
Half the live pools stopped depending on an indexer’s cross-rate. The widest spread on SPY fell from 4.74% to 1.25%.
Up and Alandale were being read as constant-product because they arrive with no version tag. Alandale is Algebra, and its getReserves is not a price.