{"type":"article","schemaVersion":"1","slug":"arc-c32-payment-forensics","title":"$205K in Revenue, 19% Real Money — Payment-Graph Forensics on Arc","description":"Assay's Celo audit found only 19% of x402 agent revenue was organic — the rest was loops and seller-funded payers. AgentBadge built a payment-graph forensics index on Arc and a public verdict endpoint (GET /api/v1/risk/:address) that separates organic revenue from circular flow using Tarjan SCC, first-funder tracing, and shared-funder analysis — with honest no_data and freshness disclosure.","status":"LIVE","topics":["arc","ai-agents","usdc","x402","forensics","risk","wash-trading"],"concepts":["arc","ai-agents","usdc","x402","forensics","risk","wash-trading"],"rules":[],"capabilities":[],"actions":[{"type":"read","label":"Read article (Markdown)","url":"https://agentbadge.xyz/blog/arc-c32-payment-forensics.md"},{"type":"view-demo","label":"Run Agent Readiness scan","url":"https://agentbadge.xyz/scan?src=article:arc-c32-payment-forensics"}],"qa":[{"question":"What is payment-graph forensics?","answer":"Payment-graph forensics reconstructs who actually paid whom on a chain, then asks whether the money is new. Every x402 settle on Arc is a USDC transferWithAuthorization (EIP-3009): the payer signs, someone else submits. On Arc the submitter is almost never the payer — the facilitator pattern is the…"},{"question":"How do you find circular revenue in a payment graph?","answer":"You run three passes over the edge set and let arithmetic do the accusing. First, Tarjan's algorithm finds strongly connected components — groups of addresses where money can travel from any member back to itself. Every SCC bigger than one node is a loop by definition. Second, first-funder tracing:…"},{"question":"What does the risk API actually return?","answer":"A verdict — not a rating, not a score you can shop against. GET /api/v1/risk/:address runs the graph analysis over the indexed edges and returns one of four outcomes with the evidence attached. This is a real response from Arc mainnet (block 27,434,627, fetched 2026-10-23):"},{"question":"What did we find on Arc mainnet?","answer":"An honest baseline, mostly. As of block ~27,434,686 on 2026-10-23 the index holds 301 settles between real mainnet addresses — 29 sellers, 37 payers — plus 12 traced funding events, with the live tail 2–5 blocks behind tip. We ran Tarjan over the whole edge set: zero loops, zero self-funded payers…"},{"question":"Why does no_data matter more than a confident answer?","answer":"Because a risk check that always has an opinion is worse than none. The thin-file rules are mechanical: under five settles, under two payers, or under $0.05 gross — no_data, full stop. A brand-new seller is not suspicious; it is unmeasured. The distinction matters for policy: a buyer agent can trea…"},{"question":"Where does the verdict plug in?","answer":"Three seams already consume it. The buyer side: @agentbadge/circle-payments ships createRiskGuard — a beforePayment hook on createPayingClient that checks every payTo offered in the 402 challenge before reservation or signing, and the CLI gets it with one flag (--risk-check). A block verdict become…"},{"question":"How do you check an address yourself?","answer":"One curl, no auth:"}],"claims":[{"id":"claim-1","text":"Payment-graph forensics treats every EIP-3009 settle as a directed edge payer→seller, then separates organic revenue from circular flow: Tarjan SCC finds loops, first-funder tracing finds seller-funded 'customers', shared-funder analysis finds wallet clusters. AgentBadge indexes Arc mainnet this way and publishes the result at GET /api/v1/risk/:address — verdict pass/caution/block/no_data with organicShare, coveredPct, indexedToBlock, lagBlocks, and reasons. Thin files return no_data, never a fake score; freshness is disclosed, not assumed. As of block ~27.4M the Arc index shows 301 settles between real addresses, zero loops — a measured young-network baseline.","status":"UNVERIFIED","evidence":[]}],"canonical":"https://agentbadge.xyz/blog/arc-c32-payment-forensics","dates":{"published":"2026-10-23","modified":"2026-10-23"},"markdownUrl":"https://agentbadge.xyz/blog/arc-c32-payment-forensics.md","jsonUrl":"https://agentbadge.xyz/blog/arc-c32-payment-forensics.json","shortAnswer":"Payment-graph forensics treats every EIP-3009 settle as a directed edge payer→seller, then separates organic revenue from circular flow: Tarjan SCC finds loops, first-funder tracing finds seller-funded 'customers', shared-funder analysis finds wallet clusters. AgentBadge indexes Arc mainnet this way and publishes the result at GET /api/v1/risk/:address — verdict pass/caution/block/no_data with organicShare, coveredPct, indexedToBlock, lagBlocks, and reasons. Thin files return no_data, never a fake score; freshness is disclosed, not assumed. As of block ~27.4M the Arc index shows 301 settles between real addresses, zero loops — a measured young-network baseline.","relatedResources":[{"type":"guide","label":"Agent guide","url":"https://agentbadge.xyz/agent-guide/articles/arc-c32-payment-forensics"}]}