ERC-8004 looked like proof that the agent economy had arrived. In my 18 August snapshot, it listed 418,665 agent registrations and 558,461 reputation events across 28 mainnet chains. Then I went looking for customers.

I audited 457,778 reviews on Ethereum and Base. Two files point to transactions I could resolve onchain. Only one identifies both payment parties, and that file names the wrong chain.

The contracts work. The adoption story does not. In the two chains I tested, ERC-8004 can prove almost no paid work. Work may be happening elsewhere; this trust system barely records it.

Disclosure: I wanted ERC-8004 and x402 to work. On Starknet, Akash Neelesh implemented Cairo v2, Abdel Stark created the original starknet-identity skill, Adrien Lacombe contributed security cleanup, and I updated the skill against the deployed ABI this week. Davide Crapis, one of ERC-8004’s authors, made the optimistic launch case. I have spoken with him a couple of times, and I like him a lot and admire his work. That made me want to look closely at how ERC-8004 is doing in practice.

What 418,665 actually counts

Draft ERC-8004 is easier to understand than its name suggests. It defines three registries:

RegistryWhat it recordsWho supplies the signal
IdentityA name and a file that says what the agent doesThe agent’s owner
ReputationScores, tags, endpoints, and an optional evidence fileAny client address except the owner or an approved operator
ValidationA request for an outside check and the validator’s answerA chosen validator

Payments are outside the standard. A review can include an x402 payment receipt, but that field is optional. I found no published Validation Registry in the EVM deployments I checked, so reputation is the only public signal here that might contain evidence of demand. The contract records what an address says. It does not know whether that address bought anything.

That is why I do not accept the explorer’s label “active users”. The explorer never defines active. Calling 401,030 addresses “active users” invites readers to mistake registry participation for demand.

8004scan front page statistics reading 421,207 plus Registered Agents, 552,155 plus Feedback Submitted, and 401,030 plus Active Users.
The public story 8004scan.io, captured 18 August 2026. This dashboard snapshot is separate from the pinned census used in this essay, so the totals differ. The label to notice is 401,030+ Active Users. View source

On Ethereum, where I scanned every event from launch, there were 50,287 registered agents. Only 1,668 had any review. At most 129 had a review from an address that was not one of the six busiest crawlers.

Treat 129 as a ceiling, not a count of people. A quieter bot can sit below every threshold I tried. The real number of agents reviewed by a person may be lower.

Ethereum agents surviving each test
Signed up 50,287
Wrote a description 30,386
Description still loads 13,284
Got one review 1,668
Review from a non-crawler (ceiling) 129
Reviewed in the last 7 days 1
The drop Registration is something an owner does alone. A review from an independent customer is harder, which is why the drop near the bottom matters. The count of descriptions that still load is estimated from a 500-URI sample.

Ten thousand registered Ethereum agents pointed to one dead domain. I sampled 295. None answered.

The headline number counts listings. The steep drop begins when somebody else has to show up.

One agent wrote half the reviews

The total review count looks healthier until you ask where it came from.

300,692 reviews, or 53.8% of every review in the dataset, belong to one agent: Base agent #25975, “Botoshi”. Its own card describes it as the coordinator for BOTCOIN mining.

The 8004scan page for Botoshi, showing 292300 Total Feedback in the statistics panel while the header, tab, and feedback panel all say there is no feedback.
The contradiction 8004scan.io/agents/base/25975, captured 18 August 2026. The page says 0 feedback items in three places and 292300 Total Feedback in another. My later complete audit found 300,692 entries. View source

The screenshot is almost too perfect. The same page says Botoshi has no feedback and 292,300 feedback entries. An explorer that cannot make those two numbers agree is not ready to turn them into a reputation score.

All 558,461 ERC-8004 reviews by source
One agent: the BOTCOIN coordinator 300,692
Automated scorers and liveness bots 78,674
Everything else, all 28 chains 179,095
Where the reputation lives Tap or hover any band for the exact count. The first band is a single agent.

All 300,692 entries carry the tag miner-vouch. They came from 57 wallets that mined for the coordinator. Every score is the number 1. A checkmark, not a rating.

The miners were not breaking the contract. ERC-8004 lets any client address other than the owner or an approved operator write feedback, and the mining loop used that open log as a cheap database. The problem comes later, when an explorer adds those receipts to the same number as a customer saying a service worked.

The next layer is thin too. The second-largest source is a crawler that writes five metrics in lockstep about 7,556 agents, with no payment evidence attached. On Ethereum, 2,198 of 3,217 reviews came from the six busiest crawlers checking whether an endpoint answered. Meanwhile, 19,901 Ethereum agents had no description.

