The procedureArbitrum One · chain id 42161 · arbiscan.io

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://arb1.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://arb1.arbitrum.io/rpc \
  SEED_NFT_V3_CONTRACT_ADDRESS=0x6D9d3A7F9a27236aAea0dAe0FfaFd5c7681CF1Ad \
  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 ID42161Arbitrum One
RPChttps://arb1.arbitrum.io/rpc
TAMAD (TamadID)0xF932Cad9B41D6f80242CFF40C641f02DBEEA6a20
TamadAuctionNot configured
Seed NFT (v1)0x6D9d3A7F9a27236aAea0dAe0FfaFd5c7681CF1Ad
Seed NFT v2 enabledNo
Seed NFT v2 contractNot configured
Seed NFT v3 enabledYes
Seed NFT v3 contract0x6D9d3A7F9a27236aAea0dAe0FfaFd5c7681CF1Ad
Active Seed NFT (mint target)v3 — 0x6D9d3A7F9a27236aAea0dAe0FfaFd5c7681CF1Ad
V3 deploy block (default)245199950

Explorer: 0xF932…6a20 (TAMAD)

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