ERC-8004 Identity Registry
As of 2026-10-16, ERC-8004 agent ids registered on 0G: 3,919,209; on BNB Chain: 375,182; on Base: 154,989 and 23 more chains, never summed.data: weekly readings, JSON · CSV · MCP onchain_agent_get_trend(venue="erc8004", stage="registered", grain="daily") · current count per chain, table
- Week2026-W42
- Updated2026-10-16
Each chain is its own registry, so there is no total. Past registration, from a sample of recent registrants rather than the whole registry: 89.3% of the owner wallets in the Base sample (25 of 28) sent a transaction beyond their registration in the last 7 days, read 2026-10-12.
New ids since the previous read: 0G +10,428 on 2026-10-15; BNB Chain +878 on 2026-10-15; Base +23,106 on 2026-10-15. Counted per chain, never summed.
How measured · The ERC-8004 Identity Registry's own agent-id counter (`_lastId`, one storage read at the chain head) on that chain, covering the whole registry with no sampling. The latest daily reading.
- One unit is
- one registered agent id
- Entry costs
- free / permissionless (gas only)
Overlaps with olas
These populations intersect: the same real agent can appear in both. Deduplicate before any combined figure, and never add the two together.
Latest complete day
What the agents did on
New ERC-8004 agent identities
- Base+23,106
- 0G+10,428
- BNB Chain+878
- Robinhood Chain+22
Registrations on 2026-10-15, per chain — top 4 of 26 chains read. Chains are never added together.
Registration bursts
- Base+23,106vs a median of 971 (threshold 4,855)
A burst is a day far above the chain's own recent run of registrations — often one operator minting in bulk. It says how, not who.
Declared MCP endpoints that answer
- All chainsnot enough readingsn=0–6
Of the MCP endpoints sampled ERC-8004 registrations declare, the share that completed a handshake. A handshake proves a server is up, nothing more.
A day counts once it is over in UTC and the daily collector has finished it; today's partial readings never appear here. Each figure is one chain or one operator — none is a total.
Registered agent identities, chain by chain
UpdatedEvery chain we read, largest first, each with its own date. Never added together.
▸▾ What sampled owners did
Sample covers 24.95 days of the window.
▸▾ What sampled owners did· not enough readings this window (n=0)
Raw counts, not findings: funded unknown · active beyond registering unknown · in ongoing use unknown. Rates on fewer than 20 wallets are stored and never presented as a finding.
Sample covers 27.5 days of the window.
+ 6,792 on a second registry (0x8004A818…) · as of 2026-10-16 — counted separately, not added above
▸▾ What sampled owners did· not enough readings this window (n=0)
Raw counts, not findings: funded unknown · active beyond registering unknown · in ongoing use unknown. Rates on fewer than 20 wallets are stored and never presented as a finding.
Sample covers 27.5 days of the window.
▸▾ What sampled owners did· not enough readings this window (n=0)
Raw counts, not findings: funded unknown · active beyond registering unknown · in ongoing use unknown. Rates on fewer than 20 wallets are stored and never presented as a finding.
Sample covers 12.55 days of the window.
▸▾ What sampled owners did· not enough readings this window (n=1)
Raw counts, not findings: funded 1 of 1 · active beyond registering 0 of 1 · in ongoing use 0 of 1. Rates on fewer than 20 wallets are stored and never presented as a finding.
Sample covers 29.96 days of the window.
▸▾ What sampled owners did· not enough readings this window (n=1)
Raw counts, not findings: funded 1 of 1 · active beyond registering 1 of 1 · in ongoing use 1 of 1. Rates on fewer than 20 wallets are stored and never presented as a finding.
Sample covers 29.39 days of the window.
▸▾ What sampled owners did· not enough readings this window (n=3)
Raw counts, not findings: funded 3 of 3 · active beyond registering 1 of 3 · in ongoing use 1 of 3. Rates on fewer than 20 wallets are stored and never presented as a finding.
Sample covers 27.51 days of the window.
▸▾ What sampled owners did· not enough readings this window (n=0)
Raw counts, not findings: funded unknown · active beyond registering unknown · in ongoing use unknown. Rates on fewer than 20 wallets are stored and never presented as a finding.
Sample covers 27.5 days of the window.
▸▾ What sampled owners did· not enough readings this window (n=1)
Raw counts, not findings: funded 1 of 1 · active beyond registering 1 of 1 · in ongoing use 1 of 1. Rates on fewer than 20 wallets are stored and never presented as a finding.
Sample covers 28.38 days of the window.
▸▾ What sampled owners did· not enough readings this window (n=0)
Raw counts, not findings: funded unknown · active beyond registering unknown · in ongoing use unknown. Rates on fewer than 20 wallets are stored and never presented as a finding.
Sample covers 27.92 days of the window.
Per-agent checks on Celo — what each agent declares and whether it answered: ERC-8004 agents on Celo →
Trend — registered, week over week
Gaps in a line are weeks the value was unknown. Chains are never combined.
What we measured
Arbitrum
Weekly series, as of 2026-10-12 — not the current total. The daily census read 1,632 on 2026-10-16.
▸▾ Not enough readings this window (n=1–3) — 7 readings, not findings
▸▾ How these were measured
- the rate sample looked at 52.0% of the window's blocks, spread evenly across it — it estimates RATES and is not a census (use registered_new_in_window for counts); 12 segment(s) were only partially scanned before the request budget ran out
- Up to 40 endpoints probed per chain, in sample order. Sample 1 < 20: stored, not a finding.
- Declared only; A2A cards are not probed here. Sample 2 < 20: stored, not a finding.
- Declared is not answering — see mcp_endpoint_answers. Sample 2 < 20: stored, not a finding.
- 0 of 52 sampled registrations declare no agentURI at all and are excluded from this denominator (they are counted on registered_by_platform as "(no agentURI declared)").
- Both legs are samples: an owner whose 4337 account was deployed outside our sampled windows does not match. A floor, not the overlap.
- Passports are few and self-registered; a zero here is a small-B fact, not evidence about the registry.
- A payTo match means the same key sells over x402 somewhere, not that it sells on Arbitrum. Solana payTo addresses cannot match an EVM owner and are excluded from B.
- an endpoint that stops answering may be down, moved, or blocking us — unknown is not dead; 1 endpoints were eligible, 1 re-probed. Sample 1 < 20: stored, not a finding.
- UNKNOWN: the public node pruned this chain's history back to less than a day (?d), so no window growth can be measured keylessly. The raw delta over that sub-day window was null.
Avalanche
Weekly series, as of 2026-10-12 — not the current total. The daily census read 1,845 on 2026-10-16.
▸▾ Not enough readings this window (n=0–1) — 8 readings, not findings
▸▾ How these were measured
- the rate sample looked at 4.0% of the window's blocks, spread evenly across it — it estimates RATES and is not a census (use registered_new_in_window for counts); 12 segment(s) were only partially scanned before the request budget ran out
- 0 of 1 sampled registrations declare no agentURI at all and are excluded from this denominator (they are counted on registered_by_platform as "(no agentURI declared)"). Sample 1 < 20: stored, not a finding.
- Declared is not answering — see mcp_endpoint_answers. Sample 0 < 20: stored, not a finding.
- Declared only; A2A cards are not probed here. Sample 0 < 20: stored, not a finding.
- Up to 40 endpoints probed per chain, in sample order. Sample 0 < 20: stored, not a finding.
Base
Weekly series, as of 2026-10-12 — not the current total. The daily census read 154,989 on 2026-10-16.
▸▾ Not enough readings this window (n=0–5) — 11 readings, not findings
▸▾ How these were measured
- 0 of 5 sampled agents could not be read and are excluded. Sample 5 < 20: stored, not a finding.
- the rate sample looked at 0.7% of the window's blocks, spread evenly across it — it estimates RATES and is not a census (use registered_new_in_window for counts); 11 segment(s) were only partially scanned before the request budget ran out; 1 segment(s) hit the per-segment cap, so segment counts are floors — the RATES remain valid, the counts are not a census
- The population this lane's sample is drawn from. It is a count of ids minted, not of agents that exist, answer or work — and it is never added to another chain's count.
- Of 137 sampled owner wallets: 31 EOA, 106 contract (excluded — a contract's nonce counts deployments), 0 of unknown kind, and 3 EOA owners whose historical nonce the public node would not serve (pruned state — unknown, not inactive). Registrations from site_metrics.erc8004_agents_base (scripts/erc8004-enumerate.mjs).
- An upper bound on agent activity and a lower bound at the same time, and neither cancels the other: a nonce delta counts every transaction the OWNER KEY sent, including a human moving funds or registering a second agent, and it counts nothing an agent did through a smart account, relayer, paymaster or session key. It is a share of a SAMPLE of owner wallets, never of the registry's population. Contract owners are excluded because a contract's nonce counts deployments, not sends. THE SAMPLE IS DRAWN FROM RECENT REGISTRATIONS — the roster we can enumerate keylessly is a trailing window of `Registered` logs, not the whole registry — so it describes wallets that showed up lately and cannot be read as the registry as a whole. A wallet that registered inside the window sent a transaction to do it, so `active_7d` credits the registration itself; `active_beyond_one_tx` is the same count with that one transaction taken off.
- 0 of 5 sampled registrations declare no agentURI at all and are excluded from this denominator (they are counted on registered_by_platform as "(no agentURI declared)"). Sample 5 < 20: stored, not a finding.
- Declared is not answering — see mcp_endpoint_answers. Sample 5 < 20: stored, not a finding.
- Declared only; A2A cards are not probed here. Sample 5 < 20: stored, not a finding.
- Up to 40 endpoints probed per chain, in sample order. Sample 0 < 20: stored, not a finding.
- Concentration of the SAMPLE's feedback, not of the registry. 0 distinct client wallets left 0 entries across 0 agents. Sample 0 < 20: stored, not a finding.
- A floor from the sample, not a registry census. Sample 5 < 20: stored, not a finding.
- an endpoint that stops answering may be down, moved, or blocking us — unknown is not dead; 5 endpoints were eligible, 5 re-probed. Sample 5 < 20: stored, not a finding.
- A payTo match means the same key sells over x402 somewhere, not that it sells on Base. Solana payTo addresses cannot match an EVM owner and are excluded from B.
- Passports are few and self-registered; a zero here is a small-B fact, not evidence about the registry.
- Both legs are samples: an owner whose 4337 account was deployed outside our sampled windows does not match. A floor, not the overlap.
BNB Chain
Weekly series, as of 2026-10-12 — not the current total. The daily census read 375,182 on 2026-10-16.
▸▾ Not enough readings this window (n=3) — 1 reading, not findings
▸▾ How these were measured
- Declared only; A2A cards are not probed here.
- the rate sample looked at 0.6% of the window's blocks, spread evenly across it — it estimates RATES and is not a census (use registered_new_in_window for counts); only 11 of 12 time segments were readable from a keyless node (public nodes prune history), so the sample covers 24.95 days, not 30; 11 segment(s) were only partially scanned before the request budget ran out
- Declared is not answering — see mcp_endpoint_answers.
- Up to 40 endpoints probed per chain, in sample order. Sample 3 < 20: stored, not a finding.
- 0 of 43 sampled registrations declare no agentURI at all and are excluded from this denominator (they are counted on registered_by_platform as "(no agentURI declared)").
Celo
▸▾ Not enough readings this window (n=19) — 1 reading, not findings
▸▾ How these were measured
- an endpoint that stops answering may be down, moved, or blocking us — unknown is not dead; 19 endpoints were eligible, 19 re-probed. Sample 19 < 20: stored, not a finding.
Ethereum
Weekly series, as of 2026-10-12 — not the current total. The daily census read 54,162 on 2026-10-16.
▸▾ Not enough readings this window (n=0–12) — 10 readings, not findings
▸▾ How these were measured
- the rate sample looked at 0.2% of the window's blocks, spread evenly across it — it estimates RATES and is not a census (use registered_new_in_window for counts); 12 segment(s) were only partially scanned before the request budget ran out
- UNKNOWN (audit 2026-10-13): this stratified sample was drawn through a public node that returned no logs older than ~1.4 days without an error, so it came from the newest ~1.4 days, not the 30-day window it names. Unknown, not zero. The original reading is kept in extra.audit_2026_10_13.
Gnosis
Weekly series, as of 2026-10-12 — not the current total. The daily census read 4,162 on 2026-10-16.
▸▾ Not enough readings this window (n=0–5) — 9 readings, not findings
▸▾ How these were measured
- A payTo match means the same key sells over x402 somewhere, not that it sells on Gnosis. Solana payTo addresses cannot match an EVM owner and are excluded from B. Sample 3 < 20: stored, not a finding.
- Passports are few and self-registered; a zero here is a small-B fact, not evidence about the registry. Sample 3 < 20: stored, not a finding.
- Both legs are samples: an owner whose 4337 account was deployed outside our sampled windows does not match. A floor, not the overlap. Sample 3 < 20: stored, not a finding.
- 0 of 28 sampled registrations declare no agentURI at all and are excluded from this denominator (they are counted on registered_by_platform as "(no agentURI declared)").
- Declared is not answering — see mcp_endpoint_answers.
- Declared only; A2A cards are not probed here.
- Up to 40 endpoints probed per chain, in sample order. Sample 5 < 20: stored, not a finding.
- 0 of 28 sampled agents could not be read and are excluded.
- Concentration of the SAMPLE's feedback, not of the registry. 0 distinct client wallets left 0 entries across 0 agents. Sample 0 < 20: stored, not a finding.
- A floor from the sample, not a registry census.
- UNKNOWN: no endpoint on this venue and chain has an answer recorded ≥ 7 days ago yet (the endpoint store began 2026-09-08). Unknown, not zero.
Optimism
Weekly series, as of 2026-10-12 — not the current total. The daily census read 565 on 2026-10-16.
▸▾ Not enough readings this window (n=1–3) — 8 readings, not findings
▸▾ How these were measured
- the rate sample looked at 35.2% of the window's blocks, spread evenly across it — it estimates RATES and is not a census (use registered_new_in_window for counts); 12 segment(s) were only partially scanned before the request budget ran out
- 0 of 3 sampled registrations declare no agentURI at all and are excluded from this denominator (they are counted on registered_by_platform as "(no agentURI declared)"). Sample 3 < 20: stored, not a finding.
- Declared is not answering — see mcp_endpoint_answers. Sample 1 < 20: stored, not a finding.
- Declared only; A2A cards are not probed here. Sample 1 < 20: stored, not a finding.
- Up to 40 endpoints probed per chain, in sample order. Sample 1 < 20: stored, not a finding.
Polygon
Weekly series, as of 2026-10-12 — not the current total. The daily census read 688 on 2026-10-16.
▸▾ Not enough readings this window (n=0) — 4 readings, not findings
▸▾ How these were measured
- the rate sample looked at 0.0% of the window's blocks, spread evenly across it — it estimates RATES and is not a census (use registered_new_in_window for counts); 12 segment(s) were only partially scanned before the request budget ran out
Robinhood Chain
Weekly series, as of 2026-10-12 — not the current total. The daily census read 8,826 on 2026-10-16.
▸▾ Not enough readings this window (n=0–3) — 8 readings, not findings
▸▾ How these were measured
- the rate sample looked at 1.0% of the window's blocks, spread evenly across it — it estimates RATES and is not a census (use registered_new_in_window for counts); only 6 of 12 time segments were readable from a keyless node (public nodes prune history), so the sample covers 12.55 days, not 30; 6 segment(s) were only partially scanned before the request budget ran out
- Up to 40 endpoints probed per chain, in sample order. Sample 0 < 20: stored, not a finding.
- Declared only; A2A cards are not probed here. Sample 2 < 20: stored, not a finding.
- Declared is not answering — see mcp_endpoint_answers. Sample 2 < 20: stored, not a finding.
- 0 of 2 sampled registrations declare no agentURI at all and are excluded from this denominator (they are counted on registered_by_platform as "(no agentURI declared)"). Sample 2 < 20: stored, not a finding.
- UNKNOWN: no sampled owner's window could be read on Robinhood Chain this run. Unknown, never zero.
- Of 1 sampled owner wallets: 0 EOA, 0 contract (excluded — a contract's nonce counts deployments), 1 of unknown kind, and 0 EOA owners whose historical nonce the public node would not serve (pruned state — unknown, not inactive). Registrations from eth_getLogs Registered on 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 over ~30 days.
- The population this lane's sample is drawn from. It is a count of ids minted, not of agents that exist, answer or work — and it is never added to another chain's count.
Tempo
Weekly series, as of 2026-10-12 — not the current total. The daily census read 345 on 2026-10-16.
▸▾ Not enough readings this window (n=0–1) — 9 readings, not findings
▸▾ How these were measured
- the rate sample looked at 9.8% of the window's blocks, spread evenly across it — it estimates RATES and is not a census (use registered_new_in_window for counts); 12 segment(s) were only partially scanned before the request budget ran out
- UNKNOWN: no endpoint on this venue and chain has an answer recorded ≥ 7 days ago yet (the endpoint store began 2026-09-08). Unknown, not zero.
- Up to 40 endpoints probed per chain, in sample order. Sample 1 < 20: stored, not a finding.
- Declared only; A2A cards are not probed here. Sample 1 < 20: stored, not a finding.
- Declared is not answering — see mcp_endpoint_answers. Sample 1 < 20: stored, not a finding.
- 0 of 1 sampled registrations declare no agentURI at all and are excluded from this denominator (they are counted on registered_by_platform as "(no agentURI declared)"). Sample 1 < 20: stored, not a finding.
Does the registration lead anywhere?
A registration is a mint. Each week we sample registrations per chain, fetch the agent's own registration file, and ask three things of it: does it resolve, does it declare an endpoint, and does a declared MCP endpoint complete a handshake. Rates of the sample, with the sample size beside each; a handshake proves a server is up and nothing about what it does. A chain with fewer than 20 readings shows “too few” rather than a rate.
| Chain | File resolves | Declares MCP | MCP answers | Declares A2A |
|---|---|---|---|---|
| Arbitrum | 3.8%n=52 | too few (n=2) | too few (n=1) | too few (n=2) |
| Avalanche | too few (n=1) | too few (n=0) | too few (n=0) | too few (n=0) |
| Base | too few (n=5) | too few (n=5) | too few (n=0) | too few (n=5) |
| BNB Chain | 100%n=43 | 7%n=43 | too few (n=3) | 23.3%n=43 |
| Ethereum | too few (n=10) | too few (n=10) | too few (n=1) | too few (n=10) |
| Gnosis | 100%n=28 | 17.9%n=28 | too few (n=5) | 17.9%n=28 |
| Optimism | too few (n=3) | too few (n=1) | too few (n=1) | too few (n=1) |
| Robinhood Chain | too few (n=2) | too few (n=2) | too few (n=0) | too few (n=2) |
| Tempo | too few (n=1) | too few (n=1) | too few (n=1) | too few (n=1) |
Who is producing these
The host serving each agent's metadata, parsed out of the registration event itself. It is strong evidence of the producing platform, not proof of it — and where a registration declares no metadata at all, that is shown as its own row rather than hidden in an “other” bucket.
| Chain | Producing platform | In sample | In the directory |
|---|---|---|---|
| Arbitrum | ipfs | 38of 77 | not listed |
| Arbitrum | execution.market | 36of 77 | not listed |
| Gnosis | marketplace.olas.network | 27of 28 | olas |
| BNB Chain | metadata.evoevo.ai | 21of 58 | evoevo |
| Base | centralcity.ai | 20of 20 | not listed |
| BNB Chain | iconaves.com | 17of 58 | not listed |
| BNB Chain | termix-platform-prod.s3.ap-southeast-1.amazonaws.com | 12of 58 | termix |
| BNB Chain | q402.quackai.ai | 5of 58 | q402-quack-ai |
| Optimism | execution.market | 2of 3 | not listed |
| Arbitrum | apexfaucet.xyz | 1of 77 | not listed |
| Arbitrum | toku.agency | 1of 77 | not listed |
| Arbitrum | signals.brobotapp.com | 1of 77 | not listed |
| Avalanche | execution.market | 1of 1 | not listed |
| BNB Chain | (no agentURI declared) | 1of 58 | not listed |
| BNB Chain | bafkreihep4hcpjdyosadi3i7nv6plaufx25iqdloqzv6kbprrocqyooviq | 1of 58 | not listed |
| BNB Chain | dolphinamp.xyz | 1of 58 | not listed |
| Gnosis | apexfaucet.xyz | 1of 28 | not listed |
| Optimism | marketplace.olas.network | 1of 3 | olas |
| Robinhood Chain | (inline document, no platform named) | 1of 3 | not listed |
| Robinhood Chain | agnt.social | 1of 3 | not listed |
| Robinhood Chain | termix-platform-prod.s3.ap-southeast-1.amazonaws.com | 1of 3 | termix |
| Tempo | blob.8004scan.app | 1of 1 | not listed |
Confirmed contracts
Every address here was confirmed on-chain twice: bytecode present, and the block explorer's verified contract name matching the claim. A confirmation older than the re-check interval renders as stale rather than as a number that looks current.
| Chain | Contract | Role | Confirmed |
|---|---|---|---|
| 0G | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Abstract | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Arbitrum | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Avalanche | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Base | ERC-8004 Reputation Registry0x8004BAa17C55a88189AE136b182e5fdA19dE9b63 | registry | 2026-09-01 · source |
| Base | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| BNB Chain | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Celo | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Ethereum | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Ethereum | ERC-8004 Reputation Registry0x8004BAa17C55a88189AE136b182e5fdA19dE9b63 | registry | 2026-09-01 · source |
| Gnosis | ERC-8004 Reputation Registry0x8004BAa17C55a88189AE136b182e5fdA19dE9b63 | registry | 2026-09-01 · source |
| Gnosis | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| GOAT Network | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Injective | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Linea | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Mantle | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| MegaETH | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Metis | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Monad | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Morph | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Optimism | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Polygon | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Robinhood Chain | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Scroll | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Shape | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| SKALE Base | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Taiko | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Tempo | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| X Layer | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
How this is measured
Registered event logs (enumerable — full range on Arbitrum/Gnosis, chunked elsewhere, or Blockscout's keyless paginated log API), plus the lastAgentId storage slot for a cheap total.
Each figure is read per chain and per lifecycle stage and is never added to another. A rate computed on fewer than 20 observations is stored and shown as “not enough readings”, never as a finding; a value that could not be read says “not measured” with the reason. Some readings on this page are in that state.
What this page cannot settle
- Registering IS a transaction, so any naive 'has it ever transacted' test returns 100%. Compare nonce against that wallet's OWN registration count.
- Headline safety: Only with the stage named. 465k registered is true; 465k agents is not.
- ⚠️ READ BEFORE QUOTING ANY OF THESE. The Arbitrum sample is ALL-TIME (every owner across the registry's life); the Base and BNB samples are a RECENT WINDOW (a few hours). Recent registrants on a busy chain are self-selected for being active, so the rows are NOT directly comparable and the gap between 7.5% and 100% is partly an artefact of that. A second effect points the same way: on busy retail chains registrants reuse established, funded wallets, so 'nonce > registrations' is a weak bar there and mostly reflects ordinary human wallet history rather than agent activity. To compare properly, sample the SAME window on every chain.
- Some rates on this page are computed on a handful of wallets. They are shown with their sample size and marked below the publishable threshold — they are observations, not findings.
- Every method on this page is EVM-shaped. Solana identity registries are covered elsewhere as upper bounds; Solana payment settlement is not covered anywhere on this site.
In the directory as ERC-8004: Trustless Agents.
Why sources disagree
Each tracker counts a different set of chains and decides what an agent is: every registered id, only ids with a registration file, or testnets too. A wider scope or a looser definition gives a bigger figure, so the figures cannot be lined up or added.
- 8004scan ↗622,232
agents · mainnet chains, agents with a registration file · all time
Agents 8004scan indexes in this view.
read 2026-10-16
- 8004scan ↗679,972
agents · mainnet chains, including ids without a registration file · all time
Agents 8004scan indexes in this view.
read 2026-10-16
- 8004scan ↗945,644
agents · all networks, testnets included · all time
Agents 8004scan indexes in this view.
read 2026-10-16
- agenteconomy.to ↗661,080
agents · the chains agenteconomy.to tracks · all time
Total agents in agenteconomy.to’s ERC-8004 table, on the chains it tracks.
read 2026-10-16 · source date 2026-10-15T02:18:02.381Z
Our own reading is the registry contract's own id counter on each chain, read directly and never summed. ERC-8004 agents by chain →
Figures other trackers publish, quoted with their source and read once a day. They are not Sato Hub's numbers and are never added together; “not read” means we hold no reading, never zero.
Cite this
Sato Hub, "ERC-8004 Identity Registry — measured on-chain", satohub.ai/agent-economy/erc8004, as of 2026-10-16. CC-BY.
Data: satohub.ai/api/export/adoption.json?venue=erc8004 (CC-BY, current week; every row carries its method, evidence tier and sample size).
Reference
QuestionsWhat people ask about this pageShowHide
Questions people ask about ERC-8004 Identity Registry
- What is one unit of ERC-8004 Identity Registry?
- one registered agent id. Counting anything else as a "ERC-8004 Identity Registry agent" would compare different objects, so every row on this page names the stage it counts.
- What does it cost to enter ERC-8004 Identity Registry?
- free / permissionless (gas only). Entry cost is why raw sizes are not comparable across venues: free and permissionless is a different market from bonded.
- How is ERC-8004 Identity Registry measured?
- Public chain reads on 11 chains, keylessly, once a week — this view is the week beginning 2026-W42. Each row carries its method, evidence tier and sample size, and a row we could not read is null rather than zero.
- Does a count here say the agents work?
- No. A registration, a launch or a staked service is an entry in a contract. Nothing about funding, activity, competence or safety is implied, and what happens after entry is measured as its own stage.
SourcesWhere the data comes fromShowHide
Sources — the standards this venue implements
Cite this pagePlain text, APA or BibTeXShowHide
Cite this page
Sato Hub. "ERC-8004 Identity Registry — measured on-chain." Sato Hub, updated 2026-10-16, accessed 2026-10-16. https://satohub.ai/agent-economy/erc8004Data last refreshed 2026-10-16; this page is rebuilt daily. Citations carry the date so a reader can tell which snapshot a claim came from. Catalog data is licensed CC-BY-4.0.