← The onchain agent economy
8004
ERC-8004 Identity Registry
identity registry · week 2026-W36
- 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.
What we measured
Arbitrum
Registeredregistered agent id
1,437Proof
New this windownew registered agent id over the window
214Proof
Distinct ownersdistinct owner wallet in sample
100%94n=94Proof
Fundedsampled EOA owner holding a native balance > 0
7n=7 · too small to quoteIndicator
Active beyond registeringsampled EOA owner whose nonce exceeds the agent ids it holds
3n=7 · too small to quoteIndicator
In ongoing usesampled EOA owner with >= 10 non-registration transactions
1n=7 · too small to quoteInference
- the rate sample looked at 45.5% 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; 2 owner wallet(s) could not be read and are excluded from the denominator
Avalanche
Registeredregistered agent id
1,807Proof
New this windownew registered agent id over the window
17Proof
Distinct ownersdistinct owner wallet in sample
0n=0 · too small to quoteProof
In ongoing usesampled EOA owner with >= 10 non-registration transactions
unknownn=0 · too small to quoteInference
Fundedsampled EOA owner holding a native balance > 0
unknownn=0 · too small to quoteIndicator
Active beyond registeringsampled EOA owner whose nonce exceeds the agent ids it holds
unknownn=0 · too small to quoteIndicator
- 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
Base
Registeredregistered agent id
83,521Proof
New this windownew registered agent id over the window
23,066Proof
Distinct ownersdistinct owner wallet in sample
44.2%106n=240Proof
Fundedsampled EOA owner holding a native balance > 0
100%75n=75Indicator
Active beyond registeringsampled EOA owner whose nonce exceeds the agent ids it holds
86.7%65n=75Indicator
In ongoing usesampled EOA owner with >= 10 non-registration transactions
80%60n=75Inference
- the rate sample looked at 11.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); 12 segment(s) hit the per-segment cap, so segment counts are floors — the RATES remain valid, the counts are not a census; 2 owner wallet(s) could not be read and are excluded from the denominator
BNB Chain
Registeredregistered agent id
324,930Proof
Distinct ownersdistinct owner wallet in sample
95%19n=20Proof
Fundedsampled EOA owner holding a native balance > 0
13n=19 · too small to quoteIndicator
Active beyond registeringsampled EOA owner whose nonce exceeds the agent ids it holds
6n=19 · too small to quoteIndicator
In ongoing usesampled EOA owner with >= 10 non-registration transactions
1n=19 · too small to quoteInference
New this windownew registered agent id over the window
unknownProof
- the rate sample looked at 0.1% 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 1 of 12 time segments were readable from a keyless node (public nodes prune history), so the sample covers 0.02 days, not 30; 1 segment(s) hit the per-segment cap, so segment counts are floors — the RATES remain valid, the counts are not a census
- UNKNOWN: the public node pruned this chain's history back to less than a day (0d), so no window growth can be measured keylessly. The raw delta over that sub-day window was 1.
Ethereum
Registeredregistered agent id
50,658Proof
New this windownew registered agent id over the window
3,696Proof
Distinct ownersdistinct owner wallet in sample
55%11n=20Proof
Active beyond registeringsampled EOA owner whose nonce exceeds the agent ids it holds
2n=2 · too small to quoteIndicator
Fundedsampled EOA owner holding a native balance > 0
2n=2 · too small to quoteIndicator
In ongoing usesampled EOA owner with >= 10 non-registration transactions
2n=2 · too small to quoteInference
- the rate sample looked at 43.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
Gnosis
Registeredregistered agent id
4,121Proof
New this windownew registered agent id over the window
16Proof
Distinct ownersdistinct owner wallet in sample
2n=16 · too small to quoteProof
Fundedsampled EOA owner holding a native balance > 0
1n=1 · too small to quoteIndicator
Active beyond registeringsampled EOA owner whose nonce exceeds the agent ids it holds
1n=1 · too small to quoteIndicator
In ongoing usesampled EOA owner with >= 10 non-registration transactions
0n=1 · too small to quoteInference
Optimism
Registeredregistered agent id
542Proof
New this windownew registered agent id over the window
7Proof
Distinct ownersdistinct owner wallet in sample
0n=0 · too small to quoteProof
Active beyond registeringsampled EOA owner whose nonce exceeds the agent ids it holds
unknownn=0 · too small to quoteIndicator
Fundedsampled EOA owner holding a native balance > 0
unknownn=0 · too small to quoteIndicator
In ongoing usesampled EOA owner with >= 10 non-registration transactions
unknownn=0 · too small to quoteInference
- 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
Polygon
Registeredregistered agent id
631Proof
Distinct ownersdistinct owner wallet in sample
0n=0 · too small to quoteProof
Active beyond registeringsampled EOA owner whose nonce exceeds the agent ids it holds
unknownn=0 · too small to quoteIndicator
New this windownew registered agent id over the window
unknownProof
Fundedsampled EOA owner holding a native balance > 0
unknownn=0 · too small to quoteIndicator
In ongoing usesampled EOA owner with >= 10 non-registration transactions
unknownn=0 · too small to quoteInference
- the rate sample looked at 2.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); only 1 of 12 time segments were readable from a keyless node (public nodes prune history), so the sample covers 0.66 days, not 30; 1 segment(s) were only partially scanned before the request budget ran out
- UNKNOWN: the public node pruned this chain's history back to less than a day (0d), so no window growth can be measured keylessly. The raw delta over that sub-day window was 0.
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 | 87of 94 | not listed |
| Base | termix-platform-prod.s3.ap-southeast-1.amazonaws.com | 78of 240 | not listed |
| Base | (no agentURI declared) | 75of 240 | not listed |
| Base | ipfs | 35of 240 | not listed |
| Base | wild-west-bots.vercel.app | 20of 240 | not listed |
| Gnosis | marketplace.olas.network | 15of 16 | olas |
| BNB Chain | termix-platform-prod.s3.ap-southeast-1.amazonaws.com | 11of 20 | not listed |
| Base | via | 9of 240 | not listed |
| Base | lobster3301.com | 9of 240 | not listed |
| Base | execution.market | 7of 240 | not listed |
| Ethereum | ipfs | 6of 20 | not listed |
| Ethereum | api.freaks.one | 5of 20 | not listed |
| Arbitrum | modusops.xyz | 4of 94 | not listed |
| BNB Chain | q402.quackai.ai | 4of 20 | not listed |
| Ethereum | depunks.club | 4of 20 | not listed |
| BNB Chain | metadata.evoevo.ai | 3of 20 | not listed |
| Base | x402-explorer.hpp.io | 2of 240 | not listed |
| BNB Chain | iconaves.com | 2of 20 | not listed |
| Ethereum | signalbound.art | 2of 20 | not listed |
| Arbitrum | agentsinc.app | 1of 94 | not listed |
| Arbitrum | execution.market | 1of 94 | not listed |
| Arbitrum | glassofbeer.ai | 1of 94 | not listed |
| Base | (inline document, no platform named) | 1of 240 | not listed |
| Base | api.x402.jobs | 1of 240 | not listed |
| Base | jetson-virohana.tail5c1d8f.ts.net | 1of 240 | not listed |
| Base | tenjin.blog | 1of 240 | not listed |
| Base | api.acp.virtuals.io | 1of 240 | virtuals-protocol |
| Ethereum | booa.app | 1of 20 | not listed |
| Ethereum | execution.market | 1of 20 | not listed |
| Ethereum | api.normies.art | 1of 20 | not listed |
| Gnosis | (no agentURI declared) | 1of 16 | 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 |
|---|---|---|---|
| Arbitrum | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Avalanche | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Base | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Base | ERC-8004 Reputation Registry0x8004BAa17C55a88189AE136b182e5fdA19dE9b63 | registry | 2026-09-01 · source |
| BNB Chain | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Ethereum | ERC-8004 Reputation Registry0x8004BAa17C55a88189AE136b182e5fdA19dE9b63 | registry | 2026-09-01 · source |
| Ethereum | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Gnosis | ERC-8004 Identity Registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | registry | 2026-09-01 · source |
| Gnosis | ERC-8004 Reputation Registry0x8004BAa17C55a88189AE136b182e5fdA19dE9b63 | 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 |
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 here is EVM-shaped. Solana is not covered by any measurement on this page.
In the directory as ERC-8004: Trustless Agents.