crosschain.agents.x402_transfers table contains individual x402 protocol token transfer events across all supported chains. This is a union of chain-specific transfer models.
Table Columns
Adjusted Transfers & Inorganic Activity Flags
Some x402 volume is fabricated — self-payments and wash-return loops that inflate a server’s apparent transaction count and volume. Thecrosschain.agents.x402_transfers_adjusted table joins x402_transfers (on unique_id) with flags that identify this activity, so you can filter down to organic volume without re-deriving the detection logic yourself.
Table Columns
Every column fromx402_transfers above, plus:
Use
WHERE NOT is_inorganic to restrict to organic activity.
How each flag works
is_self_dealing
is_self_dealing
from_address = to_address — the x402 buyer and the server receiving payment are the same wallet. In practice this catches developer self-testing: wallets running thousands of transactions against their own server at a fixed low amount. Volume impact is negligible (<0.01% of total), but the check is essentially free to run.is_reciprocal_return
is_reciprocal_return
Flags a payment when the receiving server sends stablecoin back to the original payer within 24 hours, at no more than 10x the original payment amount.The 24-hour window comes from a 30-day calibration sample: the signal accumulates almost entirely within the first hour (5.71% of organic payments have a same-side return) and flattens out by 24 hours (6.34%) and 7 days (6.75%) — the tail past 24h is noise. The 10x proportional cap excludes servers that use their x402 receiving address as a general treasury wallet; without it, any large unrelated outflow to a past payer would be flagged as a “return” regardless of intent.Known limitation: the check uses the earliest stablecoin return on the same calendar day. If a server sent stablecoin to a buyer earlier that day for an unrelated reason (before the x402 payment), a later, legitimate refund can be masked. This is unlikely to affect adversarial wash trading, where the return specifically follows the payment.
is_agent_economy_circulation
is_agent_economy_circulation
Carves out servers where circular payment flows are designed protocol behavior, not wash trading. Currently covers Virtuals ACP (
acp-x402.virtuals.io, pay-to address 0xef4364fe4487353df46eb7c811d4fac78b856c7f), whose protocol treasury distributes earnings back to agent wallets that are often also buyers of the same server. Without this carve-out, roughly 24% of Virtuals transactions (18% of volume) would be falsely flagged as inorganic.is_inorganic
is_inorganic
The top-level gate:
(is_self_dealing OR is_reciprocal_return) AND NOT is_agent_economy_circulation. TRUE means the transfer is suspected fabricated volume.Two patterns were investigated and deliberately left unflagged. High-frequency buyers aren’t flagged because thousands of micropayments to the same server is the intended x402 use case, not bot behavior. Triangular wash loops (A→B→C→A) aren’t flagged because the only rings found in a 30-day sample were artifacts of a single facilitator’s internal payment-routing infrastructure, not adversarial gaming.