These are valid writes. They show that the registry is useful as public infrastructure. They do not show a market.

Counting reviews was only the first test. ERC-8004’s example feedback file has an optional proofOfPayment object. If a review came from paid work, that object can name the transaction, chain, payer, and recipient.

So I fetched every feedback file referenced by every Ethereum and Base review. I looked for a transaction reference, resolved it onchain, and checked that the transaction succeeded. Then I asked whether the file named the chain, payer, and recipient, and whether the transfer matched those claims.

The dataset held 457,778 reviews. Two files point to transactions that resolve. Only one identifies both payment parties.

What 457,778 ERC-8004 reviews carry as evidence
No file attached 78,242
File dead or unreachable 155,744
File loads, references nothing 221,591
Names a tool, proves no task 2,199
Settlement resolves, payer omitted 1
Payer-recipient transfer resolves 1
The evidence Ethereum and Base, complete history to 19 August 2026. Tap or hover any bar for the exact count and share.

The first four groups fail in different ways. Some attach no file. Some point to evidence that has disappeared. Most attach a comment or score with nothing another person can check.

Another 2,199 name an MCP tool or an A2A task. That sounds better, but a tool name is still text written by the reviewer. It is not bound to a session, request, response, or counterparty. One academic study calls this “task linkage.” I do not. Naming a tool and proving you used it are different acts.

Agent #6817’s file points to a real $0.0100 USDC transfer between its named payer and recipient, but declares Ethereum while the transaction is on Base. That mismatch sat in the registry’s history for seven months while the explorer used the review in a public score.

Agent #58134’s file points to a real $0.0100 Base settlement, including $0.0090 to its named provider, but names no payer and uses different fields from the ERC-8004 example. It proves settlement, not that the reviewer paid.

AgentWhat resolves on BaseWhat the file gets wrong or omits
#6817$0.0100 between its named payer and recipientSays Ethereum, the wrong chain
#58134$0.0100 settlement; $0.0090 to its named providerNames no payer; uses different fields from the ERC example

That is the complete list. The two transactions settled $0.0200 gross, and $0.0190 reached the files’ named recipients. Only agent #6817’s $0.0100 transfer passes the two-named-party test, and its declared chain is wrong. The registry can prove almost no paid customer-agent work.

Real work can leave weak proof

Toppa sells phone airtime, data, bill payments, and gift cards over Telegram and WhatsApp. Its agent on Celo has 602 reviews from 511 addresses, the most diverse reviewer set I found.

What Toppa's 602 reviews are tagged
airtime / success 179
data / success 136
bill_payment / success 101
gift_card / success 101
delivered / airtime 10
fast_delivery / data 9
22 other tag pairs 66
Reviews as exhaust Celo agent #1870, complete history. A completed delivery writes a review. A failed one triggers a refund and a negative review.

These are not customers sitting down to write opinions. Toppa’s delivery system writes feedback after a purchase succeeds. The review is exhaust from real work. That is a much better design.

It still fails the proof test. Of Toppa’s 602 reviews, 598 attach no file. The other four were written by crawlers, not by Toppa’s customers. The real transactions leave the thinnest trace. The monitoring bots leave the richest files.

This is the strongest objection to a broad “there is no demand” claim. Real work can happen while the registry records weak evidence. Agents can also hire and pay one another without using ERC-8004 at all.

The live task market is still mostly seeded

Larger jobs are the other possibility, so I checked a live task market.

Taskmarket, built by Daydreams, runs tasks on Base and exposes its data through a public API. I could read 321 of the 373 tasks it reported in my snapshot.

MeasureWhat I found
Readable tasks / tasks reported321 / 373
Tasks from one requester address178, or 55%
Distinct requester addresses / signing keys35 / 19
Tasks created within 60 seconds of another53%
Submission records / recorded awards in the capture13,499 / 421
API-reported aggregate agent earnings$3,288.58

I expected junk and found something more interesting. Many briefs are specific and charming: build a three.js world, recreate an arcade game, decode a braille cell. Somebody put thought into them. Taskmarket is also unusually open about its data. I like both things.

But I would not call this broad demand. One requester address posted 55% of the 321 readable tasks. More than half arrived in bursts less than a minute apart. The capture contained 13,499 submission records and 421 recorded awards: an aggregate 3.1% award-to-submission ratio. That does not tell us which attempts were still pending or how split awards worked, but it does show a market organized around contests rather than ordinary jobs.

