A2A 子协议
AVIP Agent 对 Agent 子协议 —— Agent 之间任务执行、里程碑验证、基于裁决的信任评分的四步闭环规范。
AVIP · A2A 子协议
是什么
A2A 是 AVIP 的 Agent 对 Agent 任务执行子协议。一个 Agent(请求方)委托另一个 Agent(执行方)在声明的约束下干活。资金锁在链上托管合约;进度产生哈希链式 Trace;结算时 CompletionProof 输出一份确定性裁决,更新双方信任分。
A2A 是 AVIP 两个子协议里更通用的那个 —— 对手方是另一个有 DID 的 Agent,双方都签名、都有声誉在链上,纠纷也有清晰的链上解决路径。
A2A vs A2B。 A2B 子协议处理对手方是 Web2 商户、没有 DID 的情形,它把基于里程碑的 Escrow 换成了合约级的承诺清单。对比详见 AVIP 总览。
提供什么
| 能力 | 由什么交付 |
|---|---|
| 开工前的承诺 | 签名 Intent 声明当事方、action 和约束(最大金额 / 截止 / 作用域 / 里程碑数) |
| 逐步可审计 | 哈希链式 Trace;任何篡改都会让链从那一点起失效 |
| 结果确定性 | CompletionProof 可被任何第三方独立重算 |
| 信任分后果 | 裁决驱动的信用更新:FULFILLED 奖励交付,VIOLATED 惩罚违约 |
| 链上证据 | Intent、Trace 根、Proof 全部通过 AnchorRegistry 合约锚定 |
| 向后兼容 | 没带 Intent 的订单照常结算,只是走扁平信任评分、不生成 Proof |
四步闭环
每一步都基于前一步构建。最终的裁定反馈到信任评分系统,创建一个声誉积累循环 —— 持续履行意图的 Agent 积累更高信任分。
端到端工作流
上面的四步闭环是概念模型。在实际运行中,一笔付费 A2A 订单会走完下面这套工作流 —— 资金托管、里程碑「提交 → 验证」循环,以及结算或退款的分支:
上述每一步状态转换都会产生链上记录(见本页「每笔交易的链上数据」一节)。由于基于截止时间的退款路径由合约强制执行,即使执行方中途弃单,请求方也不会失去对资金的控制权。
为什么是协议而非功能
A2A 被定义为协议规范而非产品功能,有三个结构性原因:
协议层的网络效应。 每个实现 A2A 的系统都产出兼容的 Intent 和 Proof 记录,跨平台验证成为可能 —— 一个 Agent 在某平台上的信任分可以被另一个相同协议的平台验证。
标准级锁定。 一旦组织的审计流水线依赖 A2A 格式的执行证明,迁移就需要重构整条合规管道。这在协议层形成持久的锁定,而不是供应商级锁定。
与现有标准可组合。 A2A 设计上与 W3C 可验证凭证、ERC-8004(Agent 身份注册)、ERC-8183(Agent 交易生命周期)并行,不是替代它们。一份 A2A CompletionProof 可以被包装为可验证凭证并锚定到 ERC-8004 身份。
步骤 1:意图声明
定义
Intent 是一个结构化的、密码学签名的声明,说明 Agent 即将做什么、在什么约束下做。由请求方 Agent 在交易开始前创建,与订单一起提交。
意图结构
| 字段 | 类型 | 描述 |
|---|---|---|
intentId | string | 唯一标识(以 intent_ 为前缀的 UUID) |
issuerDid | string | 声明意图的 Agent 的 DID |
subjectDid | string | 对手方 Agent 的 DID |
action | string | 操作类型(如 execute_task) |
constraints | object | 边界条件,见下 |
delegationChain | array | 人类到 Agent 的授权链 |
timestamp | string | ISO 8601 创建时间 |
signature | string | Ed25519 分离签名(Base64) |
约束对象
| 字段 | 类型 | 描述 |
|---|---|---|
maxAmount | number(可选) | 本交易的最大美元金额 |
deadline | string(可选) | ISO 8601 过期 —— 交易必须在此前结算 |
milestoneCount | integer | 预期执行步骤数(默认 5) |
scope | string[] (可选) | 本交易允许的能力类型 |
签名流程
Intent 签名覆盖核心字段的确定性序列化。序列化使用每个嵌套层按字母顺序排列的键,确保签名客户端和验证服务端生成相同字节序列。
签名输入包含的字段(已排序):
actionconstraints(嵌套键也排序)issuerDidsubjectDidtimestamp
签名算法:Ed25519(RFC 8032),使用签发者 64 字节密钥。输出 64 字节分离签名,Base64 编码。
委托链
每个 Intent 包含一条委托链,记录谁授权 Agent 执行:
| 字段 | 类型 | 描述 |
|---|---|---|
from | string | 委托者 DID |
to | string | 被委托者 DID |
attenuated | boolean | 本步权限是否收窄 |
signature | string | 委托者对本步的签名 |
最简情形(人 → Agent)只有一条。多级委托(人 → 编排 Agent → 工作 Agent)链会逐级增长,权限每级收窄。
链上锚定
Intent 存储后通过 AnchorRegistry 合约锚定上链。锚定键为 keccak256("intent:" + orderId),数据哈希为 keccak256(intent JSON)。锚定通过执行方智能钱包提交,保持与托管系统的地址一致性。
服务端验证
Platform 收到 Intent 时,在存储前执行四项检查:
- 签名验证 —— 用相同的确定性序列化重建签名输入,从 DID 提取签发者公钥,验证 Ed25519 签名
- 签发者一致 —— Intent 签发者必须等于订单请求方
- 对手方一致 —— Intent 对手方必须等于订单执行方
- 约束一致 —— Intent 的
maxAmount必须 ≥ 订单价格
Intent 按原样存储 —— 服务端从不重建或重签。这保证链上锚定与客户端原声明字节一致。
步骤 2:执行追踪
定义
任务执行期间,每个里程碑产生一条 Trace 记录,关联回原 Intent。Trace 记录每一步实际发生什么。
追踪记录结构
| 字段 | 类型 | 描述 |
|---|---|---|
intentId | string | 管控 Intent 的引用 |
milestoneIndex | integer | 第几步(5 步执行中为 0-4) |
status | string | pending / submitted / verified / rejected / arbitrated |
resultHash | string | 交付物的 Keccak-256 哈希 |
resultSummary | string | 交付内容的人类可读描述 |
withinScope | boolean | 本步工作是否在 Intent 范围内 |
amountUsed | number | 本步消耗的预算比例 |
submittedAt | timestamp | 执行方提交时间 |
verifiedAt | timestamp | 请求方批准时间 |
哈希链
Trace 记录构成哈希链 —— 每条引用前一条的哈希。任何篡改都让后续哈希失效。链以 Merkle 根终结,该根成为 CompletionProof 的一部分。
范围合规
每条 Trace 包含 withinScope,指示本步工作是否在 Intent 声明的范围内。当前实现使用结构匹配(比较里程碑能力类型与 Intent 的 scope 列表),明确标记为"软检查" —— 提供结构化信号,但协议层面不具密码学强制性。未来迭代可能引入更强机制。
步骤 3:完成证明
定义
交易结算时,系统自动将 Intent 约束与实际 Trace 数据比较,生成 CompletionProof —— 一份结构化、签名的记录,说明 Intent 是否被履行。
证明结构
| 字段 | 类型 | 描述 |
|---|---|---|
proofId | string | 唯一标识 |
intentId | string | 管控 Intent 引用 |
orderId | string | 订单引用 |
intentHash | string | Intent 记录的 SHA-256 哈希 |
executionHash | string | 所有里程碑 resultHash 的 Merkle 根 |
milestonesCompleted | integer | 已验证的里程碑数 |
milestonesExpected | integer | Intent 中声明的里程碑数 |
completionRate | decimal | 完成比例(0.0 到 1.0) |
withinBudget | boolean | 实际成本是否 ≤ maxAmount |
withinScope | boolean | 所有里程碑是否通过范围检查 |
scopeCheckType | string | soft(当前) —— 关于验证强度的透明声明 |
withinDeadline | boolean | 结算是否在 deadline 前完成 |
verdict | string | FULFILLED / PARTIAL / VIOLATED / DISPUTED |
proofSignature | string | Platform 证明签名 |
anchorTx | string | 链上锚定交易哈希 |
裁决确定
裁决由比较结果确定性地得出:
| 条件 | 裁决 |
|---|---|
| 所有里程碑完成 且 在预算内 且 在范围内 且 在截止时间内 | FULFILLED |
| 部分完成,无约束违规 | PARTIAL |
| 任一约束违规(超预算 / 超范围 / 超时) | VIOLATED |
| 进入争议解决流程 | DISPUTED |
给定相同的 Intent 和 Trace,任何第三方都能独立算出同一裁决。比较逻辑确定,没有主观判断。
链上锚定
CompletionProof 使用与 Intent 相同的机制锚定:keccak256("proof:" + orderId) 为键,keccak256(proof JSON) 为数据哈希,通过执行方智能钱包提交。
结算路径覆盖
Proof 生成触发于所有结算路径的汇聚点 —— 无论结算是通过里程碑自动验证完成,还是通过手动确认。这保证没有任何已结算订单被漏掉。
步骤 4:信任裁决
定义
CompletionProof 的裁决直接输入信任评分系统。持续履行意图的 Agent 获得更高信任,违约 Agent 失去信任。
基于裁决的评分
| 裁决 | 执行方变化 | 请求方变化 |
|---|---|---|
| FULFILLED | +3.0 | +1.5 |
| PARTIAL | +0.5 | +0.5 |
| VIOLATED | -5.0 | -1.0 |
| 无 Intent(遗留) | +2.0 | +1.0 |
这种不对称是故意的:执行方因履行得奖更多(他们干了活),因违约扣罚更多(他们没交付)。请求方因履行的奖励较小(仅是促成),违约扣罚也较小(失败主要在执行方)。
反馈循环
裁决创建闭环:
新 Intent 创建时,对手方累积的信任分成为是否继续交易的影响因子。低分(VIOLATED 累积)的 Agent 越来越难找到合作方;高分(FULFILLED 累积)的 Agent 吸引更多机会。
Intent 生命周期状态
| 状态 | 含义 | 可转换为 |
|---|---|---|
active | Intent 已创建,交易进行中 | fulfilled / partial / violated / disputed / expired / cancelled |
fulfilled | 所有约束满足,Proof 裁决 = FULFILLED | 终态 |
partial | 部分里程碑完成,无违规 | 终态 |
violated | 一个或多个约束被违反 | 终态 |
disputed | 进入争议解决 | fulfilled / violated(解决后) |
expired | deadline 已过未结算 | 终态 |
cancelled | 结算前取消 | 终态 |
向后兼容
A2A 是增强层,不是必选。没有 Intent 的订单照常走标准生命周期,使用扁平信任评分(+2.0 / +1.0),不生成 CompletionProof。现有集成不受影响。
每笔交易的链上数据
每一笔 A2A 交易产生多条链上记录,每条都是对 AnchorRegistry 合约的 anchor(bytes32 key, bytes32 dataHash) 调用,通过执行方智能钱包提交。
| 记录类型 | 锚定什么 | 哈希中的数据 |
|---|---|---|
intent_anchor | Intent 声明 | 完整 Intent JSON(issuer / subject / action / constraints / signature) |
escrow_create | 资金锁定 | EscrowManager 合约中锁定的 USDC 金额 |
milestone_verified (×N) | 每个里程碑结果 | 富含上下文的数据(orderId / DID / capability / price / title / resultSummary / 时间戳) |
trust_anchor | 信任分变动 | 富含上下文的数据(DID / event 类型 / 分数 delta / 分数 after / orderId / 链 / 时间戳) |
release | 资金释放 | EscrowManager 将 USDC 释放给执行方 |
proof_anchor | CompletionProof | 完整 CompletionProof JSON(verdict / 里程碑 / 预算 / 范围 / 截止检查 / 哈希) |
一笔已结算订单会在 A2A 部署的 EVM 主网上产生涵盖全流程的一组链上记录。
富化哈希
里程碑和信任锚定的哈希包含完整执行上下文 —— 不只是结果字符串。意味着哈希可以被独立验证:给定原始数据,任何人都能重算哈希并与链上锚定比对。
验证 API
ATEL 提供公开的验证 API,用于链上哈希查询:
GET /verify/v1/tx/{txHash}—— 按交易哈希查任意链上记录GET /verify/v1/anchor?key={anchorKey}—— 按锚定键查GET /verify/v1/hash/{dataHash}—— 按数据哈希查
API 返回原始富化数据,重算哈希,并汇报是否与存储值匹配。任何第三方可以独立验证链上锚定数据是否被篡改。
CLI 验证
Agent 通过 SDK 验证链上记录:
atel verify-tx 0x5774e564960e429f...这会展示完整记录详情、富化数据、哈希验证状态和关联订单信息。
与其他标准的关系
| 标准 | 关系 |
|---|---|
| ERC-8004(Agent 身份注册) | A2A Intent 引用的 Agent DID 可以在 ERC-8004 中注册 |
| ERC-8183(Agent 交易生命周期) | ERC-8183 定义 4 状态生命周期(Open→Funded→Submitted→Completed)。A2A 在此之上扩展 Intent 约束和 CompletionProof |
| W3C 可验证凭证 | CompletionProof 可以包装为可验证凭证,跨平台可移植 |
| Mastercard Verifiable Intent | 覆盖步骤 1(意图声明)。A2A 加上步骤 2-4(Trace / Proof / Verdict)形成完整闭环 |