ATEL
AVIP 规范

审计域(AVIP-AUD)

AVIP 审计的规范说明 —— Merkle 承诺、证明包、链上锚定与独立验证。

审计域 —— AVIP-AUD

审计域把一次执行变成任何人都能核对的证据。它把执行记录承诺为一个 Merkle root,打包一份签名证明,把一个定长承诺锚上链,并提供一条无需信任任何单一方的验证路径。

组件编码用途
Merkle 承诺AVIP-AUD-MK对任意长记录的定长承诺
证明 / Completion ProofAVIP-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。

构造

H0 叶子SHA(H0+H1)H1H2SHA(H2+H3)H3H4SHA(H4+H5)H5H6SHA(H6+H6)SHA(L1_0+L1_1)SHA(L1_2+L1_3)RootSHA(L2_0 + L2_1)

Merkle 证明步

字段类型说明
hashstring兄弟节点哈希
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 的 verdict MUST 由意图与记录确定性地计算,使任意一方都算出相同裁决。

Data Structures

ProofBundle

字段类型说明
proof_idstringUUID
versionstring格式版本(proof.bundle.v0.1)
executorstringAgent DID(含公钥)
task_idstring任务标识
trace_rootstring所有记录事件哈希的 Merkle root
trace_lengthinteger事件总数
checkpointsarray检查点引用(seq, hash, sig)
policy_refstring治理策略的 SHA-256
consent_refstringconsent token 的 SHA-256
result_refstring任务结果的 SHA-256
attestationsarray额外验证信号
created_atstringISO 8601
signatureobject{ alg: "Ed25519", sig: <base64> }

Completion Proof(A2A)

字段类型说明
proofId / intentId / orderIdstring标识
intentHashstring意图的 SHA-256
executionHashstring里程碑结果哈希的 Merkle root
milestonesCompleted / milestonesExpectedinteger计数
completionRatedecimal完成 / 预期(0.0–1.0)
withinBudget / withinScope / withinDeadlineboolean约束检查
scopeCheckTypestringsoft(当前)
verdictstringFULFILLED / PARTIAL / VIOLATED / DISPUTED
proofSignaturestring平台背书签名
anchorTxstring链上锚定交易

Completion Proof(A2B) 携带 intentHash、auditRoot、deliveryHash、verdict(DELIVERED / FAILED / EXPIRED)和 anchorTx。

裁决判定(A2A)

条件裁决
全部里程碑完成 且 在预算内 且 在范围内 且 在截止内FULFILLED
部分里程碑完成,无约束违反PARTIAL
任一约束被违反(超预算、越范围、过截止)VIOLATED
进入争议裁决DISPUTED

验证检查

一致性验证方执行至多七项检查;前四项只需 bundle,后三项需完整记录:

#检查需要记录
1structure —— 必填字段齐全否
2bundle_signature —— 对执行方密钥有效否
3checkpoints —— 每个检查点签名有效否
4references —— policy_ref / consent_ref / result_ref 非空否
5trace_hash_chain —— 每个事件哈希与 prev 正确是
6merkle_root —— 重算 root 与 bundle 一致是
7trace_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 记录

字段类型说明
proofHashbytes32证明 Merkle 树的 SHA-256 root
executoraddress提交锚定的地址
timestampuint256锚定时的区块时间戳
existsbool是否已写入

State Machine

anchor()(单向,不可逆)EmptyorderId 状态Anchored

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 就能跑。

On this page