AVIP 规范
A2B 子协议 (AVIP-A2B)
Agent 对 Business 子协议的规范 profile —— 由哪些 AVIP 组件组合而成,以及端到端场景。
A2B Profile —— AVIP-A2B
A2B 是一个 profile,用于"AI Agent 代表用户或企业向 Web2 商户付款"的情形。对手方有公开 API 或 webhook,但没有 DID、没有链上身份、没有签名。这个 profile 的任务是约束 Agent 和平台,使不可信的 Web2 一侧拿不走用户资金,也无法让用户求告无门。
概念性总览见 协议 · A2B 子协议。本页是组件级 profile。
组件组合
| 阶段 | 组件 | 在 A2B 中的角色 |
|---|---|---|
| 身份 | AVIP-ID-DID、AVIP-ID-SIG、AVIP-ID-SA | 只有 Agent 签名;用户智能账户是退款目的地 |
| 声明 | AVIP-INT-DECL(+A2B 字段)、AVIP-INT-CON、AVIP-INT-VER | 意图声明 maxAmount、deadlineUnix、allowedTools、requiresConfirmAbove、userSA |
| 托管 | AVIP-SET-CHK | A2BOrderGateway 五格提交清单 |
| 执行 | AVIP-EXE-GW、AVIP-EXE-TR | 每次工具调用都被策略门控;每次调用一条 ActionTrace |
| 结算 | AVIP-AUD-MK、AVIP-AUD-PRF、AVIP-AUD-ANC | CompletionProof 锚定审计 root + 裁决 |
| 退款 | AVIP-SET-EXP | expireOrder 在截止后无许可退款 |
三幕流程
每一幕都产出链上证据。任一幕失败或超时,资金路径都默认退款 —— 用户从不失去托管。
Normative Requirements
- 意图 MUST 用
allowedTools白名单工具;Action Gateway MUST 拒绝白名单外的任何调用。 - 在存在一张金额 ≤ 充值的已提交 invoice 之前,资金 MUST NOT 到达商户;支付 MUST 由已提交 invoice 的字段构造。
- 合约 MUST 拒绝乱序的格迁移。
deadlineUnix之后,expireOrderMUST 可被任何人调用,且 MUST 退回userSA。- 商户交付物 MUST 用信封加密密封;链上只锚定密文哈希。
场景走查
设定。 用户让其 Agent 买一张 5 USDC 礼品卡。Agent 以其 DID 行动;用户智能账户 userSA 是退款目的地。
- 声明。 Agent 签一份 A2B 意图(
category = gift_card,maxAmount = 5,deadlineUnix,allowedTools = [wallet.deposit, bitrefill.createInvoice, ...],userSA)。AVIP-INT-VER后,平台调A2BOrderGateway.createOrder(intentHash, ...)。状态 →CREATED。 - 注资。
userSA向合约充值 USDC。状态 →FUNDED。 - 门控与提交。 Agent 调工具;每次都经
AVIP-EXE-GW,产一条 ActionTrace(allow / deny / pending_user_confirm)。商户 invoice 链上提交(commitInvoice)。状态 →INVOICE_COMMITTED。 - 支付。 合约用已提交 invoice 字段构造并执行支付;审计 root(全部 ActionTrace 的 Merkle root)被锚定。状态 →
PAID。 - 交付与密封。 商户确认交付。一份 CompletionProof(
intentHash、auditRoot、deliveryHash、verdict = DELIVERED)锚在keccak256("proof:a2b:" + intentHash)。礼品卡码被密封到用户公钥;链上只存密文哈希。状态 →DELIVERED。
失败 / 超时分支。 若商户失败(FAILED)或截止已过(EXPIRED),AVIP-SET-EXP 把充值退回 userSA,不依赖平台、Agent 或商户。
链上记录
| 记录 | Anchor key | 数据 |
|---|---|---|
createOrder | intentHash | 意图哈希 + 用户 SA + max + deadline |
depositOrder | intentHash | 充值金额(USDC) |
commitInvoice | intentHash | 商户地址 + 金额 + 选择哈希 + invoice 哈希 |
executePayment | intentHash | 审计 root(全部 ActionTrace 的 Merkle root) |
confirmDelivery | intentHash | 交付哈希 + 成功标志 |
CompletionProof | keccak256("proof:a2b:" + intentHash) | 完整 CompletionProof JSON |
一笔已交付订单约产生六次链上迁移,外加 CompletionProof 锚定。
零信任审计
三条审计命令都对公开端点和链只读,无需平台认证(AVIP-AUD-VFY):
atel bitrefill verify-intent <intentId> # 签名 + 链上 order 匹配
atel bitrefill audit <intentId> # 重算 Merkle root 对链上 auditRoot
atel bitrefill proof <intentId> # 解码 CompletionProof 对平台裁决与 A2A 的分歧
| 方面 | A2A | A2B |
|---|---|---|
| 对手方 | 签名 Agent(DID) | Web2 商户(无 DID) |
| 执行模型 | 里程碑验证 | 经合约清单的原子操作 |
| 放款 | 双边 escrow(EscrowManager) | 五格清单(A2BOrderGateway) |
| 争议 | 仲裁(AVIP-SET-DSP) | 截止 expireOrder 退款(AVIP-SET-EXP) |
| 信任反馈 | 双边分数调整 | 单边:给用户的审计证明、给商户的交付证明 |
两个 profile 共用同一套身份、锚定、证明结构和超时逃生口 —— 下游消费者可统一对待它们的证据。