◈ Pre-launch The bench reads Arbitrum One live. Nothing here is an offer or financial advice.
Arbitrum One · 42161

A fill is a claim until you strike it

When you swap a token, the number on screen is a report — written by the same system that executed the trade. Assay throws the report away and rebuilds the fill from chain state: what left your wallet, what arrived, what the venue kept, what the network charged.

Live

What the bench is striking, right now.

Recent strikessample

Every line is one assay somebody just ran: their Telegram name, the ticker, what actually arrived against what the interface promised, and the grade that came out. Nothing else — no wallet address, no transaction hash, no note. Anyone can leave the feed from their own dashboard, and leaving takes their past entries with them.

In four pictures

What this actually does.

You swap a token. The interface tells you what you got. Assay does not take its word for it — it rebuilds the number from the chain and tells you how much of the promise really landed.

PROMISED 98.5 ARRIVED 96.4 the gap is the whole point
01

The screen is a claim

The number you are shown is written by the same system that executed your trade. It is a report, not a receipt.

TRANSFER LOGS USDC −10000 ARB +50.0 ARB +46.4 NETTED 96.412031
02

The chain is the record

Assay reads the transfers the token contracts themselves emitted and nets them against your wallet. No interface sits in between.

PARTS PER THOUSAND 999+ Fine 925 Sterling 750 Below sterling <750 Refused
03

The answer is a grade

Assayers have graded metal in parts per thousand since 1300. Nine hundred and seventy-eight of your promised thousand arrived: Sterling.

AGENT the link re-runs the assay
04

And it comes to you

Register a wallet and every settled transaction gets assayed and explained on Telegram — each notice carrying a link that re-runs the whole thing in front of you.

What it gives you

One hash in. A number nobody can edit out.

Paste a settled transaction. Assay reads the ERC-20 transfers the token contracts themselves emitted, nets them against your wallet, and — if you say what you were promised — strikes the fineness: parts per thousand that actually arrived.

Touchstone specimen · not a live transaction
  chain     arbitrum · 42161
  block     496,204,454
  status    settled
  router    0x68b3…fc45  exactInputSingle

  Rebuilt from the token contracts

  ARB                +96.412031   0x7c1f…
  USDC             −10,000.00     0x2a90…
  gas paid  0.0000031 ETH   (network, not the venue)

  promised  98.5 ARB
  arrived   96.412031 ARB

  fineness  978 / 1000  (Sterling, rounded down)

  ──────────────────────────────────
  Deterministic. Re-run it and check.

A specimen of the bench output. Struck assays also produce a hallmark — assayer, fineness, office, block — and a permalink that re-runs the whole thing from the chain in front of whoever you send it to.

Method

Four steps. No interpretation.

Anyone re-running them against the same transaction lands on the same number — which is what makes it checkable rather than trusted.

i

Confirm settlement. Fetch the transaction and its receipt. An unconfirmed transaction is a rumour, not a fill.

ii

Read the transfers. Every ERC-20 transfer the token contracts emitted — ignoring whatever the venue said about its own work.

iii

Net against the wallet. Incoming minus outgoing, per token. That sum is what moved, and no interface gets a vote in it.

iv

Strike the fineness. Divide what arrived by what was promised, in parts per thousand. Assay offices round down, so Assay does too.

The scale is the real one. Sterling silver is 925 fine — 925 parts silver per thousand. Below 750, an assay office breaks the piece rather than mark it, and Assay refuses the stamp.

Limits

What it verifies, and what it doesn't.

Every tool like this has a boundary. Stating ours is part of the method, not a disclaimer bolted on afterwards.

What it catches

A venue claiming one output while the token moved another. The venue contract and the token contract are different contracts, so the venue cannot forge the token's own transfer record.

This is the common and important case, and it is the one Assay was built for.

What it does not catch

Step ii trusts each token contract to report its own transfers — weaker than diffing raw balances at block N−1 and N. A malicious token would defeat it.

True balance-diffing needs an archive node, which the public RPC does not serve. It is on the roadmap, not in the build.

Assay also reads the floor you signed from recognised routers — a real, cryptographically committed promise, but weaker than the quote the interface displayed. The two are never confused, and the floor never feeds fineness.

Assay Agent

An agent that keeps assaying after you close the tab.

An assay office does not test one coin and call the mint honest — it tests on a cadence, and has done since 1282. The Assay Agent is that idea pointed at fills: name a wallet once, and every settled transaction that moves a token gets assayed and explained in plain English on Telegram.

The agent
Polls the chain, reconstructs each new fill by the same four steps.
Code ships
Telegram bot
Link a chat with a one-time code, then add the wallets you want watched.
Code ships
Plain-English notice
What moved, what it cost, what the fineness was — with a permalink that re-runs the assay.
Code ships
Hosted agent
Nobody is running one for you yet. Clone the repo and run your own.
Not running

This one costs you privacy, and you should know before you use it. The bench runs entirely in your browser and Assay sees nothing. A watcher cannot: a server has to hold the link between your Telegram account and the addresses you asked it to watch. That is a real trade, stated plainly, and it is why the watcher is a separate opt-in rather than part of the bench.

Claimed actual

Open the bench