# METHOD — ERC-8004 Arbitrum One cohort census (public RPC) — 2026-10-07

## Objective

Measure the Arbitrum One ERC-8004 cohort — raw registry mints, owner concentration, on-chain reputation feedback, and a sampled view of agent-metadata liveness — using only free public-RPC calls, zero Alchemy credits, and zero on-chain transactions. The output is a public, reproducible snapshot that any reader can re-derive at a comparable cost.

## Measurement window

- **Chain:** Arbitrum One (CAIP-2 `eip155:42161`)
- **Chain id:** 42161
- **RPC primary:** `https://arb1.arbitrum.io/rpc`
- **RPC fallback:** `https://arbitrum.gateway.tenderly.co`
- **Node class:** full (not archive) — `eth_getCode` is state-pruned on `arb1.arbitrum.io/rpc`, so the deploy block was seeded from the 2026-09-17 four-chain census. `eth_getLogs` is index-based, not state-based, and works globally; §Scan-coverage below confirms 100% coverage of the deploy-to-head window.
- **Deploy block:** 428,895,443 (same block for both registries; verified against the 2026-09-17 four-chain census)
- **Head block at run:** 512,646,051
- **Scan range:** 83,750,609 blocks
- **Generated UTC:** 2026-10-07T18:29:18Z
- **RPC calls total:** 228 (errors=0, backoffs=0)

## Registry contracts

- **IdentityRegistry:** `0x8004A169FB4a3325136EB29fA0ceB6D2e539a432`
- **ReputationRegistry:** `0x8004BAa17C55a88189AE136b182e5fdA19dE9b63`

Both are the deterministic ERC-8004 addresses deployed to every EVM chain. Bytecode length at head: 260 hex chars each.

## Scan coverage

`eth_getLogs` was issued in 10,000,000-block windows (nine windows total) from the deploy block to head:

```
[428895443 .. 438895442]
[438895443 .. 448895442]
[448895443 .. 458895442]
[458895443 .. 468895442]
[468895443 .. 478895442]
[478895443 .. 488895442]
[488895443 .. 498895442]
[498895443 .. 508895442]
[508895443 .. 512646051]  (tail)
```

Coverage complete: **true**. 1,604 Transfer(from=0x0) logs pulled from IdentityRegistry; 973 NewFeedback logs pulled from ReputationRegistry.

## Owner distribution

Each `Transfer(from=0x0, to=OWNER, tokenId=AGENT_ID)` was decoded; the owner is the 20-byte right-slice of the Transfer `to` topic. Distinct owners and per-owner counts were computed by in-memory count. The resulting owner-share-of-mints is reported as `top1_share_pct` and `top10_share_pct`. This is **not** a share of currently-held agents — if any owner transferred an agent-id post-mint, this cut would overstate their current holdings. The read-across to live agent operators is a lower bound.

## tokenURI sample + liveness probe

A 200-of-1,604 sample (12.47% of the cohort) was drawn evenly spaced by agent-id (`sample_strategy = evenly_spaced_by_agent_id`, `sample_cap = 200`). For each sampled agent:

1. `tokenURI(agent_id)` was called on the IdentityRegistry.
2. `data:` URIs were parsed inline. `ipfs://` URIs were resolved via the standard public IPFS gateway. `http(s)://` metadata hosts were fetched directly with a 5-second GET timeout.
3. Returned JSON was parsed for the standard ERC-8004 shape: `services[]`, `capabilities[]`, `x402Support`, `payment`.
4. The **first** HTTP(S) `services[].endpoint` field (if any) was probed with a single GET and a 5-second timeout. Response status was recorded.

The 0/200 HTTP-live rate measures **HTTP reachability on the first endpoint of a sampled agent**. It is NOT an agent-liveness measurement — many Arbitrum agents publish `.eth`, `.arb`, `.agent`, or ENS-reverse names in their endpoint field rather than HTTP(S) URLs, and the probe does not resolve those name-service references. The stronger live signal on Arbitrum is on-chain reputation feedback: 108 distinct agents received at least one NewFeedback event (full-cohort full-history — not an extrapolation).

Sample results are published verbatim in `summary.json` under `tokenuri_sample.*`. The extrapolated-to-cohort figures (`http_live_extrapolated_to_cohort = 0`, `metadata_ok_extrapolated_to_cohort = 353`) are simple pro-rations of the sample rate and should be read as **point estimates with sample noise**; no confidence interval is published here.

## Reproducibility

Every number on the companion dataset page and the companion blog post derives from the fields published here or in `summary.json`. The input envelope (the machine-readable record of this measurement) has SHA-256 `2ce26378ad36a7ded274f9f60ccd6b360b0239e574f5bceac39961260ba1554b`.

The measurement is read-only (eth_getCode / eth_getLogs / eth_call / eth_chainId only). No signing key is needed and no on-chain state is modified. You can repeat it against the public RPC listed above.

## Comparison with the 2026-09-17 census

The prior census ran against Alchemy's Arbitrum One archive RPC and recorded **1,502** registrations and **142** distinct senders at head block 505,982,474 (2026-09-17T04:31:28Z). This measurement, 20 days later and against a public (non-archive) RPC, records **1,604** registrations and **1,000** distinct owners. Deploy block matches. The registration cohort grew by **102** (+6.79%) over the ~20-day window.

The two address counts (142 distinct senders earlier, 1,000 distinct owners now) are not comparable: the earlier one counted the addresses that sent registration transactions, this one counts the addresses that own the minted agent IDs. The change in registrations (1,502 to 1,604) is the like-for-like comparison.

## What this dataset does NOT publish

- **Agent liveness rate for the Arbitrum cohort.** The HTTP-probe cut is a sample on the first endpoint only and is dominated by ENS/.agent-named endpoints that the probe cannot resolve. A proper liveness rate would require full endpoint enumeration and name-service resolution; those are not in scope here.
- **A chain-vs-chain comparative live rate.** Arbitrum is not in the paid API's covered chain set, and the Base / Arbitrum denominators are different cohorts. No ratio is claimed.
- **Trust scores for Arbitrum agents.** The paid `/v1/intel/*` API indexes Base and Ethereum. Arbitrum is MEASURED here, not INDEXED.

## License

CC BY 4.0 — free to reuse, remix, and redistribute, including commercially, with attribution.
