Live
NVDASPREADreadingSPYSPREADreadingAAPLSPREADreadingTSLASPREADreadingMSTRSPREADreadingGOOGLSPREADreadingMUSPREADreadingAMZNSPREADreadingMETASPREADreadingQQQSPREADreadingCOINSPREADreadingPLTRSPREADreadingAMDSPREADreadingNFLXSPREADreadingTSMSPREADreadingNVDASPREADreadingSPYSPREADreadingAAPLSPREADreadingTSLASPREADreadingMSTRSPREADreadingGOOGLSPREADreadingMUSPREADreadingAMZNSPREADreadingMETASPREADreadingQQQSPREADreadingCOINSPREADreadingPLTRSPREADreadingAMDSPREADreadingNFLXSPREADreadingTSMSPREADreadingNVDASPREADreadingSPYSPREADreadingAAPLSPREADreadingTSLASPREADreadingMSTRSPREADreadingGOOGLSPREADreadingMUSPREADreadingAMZNSPREADreadingMETASPREADreadingQQQSPREADreadingCOINSPREADreadingPLTRSPREADreading
Voxelithic
How it works

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.

Venues

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.

VenueAMMPrice fromRoutableNote
Uniswap v3v3slot0()yesDeepest USDG books on the chain.
Uniswap v4v4extsload on the singletonquote onlyHalf of all live pools. Execution lands in phase B.
Ramsesv3slot0()yesRenamed callback, dispatched without an adapter.
Gigav3slot0()yesBounded liquidity — stops absorbing around $124k.
Upv3slot0()yesProxy pools, equity-paired only.
AlandaleAlgebraglobalState()yesDynamic fee. getReserves is not a price here.

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:

node verify/probe_venues.mjs

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.

Verify

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.

The whole suite
bash verify/all.sh

Encoder against cast, keccak against cast, the canonical registry, venue executability, partial-fill rejection, and a dry-run of a real trade.

The book
node verify/canon.mjs

Resolves each ticker to the contract carrying the real market, drops pools claiming billions against no volume, and prints the venue table.

Depth limits
node verify/partial_fill.mjs

Finds where a pool stops absorbing, then shows the router rejecting an order past that point rather than filling it halfway.

The encoder
node verify/encode_check.mjs

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.

About

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.

Changelog

What Actually Shipped

Deploys and measurements, newest first. Anything listed here has an address, a transaction, or a command attached to it.

Router and quoter live
Deployed and verified

VoxRouter and VoxQuoter deployed to chain 4663 at block 50,072,426 and verified on Blockscout. Protocol fee set to zero.

First fill
5 USDG into NVDA

Settled at zero deviation from the quote, with nothing left on the router afterwards.

v4 priced on-chain
extsload on the singleton

Half the live pools stopped depending on an indexer’s cross-rate. The widest spread on SPY fell from 4.74% to 1.25%.

Venue classification fixed
Ask the pool, not the label

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.