Skip to main content
The two member pools are live on Unichain Sepolia and anyone can trade against them. Nothing is pre-funded and nothing is whitelisted: a wallet that has never touched this deployment can claim currency and swap in the same sitting.
1

Connect

Open the quote inspector and connect a wallet on Unichain Sepolia (chain 1301). Gas is paid in Unichain Sepolia ETH, which public faucets supply. The quotes on the page are readable without a wallet; only the write steps need one.
2

Claim test currency

KnotFaucet pays 100 kETH and 100 kUSD per address behind an eight-hour cooldown. It never mints, so it can only ever hand out what it was funded with, and it reverts loudly rather than paying zero once drained.
3

Approve twice

Uniswap’s Universal Router spends through Permit2, so two one-time approvals are needed: the ERC-20 approves Permit2, then Permit2 approves the router. Both persist, so a returning wallet swaps in a single transaction.
4

Swap

The swap is submitted through the Universal Router as a single-hop V4_SWAP. The enforced quote shown on the page is passed as the limit, so the trade settles at the rule’s price or it reverts. It never silently fills at something else.

What to watch

Pick the shallow member to see the boundary bind. Its own curve is generous relative to the pair, so the aggregate quote is the worse of the two and the difference stays with that pool. Pick the deep member to see the boundary stay inert. Its curve is already the more conservative of the two, so the rule selects the local quote and changes nothing. A rule that clipped both would be a fee, not a boundary.
The panel labels every figure as live or reference. Live values are read from preview() on the deployed federation, the same call a swap executes against. Reference values appear only when the public RPC is unreachable, and a swap is refused while a quote is not live.

Addresses used by the write path

Notes for anyone rebuilding the calldata

The deployed router decodes the five-field single-hop tuple from the pinned v4-periphery release: poolKey, zeroForOne, the specified amount, the limit, and hookData. Newer IV4Router source adds minHopPriceX36; encoding that six-field shape against this router makes its decoder reject the command. The builders in apps/web/lib/swap.ts mirror script/verify/UniversalRouterLifecycle.s.sol for exactly that reason, and their tests assert the pool key they build hashes to the pool IDs recorded in the release manifest. Gas is estimated on the app’s own transport rather than the wallet’s. A wallet that returns an incomplete block makes viem fail while preparing the transaction, which surfaces as a revert that never happened.
Unaudited hackathon software on a test network. kETH and kUSD are demo currencies with no value.