§Backstop

Exhibits of record

Every artifact below is real and verified on Mantle Sepolia (chainId 5003). No demo state is fabricated — each veto and co-sign lands a real Blocked / CoSigned event.

Exhibit A · Contracts

BackstopAccountFactory
LIVE · Sourcify-verified
0x46BA593C…35bEd7
explorer ↗
ERC-8004 IdentityRegistry
on-chain registry
0x8004A818…94BD9e
explorer ↗
Demo guarded account
BackstopAccount · agentId 183
0x42D7bb22…B28919
explorer ↗
Demo unknown contract (#5)
has bytecode
0xbc8ff917…1ebb33
explorer ↗
Demo drainer
in known-drainer list
0x088bA48a…5fDD65
explorer ↗
Demo injected spender (#6)
clean-floor stranger
0x18bf06FB…d151B8
explorer ↗

Exhibit B · ERC-8004 identities (both sides)

Guardian · agentId 182
owner
0x774aD9B0…7159CB
explorer ↗
Guarded account (agent) · agentId 183
owner
0xe90BE5e1…87B4bD
explorer ↗

Exhibit C · Detection beats (real txs)

1VETO
malicious-approve → flagged drainer
Tier-A · known-drainer list
0x53e43348…549b63
2COSIGN
legit swap on Agni (settled)
FLOOR · CoSigned on-chain
0x37f8ef0e…ae5f74
5VETO
unknown-contract intent
Tier-B · judged by: altllm
0xf83a34f4…23673a
6VETO
intent ↔ calldata mismatch
Tier-B · judged by: altllm
0xca732869…63098d

Exhibit D · Live onboarding (a fresh agent, wrapped on-chain)

Fresh agent key — never seen before
owner
0xe704Fb38…a1177D
explorer ↗
Guarded account deployed live
BackstopAccount · ERC-8004 agentId 216
0xa36Aa5C4…C4DE96
explorer ↗
Drainer proposed → VETO
on-chain Blocked · guardian-paid
0x3620cebf…451fb5
explorer ↗
Legit call proposed → COSIGN
on-chain execute · agent-paid
0xb2ba5709…17f451
explorer ↗

Reproduce it: node --env-file=.env --import tsx scripts/onboard-fresh.ts wraps a new key against the hosted guardian and prints these exact hashes.

What this proves

A reusable guardian primitive

backstop.wrap() adds a veto-only co-signer to any agent in about three lines — the guarding logic is a drop-in, not a fork.

Identity on both sides

ERC-8004 registration for the guardian (agentId 182) and the guarded agent (agentId 183), each verifiable on-chain.

Evidence, not assertion

Every verdict shows the simulated balance and allowance movement that justified it — the delta is the argument.

The save that matters

The intent↔calldata mismatch (#6) is a real drain stopped before a single wei left the wallet — caught by an LLM, blocked on-chain.

In short: a veto-only co-signer with ERC-8004 identity on both sides (agentId 182 + 183), proven wrap() onboarding — a brand-new agent (agentId 216) wrapped and guarded live on-chain, drainer vetoed and legit call co-signed in the same run.