New markets often seed their own demand. There is nothing dishonest about that. It can be a good way to attract workers and find product-market fit. But seeded benchmarks are not evidence that outside customers have arrived. The honest description today is “interesting experiment,” not “agent economy.”

This does not prove that paid agent work is absent. It proves something more useful: registration and review totals cannot tell us how much exists.

A payment can be real and still prove little

At this point the obvious fix seems easy: make every review point to a payment. If reviews are cheap talk, let money be the reputation.

eBay learned the same lesson in two rounds. Open feedback invited score-padding, so eBay restricted reviews to transactions. Sham transactions followed. The history is documented by Resnick and Zeckhauser and in a later legal analysis of reputation systems. A transaction link is the floor for reputation, not the finish line.

x402 is the natural place to test that idea. It lets an API charge for each request, and the ERC-8004 specification uses it in the example payment receipt.

The x402scan front page showing 10.97M transactions, 1.12M dollars of volume, 22.26K buyers and 38K sellers over the past 30 days, with BlockRun showing 7.75M transactions from 568 buyers.
The payment headline x402scan.com, captured 19 August 2026, past 30 days. The headline says 10.97M transactions. The first service accounts for 7.75M of them. View source

The public x402scan dashboard has the same concentration problem. In that snapshot, one service accounted for 7.75 million of 10.97 million transactions, or 70.6%, from 568 buyers. That may be a real and busy service. It is still a reminder that transaction count and market breadth are different things.

I then measured a full day of Base. The scan found 609,243 EIP-3009 USDC transfers. This is an upper bound for x402 because EIP-3009 is also used by ordinary gasless transfers.

The count and the money came from different groups.

The payment rail measured two ways
$0.01 or less: share of transfers 83.5%
$0.01 or less: share of value 0.12%
Above $1: share of transfers 1.6%
Above $1: share of value 99.64%
Count is not value Base USDC, 24 hours to 19 August 2026, complete. A middle range between $0.01 and $1 belongs to neither band.

Transfers above one dollar were 1.6% of the count and 99.64% of the value. The 508,803 transfers worth one cent or less moved $2,854.98 in total.

One address sent another 506,880 transfers in that day. That pair was 83.2% of the whole transfer count. The varying amounts are consistent with metered use. It could be a busy customer paying a busy supplier. Either way, it is one relationship, not a broad market.

A payment receipt can also put almost nothing at risk. The smallest EIP-3009 transfer in my scan was $0.000001—not necessarily x402, because the scan includes ordinary gasless USDC transfers. A 2026 audit of ERC-8004 found that one feedback item could move the median agent across its trust threshold while the median Base gas cost to post it was $0.0027.

Like a cryptographic proof receipt, a payment receipt proves only its stated claim: money moved. It does not prove that useful work happened or that enough was at risk to make cheating costly.

What better evidence would look like

The obvious fix is to give larger payments more weight. I no longer think that works. A buyer and seller can move the same dollar through new wallets, send it back, and return tomorrow as a “repeat customer.” Gross volume and repeat count are facts. They are not proof of independent demand.

A job receipt, not another score

I would leave the ERC-8004 contracts alone. The standard already expects complex scoring to happen off-chain, and its own security section admits that Sybil attacks are possible. The first useful product is a strict evidence profile and a verifier, not a fourth registry.

Call it a Verified Job Receipt. One job ID must survive every signed step, so nobody can splice the offer from one job onto the result from another.

Verified job receipt A proposal

Shared job ID same in every signed record
  1. 01
    Terms Service · price · deadline · dispute rule
    signed offer
  2. 02
    Work Request fingerprint · result fingerprint
    buyer / provider
  3. 03
    Settlement Chain · transaction · sender · recipient · asset · net amount
    payment rail
  4. 04
    Outcome Provider submitted · client accepted or rejected · verifier named
    named signers
Author's proposal · 20 August 2026 The design assembles ideas from ERC-8183 and x402 Signed Offers and Receipts. A shared ID makes the trail auditable; it does not prove that the parties are independent.

The SDK should derive the chain, asset, amount, sender, and recipient from settlement, then bind those addresses to the signed terms. Nobody should type them into JSON. That would have caught the wrong chain in one file and the missing payer in the other.

Show facts, not stars

The verifier should return an evidence ladder: listed, paid, submitted, accepted, independently validated. Each label says exactly what happened. No label should silently become a universal reputation score. The last label is only honest when the indexer names the validator and explains why it treats that validator as independent.

The explorer should then show net settled value after known refunds, payer addresses, repeat-payer rate, sponsored activity, disputes, and concentration in the largest payer-agent pair. Call them addresses, not customers.

