审计域(AVIP-AUD)
AVIP 审计的规范说明 —— Merkle 承诺、证明包、链上锚定与独立验证。
审计域 —— AVIP-AUD
审计域把一次执行变成任何人都能核对的证据。它把执行记录承诺为一个 Merkle root,打包一份签名证明,把一个定长承诺锚上链,并提供一条无需信任任何单一方的验证路径。
| 组件 | 编码 | 用途 |
|---|---|---|
| Merkle 承诺 | AVIP-AUD-MK | 对任意长记录的定长承诺 |
| 证明 / Completion Proof | AVIP-AUD-PRF | 一次执行的签名、自包含证明 |
| 链上锚定 | AVIP-AUD-ANC | 对承诺的一次性链上记录 |
| 独立验证 | AVIP-AUD-VFY | 从公开数据重算任意被锚定的结果 |
AVIP-AUD-MK —— Merkle 承诺
Purpose
把任意长的执行记录压成一个 32 字节的 root,承诺到每一个事件。
Normative Requirements
- 叶子 MUST 是按序号排列的事件
hash字段。 - 内部节点 MUST 为
SHA-256(left || right)。 - 当某层节点数为奇数,末节点 MUST 在哈希前被复制。
- Merkle 证明 MUST 由每层的兄弟哈希及其位置组成,足以从单个叶子重算 root。
构造
Merkle 证明步
| 字段 | 类型 | 说明 |
|---|---|---|
hash | string | 兄弟节点哈希 |
position | "left" / "right" | 兄弟在哪一侧 |
验证:从叶子哈希起,按序与每个兄弟组合(注意位置),把结果与 root 比对。
AVIP-AUD-PRF —— 证明 / Completion Proof
Purpose
一次执行的自包含、签名证明。存在两个相关结构:ProofBundle(执行方签名的执行记录包)和 Completion Proof(结算时产生的确定性结果记录)。两者都被锚定且可独立验证。
Normative Requirements
- ProofBundle MUST 用执行方的 Ed25519 密钥,对除
signature外全部字段的确定性序列化签名。 - 引用哈希(
policy_ref、consent_ref、result_ref)MUST 存在且非空。 - Completion Proof 的
verdictMUST 由意图与记录确定性地计算,使任意一方都算出相同裁决。
Data Structures
ProofBundle
| 字段 | 类型 | 说明 |
|---|---|---|
proof_id | string | UUID |
version | string | 格式版本(proof.bundle.v0.1) |
executor | string | Agent DID(含公钥) |
task_id | string | 任务标识 |
trace_root | string | 所有记录事件哈希的 Merkle root |
trace_length | integer | 事件总数 |
checkpoints | array | 检查点引用(seq, hash, sig) |
policy_ref | string | 治理策略的 SHA-256 |
consent_ref | string | consent token 的 SHA-256 |
result_ref | string | 任务结果的 SHA-256 |
attestations | array | 额外验证信号 |
created_at | string | ISO 8601 |
signature | object | { alg: "Ed25519", sig: <base64> } |
Completion Proof(A2A)
| 字段 | 类型 | 说明 |
|---|---|---|
proofId / intentId / orderId | string | 标识 |
intentHash | string | 意图的 SHA-256 |
executionHash | string | 里程碑结果哈希的 Merkle root |
milestonesCompleted / milestonesExpected | integer | 计数 |
completionRate | decimal | 完成 / 预期(0.0–1.0) |
withinBudget / withinScope / withinDeadline | boolean | 约束检查 |
scopeCheckType | string | soft(当前) |
verdict | string | FULFILLED / PARTIAL / VIOLATED / DISPUTED |
proofSignature | string | 平台背书签名 |
anchorTx | string | 链上锚定交易 |
Completion Proof(A2B) 携带 intentHash、auditRoot、deliveryHash、verdict(DELIVERED / FAILED / EXPIRED)和 anchorTx。
裁决判定(A2A)
| 条件 | 裁决 |
|---|---|
| 全部里程碑完成 且 在预算内 且 在范围内 且 在截止内 | FULFILLED |
| 部分里程碑完成,无约束违反 | PARTIAL |
| 任一约束被违反(超预算、越范围、过截止) | VIOLATED |
| 进入争议裁决 | DISPUTED |
验证检查
一致性验证方执行至多七项检查;前四项只需 bundle,后三项需完整记录:
| # | 检查 | 需要记录 |
|---|---|---|
| 1 | structure —— 必填字段齐全 | 否 |
| 2 | bundle_signature —— 对执行方密钥有效 | 否 |
| 3 | checkpoints —— 每个检查点签名有效 | 否 |
| 4 | references —— policy_ref / consent_ref / result_ref 非空 | 否 |
| 5 | trace_hash_chain —— 每个事件哈希与 prev 正确 | 是 |
| 6 | merkle_root —— 重算 root 与 bundle 一致 | 是 |
| 7 | trace_length —— 事件计数一致 | 是 |
仅 bundle 验证(1–4)无需记录即可完成;完整验证(1–7)需要记录。
AVIP-AUD-ANC —— 链上锚定
Purpose
AnchorRegistry 合约把一个 key→hash 对一次性写上链,提供不可变、带时间戳的承诺。
Normative Requirements
- 一个 key 的锚定 MUST 一次写入,没有更新或删除路径。
- 只有预注册的 executor 地址 MUST 能调用
anchor。 - 依赖锚定的放款(
AVIP-SET-ESC)MUST 确认锚定的存在性、proofHash 匹配和 executor 匹配。
Data Structures
Anchor 记录
| 字段 | 类型 | 说明 |
|---|---|---|
proofHash | bytes32 | 证明 Merkle 树的 SHA-256 root |
executor | address | 提交锚定的地址 |
timestamp | uint256 | 锚定时的区块时间戳 |
exists | bool | 是否已写入 |
State Machine
On-Chain Mapping
| 函数 | 访问 |
|---|---|
anchor(key, hash) | 仅注册 executor |
verify(key, hash, executor) → bool | 公开(view) |
getAnchor(key) → (proofHash, executor, timestamp, exists) | 公开(view) |
Events:Anchored(orderId, proofHash, executor, timestamp)。key 按记录类型派生 —— 如 keccak256("intent:" + orderId)、keccak256("proof:" + orderId)、orderId:milestoneIndex、信任锚定用 did:timestamp。
AVIP-AUD-VFY —— 独立验证
Purpose
任意第三方从公开数据重算任意被锚定结果的路径,无需平台认证、无需可信中间人。
Normative Requirements
- 验证过程 MUST 无状态、确定性:相同输入对任意验证方产出相同结果。
- 对公开锚定的验证 MUST NOT 需要平台认证。
- 对每个只存哈希的链上锚定,其背后的富化数据 MUST 可被取回,以便重算哈希并比对。
验证 API
| 端点 | 查询依据 |
|---|---|
GET /verify/v1/tx/{txHash} | 交易哈希 |
GET /verify/v1/anchor?key={anchorKey} | Anchor key |
GET /verify/v1/hash/{dataHash} | 数据哈希 |
API 返回原始富化数据,重算哈希,并报告是否与链上锚定一致。
CLI 验证
# 通用链上记录查询
atel verify-tx 0x5774e564960e429f...
# A2B 零信任审计(只读,无需平台认证)
atel bitrefill verify-intent <intentId> # 签名 + 链上 order 匹配
atel bitrefill audit <intentId> # 本地重算 Merkle root 对链上 auditRoot
atel bitrefill proof <intentId> # 解码 CompletionProof 对平台裁决所有审计命令都对公开端点和区块链运行,无需平台认证 —— 用户只凭一个 intent ID 就能跑。