The procedureArbitrum Sepolia · chain id 421614 · from configuration

The chain events and the content hashes are the record. This application's database is a cache of them.

What a passing check proves, and what it does not, is stated beside the check.

What a pass proves

That this exact body, byte for byte, is what was hashed and committed for a named Version — and that the token and its metadata are retrievable without this app.

What it does not prove

Who wrote the words, that a person rather than a model composed them, or that the wallet which minted is the wallet which wrote. Those are commitments recorded with the Seed, not this check.

The four factsverify-seed runs exactly these · exit 0 only if all four hold
  1. 01A SeedVersionMinted event exists on chain for that Version.
  2. 02The token exists — ownerOf resolves to an address.
  3. 03The metadata CID is retrievable and returns valid JSON — for as long as that CID stays available.
  4. 04The stored body's keccak256 equals the hash committed on chain.

Anchoring is per Version. A token id is the Seed id and the Version number together, so the four facts answer for one dated wording — never for a Seed as a whole.

Check a body in this browserhashed locally · Version index read from this app
nothing leaves this browser but the id

This tool reads the Version index from this application, so it can disagree with the command-line check below. Only verify-seed runs without a database.

Check a mint without this apprun from the repository, apps/web as cwd

By transaction hash — recommended

RPC_URL=https://sepolia-rollup.arbitrum.io/rpc \
  pnpm run verify:seed -- --tx <tx_hash>

The contract comes from the receipt. No contract environment variable is needed, so this is the simpler path.

By Seed id — scans events, contract must be named

RPC_URL=https://sepolia-rollup.arbitrum.io/rpc \
  SEED_NFT_V3_CONTRACT_ADDRESS=0x40EbA574DfbfBAfd0F4d8fa9F7f5B645db58A183 \
  SEED_NFT_V2_CONTRACT_ADDRESS=<only for v1/v2-era Seeds> \
  pnpm run verify:seed -- --expect-event <seed_id>

A scan only finds Versions minted by the contract you name. The table's active mint target belongs here; the older variable is a legacy path for Seeds anchored before it.

Exit contract
0 — all four facts hold. 1 — one did not, with the reason on stderr: HASH_MISMATCH, CID_FETCH_FAIL.
What is deployed, read from configurationrendered at runtime · never fixed into a design
Chain ID421614test network
RPChttps://sepolia-rollup.arbitrum.io/rpc
TAMAD (TamadID)0x63319a9261A1039a1AFbde182D5d0706DE992519
TamadAuction0x6a32474a128A83F710905B08CFD879Aab6c945f8
Seed NFT (v1)0xA4335Ae57901582260e9868d155ECe44dC724374
Seed NFT v2 enabledNo
Seed NFT v2 contractNot configured
Seed NFT v3 enabledYes
Seed NFT v3 contract0x40EbA574DfbfBAfd0F4d8fa9F7f5B645db58A183
Active Seed NFT (mint target)v3 — 0x40EbA574DfbfBAfd0F4d8fa9F7f5B645db58A183
V3 deploy block (default)245199950

Explorer: 0x6331…2519 (TAMAD) · 0x6a32…45f8 (Auction)

Addresses come from this deployment's configuration. The mint target is selected by that configuration — the newest enabled contract wins.

docs/POLITICAL_CONTRACT.mddocs/DEPLOY_NOTE_V3.md
Where to go next

Read the record

/explore · includes unanchored Seeds

The Seeds these checks are about, as they were published.

Open Explore