The classic Sybil result is unforgiving: without a trusted authority, a distributed system cannot reliably show that two online identities represent different entities, except under extreme assumptions about resources and coordination.

A useful explorer would not tell me which agent has five stars. It would tell me what happened the last fifty times that agent took money for this kind of job—and how concentrated those payments were.

The pieces already exist

This is assembly, not blank-page invention. Davide Crapis, Bryan Lim, Tay Weixiong, and Chooi Zuhwa’s ERC-8183 adds escrow, deliverable commitments, and terminal outcomes, though its evaluator can still be the client. Alfred Tom authored x402’s Signed Offers and Receipts, merged by @phdargen. A2A x402, advanced by Jordan Ellis, and Ayush Ojha’s proposed operation-bound receipts already carry terms or task IDs toward payment.

Today’s x402 receipt signs neither the response body nor client acceptance. Its payment identifier binds a request only at the resource server or facilitator, not in the signed receipt. None of these pieces yet provides a signed, portable chain through client acceptance.

Where this still fails

Wash trading survives. Pair caps, delayed settlement, refund tracking, and wallet-cluster analysis make it more visible. They do not reveal common ownership or a rebate paid somewhere else. A high payment is not necessarily high value at risk.

For cheap API calls, the narrow claim “a paid response happened” may be enough. Larger jobs need more.

Objective work can go to a deterministic verifier. Subjective work needs explicit acceptance or an agreed dispute process. An optimistic oracle accepts an assertion if nobody disputes it during the liveness period. A false claim costs the asserter its bond only when an active challenger disputes it and the DVM resolves against it. A seller should not be able to choose a friend and call the result independent.

Before changing a standard, I would run a 30-day pilot on one real service and attack it. Create a wash loop. Trigger a refund. Submit a bad result. Rotate the agent’s key. Publish what the receipt catches and what it misses. Then compare the rankings produced by raw reviews, paid jobs, accepted jobs, and outside validation.

A review is a claim. A payment is an event. A job receipt links them. It is not truth, but it is finally an audit trail.

Methods and snapshot dates

I scanned complete NewFeedback and Registered histories from the canonical registries on Ethereum and Base, plus complete Celo reputation history. The remaining 25 chains contribute 73,078 reviews, 13% of the global total, taken from 8004scan’s published chain totals.

Ethereum was scanned from block 24,339,925 and Base from block 41,663,783. Every referenced feedback file was fetched as untrusted input. I resolved its transaction references on both chains, inspected the transfer logs, and treated “transaction resolves” separately from “file identifies both payment parties.”

The partial Taskmarket capture ended at 06:51 UTC on 20 August 2026. It covers 321 readable tasks going back to 4 June; the service reported 373 tasks. By 07:35 UTC, the public list returned only 226, with the earliest on 5 July. These figures describe the captured feed, not a stable live total. The $3,288.58 figure is the totalEarnings value then returned by /api/agents/count.

The x402 test scanned 43,200 Base blocks and every receipt in them. It counts all EIP-3009 USDC transfers, so it is an upper bound rather than a pure x402 dataset.

The concentration and registration figures are an 18 August snapshot. The receipt audit is a 19 August snapshot, covering Ethereum through block 25,787,904 and Base through block 50,169,052. The estimate that 13,284 Ethereum descriptions still load comes from a 500-URI sample. Botoshi’s share had stopped growing at Base block 50,108,244; if its mining loop restarts, the 53.8% share will change.

A compact audit manifest pins the block cutoffs, category totals, receipt CIDs, and captured Taskmarket aggregates. The raw census is not published with this essay, and the Taskmarket rows were not retained, so those aggregates cannot be independently recomputed from the manifest alone.

The next proof is a returning customer

The system is young, and this audit cannot see work outside the registry. Those limits matter. But Toppa changed the order for me: product first, customers second, onchain identity afterward. The registry can record demand. It cannot create it.

Starknet is the one place I found all three registries deployed. Its Reputation Registry requires callers to choose reviewers before aggregating—a useful guardrail against a naive global score. The deployment was still new when I checked on 20 August, so I see it as infrastructure worth watching, not a verdict on demand.

Writing this also sent me back to the Starknet skill I maintain. I checked it against the deployed ABI line by line and made ten documentation corrections, aligning its claims and examples with the current contracts. That is the kind of work I want this audit to produce: better infrastructure, clearer interfaces, and fewer surprises for builders.

Trust systems are easy to describe before checking what each claim proves. In ERC-8004’s data today, the noise is much easier to find than the market.

ERC-8004 made agents easy to list. The next proof is a customer who pays for a job, accepts the result, and comes back.