Check the x402 offer a seller published on its ENS name
A seller writes its price and payee as an x402-offer text record. An attester signs that exact line. Before an agent pays, vet402 reads the record and the signature at one pinned Sepolia block from two RPC providers and runs the seven steps of the ENSIP-29 draft. The name is yours to choose: type any ENSv2 Sepolia name.
Names registered on the ENSv2 Sepolia deployment of 2026-09-15. The request is fixed to this demo's seller route.
1.The seven steps, on the chain as it is now
Request compared against the offer: GET https://vet402.com/api/tokyo/seller. Trusted attester: atst.vet402.eth (0xDeb7C52356bCc227c1688cb39C9b66AF00A50b27). Freshness window: 7 days.
seller-a.eth at Sepolia block 0, read at 16:10:04 UTC. Draft format: ensip29-draft.
REFUSE ens_evidence_unavailable — 0/7 steps ok · 694 ms
| # | step | result | detail |
|---|---|---|---|
| 1 | envelope | FAIL | reason=ens_evidence_unavailableerror=ens_evidence_unavailable: ROOT_REGISTRY differs at block 11843187: UR 0xB458D6a3a77919449d03e7A6903C26827c1eC43f vs UniversalHelper 0x9703DBD26dAB89504490994138cF2c575251a9cE |
| 2 | manager | skip | |
| 3 | record value | skip | |
| 4 | payload | skip | |
| 5 | recover signer | skip | |
| 6 | attester name | skip | |
| 7 | compare | skip |
2.Change one character yourself
The button below writes seller-d.eth's x402-offer on Sepolia and flips its amount from 10000 to 10001. The attestation was signed over the old line, so the check above refuses it on the next read. Put it back and it passes again. seller-a.eth and the CLI example are not touched by this button.
Reading seller-d.eth from Sepolia…
3.The key behind the button
The judge button signs with a delegated Sepolia key held on the server. On chain, that key holds one role on seller-d.eth's own resolver: writing x402-offer. The button can set two fixed values, 10000 and 10001.
- Key (W_op):
0xE3BB99911A8037F22D4d6b3a4d955D1b02229080 - Resolver (P_d):
0x9CF7990dAB364d1738ABB09532b953Ec48269831 roles(keccak256("x402-offer"), W_op)on P_d: 0x10 (0x10 = setText)- The same key writing the attestation key (
eth_call, not sent): EACUnauthorizedAccountRoles
4.Run it from a terminal
The same check, from a clean clone. It reads Sepolia and signs nothing.
git clone --depth 1 --branch tokyo-2026-submission https://github.com/kzmttkc/vet402 && cd vet402/examples/tokyo-2026-demo && npm ci && npm run verify -- seller-a.eth