Caplane A2A
Pay-per-capability for agents: a scarce on-chain right is redelegated down a chain and redeemed in one atomic transaction nobody can coordinate, censor, or fake.
视频




技术栈
描述
Caplane

A serverless, facilitator-free primitive where agents redelegate a scoped capability budget down a chain and settle it atomically. The redeem is the payment. Gas paid in USDC. No coordinator in the path.
An autonomous agent holds USDC and no native gas. It needs a scarce, rivalrous capability another agent controls: one capped allocation slot that, once taken, no other agent can have. Caplane settles that purchase as a MetaMask delegation redeemed on-chain, down a redelegation chain — one atomic redeemDelegations pays the provider and grants the buyer the slot.
Caplane goes against the grain twice. The agent-payment field settles copies of non-rivalrous goods — API access, a data read, an inference call. Caplane settles something only one agent can have. And the settlement is not a payment gated alongside a transfer — the delegation redeem itself moves the money, with gas paid in USDC by a permissionless relayer.
A redelegation chain that settles
Authority only ever narrows down the chain, and MetaMask's DelegationManager enforces the intersection of every link:
treasury (root smart account · holds the USDC · gets the slot)
│ delegates: AllowedTargets(broker) + AllowedMethods(settle)
│ + CaplaneOrderEnforcer(exact order) + 1h + ≤3 calls
▼
coordinator (smart account)
│ REDELEGATES, strictly tighter: + 10 min + single-use
▼
worker / relayer ──redeemDelegations([child, root])──▶ DelegationManager
│ walks every caveat in every link
▼
CaplaneDelegationBroker.settle
charge USDC → AllocationAdapter.grant → split
provider gets amount − fee · the redeemer gets the fee
No coordinator sits in the path. Any relayer can redeem the chain and earn the fee; none can redirect the payee, skim the fee, or change the amount.
The order binding, as caveats
Caplane binds the order — adapter, params, amount, payToken, payee, feeBps — into the delegation's caveats. A custom CaplaneOrderEnforcer (a Delegation Toolkit ICaveatEnforcer) pins the order and ties the fee recipient to the actual redeemer, so the relay stays permissionless and incentivized: any relayer can redeem, none can tamper. It is fuzz-proven tamper-proof — only the exact signed split passes; every deviation (payee, feeBps, amount, payToken, adapter, params, fee-recipient, consumer, target, non-single-mode) reverts. Stock enforcers (AllowedTargets, AllowedMethods, Timestamp, LimitedCalls) carry the rest.
The A2A coordination
The hero is a genuine multi-hop ERC-7710 redelegation chain where a sub-delegate can never exceed its parent, proven live on the real DelegationManager:
A child built to call a target the root forbids reverts at the root's caveat (
AllowedTargetsEnforcer: target-address-not-allowed).A replay of the single-use child reverts (
LimitedCallsEnforcer: limit-exceeded).
The tightening is real, not cosmetic — distinct kinds of narrowing at each hop — and the chain terminates in a real rivalrous AllocationAdapter slot, not a toy transfer. That is the uncopyable edge.
MetaMask, end to end
Built on the MetaMask Delegation Toolkit 0.13.0, live on Arbitrum. Every account in the chain is a MetaMask Smart Account, reached by EIP-7702-upgrading the EOA to the toolkit's EIP7702StatelessDeleGatorImpl (the EOA address is preserved). Delegations are built with createDelegation / createCaveatBuilder and hashed with getDelegationHashOffchain, parity-tested byte-for-byte against the on-chain getDelegationHash. redeemDelegations is the settlement — the single action that buys the capability.
1Shot — the gas-poor agent on mainnet
On Arbitrum One (mainnet), the consumer holds only USDC and buys the capability paying zero native ETH. 1Shot's permissionless relayer relays both the EIP-7702 upgrade and the ERC-7710 redeemDelegations, with the gas paid as a USDC transfer in the bundle. In the live run the consumer's native ETH was unchanged; gas (~0.019 USDC) was paid by 1Shot's relayer; the consumer was 7702-upgraded; and the slot was granted. (1Shot bounty met: a 7710 transaction relayed through the 1Shot mainnet relayer, with 7702 used to upgrade the account.)
Why it matters
vs the agent-payment field (x402 + signature-based payments): they settle copies of non-rivalrous goods on off-chain trust. Caplane settles a rivalrous capability only one agent can have, and the redeem itself moves the money.
No off-chain party between the agents. Anyone can submit the redeem; no one can censor, reorder, withhold, or seize. The trust surface is the
DelegationManager+ stock enforcers + our enforcer — all stateless-per-redeem on-chain code, walked deterministically at redeem, audited to GO. Not parties; code.
Validation & proof
Built, deployed, tested, audited, and verifiable on public explorers — not a slide.
Security:
contract-auditorverdict GO — 0 Critical / 0 High / 0 Medium on the enforcer, the broker, and the chain. The order binding is fuzz-proven tamper-proof.Tests:
forge test— 208 passing / 1 skipped (21 suites); the off-chain@caplane/sharedpackage 86 / 86, including the live on-chain hash parity.Deployed on Arbitrum Sepolia (421614) and Arbitrum One mainnet (42161) — same audited bytecode on both, on MetaMask's real
DelegationManager0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3.Live, explorer-verifiable settlements:
Single delegation → settle (slot + 3-party split) — Arbitrum Sepolia —
0x39e606192561e77318734eb7cf05bd765b0a49bf16401b7f773d8704b44f54252-hop redelegation chain → settle — Arbitrum Sepolia —
0x84d2683aefc3f6b5e7566d485e26573eeef0f36711e23e373e7469e043f161b6Gas-poor settle relayed by 1Shot (mainnet, gas in USDC) — Arbitrum One —
0x1baf292639d203a01f8114c48e8269b9fbe5242fd07c6f33d3c24f80c9d7aa45
Contracts
Arbitrum Sepolia (421614)
Contract | Address |
|---|---|
|
|
|
|
|
|
Arbitrum One (42161)
Contract | Address |
|---|---|
|
|
|
|
|
|
Shared on both: DelegationManager 0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3, the EIP-7702 implementation 0x63c0c19a282a1B52b07dD5a65b58948A07DAE32B.
Tech stack
Layer | Technology |
|---|---|
Delegation | MetaMask Delegation Toolkit 0.13.0 (ERC-7710 / 7715 / 7702), |
Smart contracts | Solidity 0.8.24, Foundry, OpenZeppelin v5.6.1 |
Gas abstraction | 1Shot permissionless relayer (relays 7710 + 7702, gas paid in USDC) |
Settlement |
|
Off-chain | TypeScript, viem, pnpm workspaces |
Chains | Arbitrum Sepolia (421614), Arbitrum One (42161) |
Project links
How judges should review
forge test→ 208 passing, then read the audit (contracts/AUDIT-A2A.md, GO / 0 crit-high-med).Run the live 2-hop chain:
node agents/scripts/redelegation-chain-live.mjs(Arbitrum Sepolia).Run the gas-poor mainnet run:
node agents/scripts/1shot-mainnet-run.mjs(Arbitrum One, gas in USDC via 1Shot).Verify the three transactions above on Arbiscan — real redelegation chains and a real gas-poor mainnet settle, not a mock.
本次黑客松进展
Built Caplane from scratch
融资状态
Bootstrapped. No external capital raised to date.