ATEL
AVIP 规范

结算域(AVIP-SET)

AVIP 结算的规范说明 —— 资金托管、提交清单、超时自助退款与争议裁决。

结算域 —— AVIP-SET

结算域管的是价值如何在合约控制下移动。资金由链上合约持有,任何单一方 —— 包括平台 operator —— 都无法在本域所述规则之外把它取走。存在两种托管模型(每个子协议一种),外加一个超时逃生口和一条链上争议路径。

组件编码用途
托管 EscrowAVIP-SET-ESCAgent 对 Agent 工作的双边托管
提交清单AVIP-SET-CHKAgent 对 Business 支付的逐格门控资金流
超时自助退款AVIP-SET-EXP截止后无需许可的退款
争议裁决AVIP-SET-DSP链上仲裁,资金移动原子完成

AVIP-SET-ESC —— 托管 Escrow

Purpose

EscrowManager 合约在 requester 与 executor 之间托管 ERC-20 资金(通常是 USDC),只在证明验证通过后放款,或在失败、过期、争议时退款。

Normative Requirements

  • 创建 escrow MUST 要求一个有效的 operator 签名,绑定 orderId、双方、token、金额、手续费和 nonce。
  • 每个 nonce MUST 只能消费一次(防重放)。
  • 放款 MUST 先对 AnchorRegistry 验证执行证明,再分发资金。
  • 任何一方 —— requester、executor 或 operator —— 都 MUST NOT 能在放款 / 退款 / 争议 / 过期路径之外单方移动资金。
  • 截止之后,退款 MUST 可被无许可调用(refundExpired)。

Data Structures

Escrow 记录

字段类型说明
requesteraddress锁仓方
executoraddress成功时收款方
tokenaddressERC-20 token(如 USDC)
amountuint256锁定总额(含平台手续费)
platformFeeuint256预留给平台的部分
proofHashbytes32放款时写入;链向 AnchorRegistry
statusStatus当前状态
createdAtuint256创建区块时间戳
deadlineuint256createdAt + 7 天

Status 枚举

值数字含义
None0不存在
Funded1资金已锁,任务进行中
Frozen2已起争议,资金冻结
Released3已分发(终止)
Refunded4已退回 requester(终止)

State Machine

createEscrow()freeze()release()(+ anchor 验证)refundExpired()(截止之后)splitRelease()refund()NoneFundedFrozenReleasedRefunded

Error Conditions

条件结果
operator 签名无效 / 重复使用createEscrow revert
未锚定证明就放款release revert
非 operator 在截止前退款revert

On-Chain Mapping

函数访问
createEscrow(orderId, executor, token, amount, fee, nonce, sig)任何持有效 operator 签名者
release(orderId, proofHash)仅 operator(验证 anchor)
refund(orderId)operator 或 DisputeController
refundExpired(orderId)任何人,截止之后
freeze(orderId)operator 或 DisputeController
splitRelease(orderId, requesterShare, deductFee)operator 或 DisputeController

Events:EscrowCreated、EscrowReleased、EscrowRefunded、EscrowFrozen。完整接口见 Pro File · 智能合约。


AVIP-SET-CHK —— 提交清单

Purpose

A2BOrderGateway 合约为 Agent 对 Business 支付强制一个固定有序的资金格序列。只有前面每个格都按序填满,商户才可能被付款。

Normative Requirements

  • 合约 MUST 拒绝任何不按格序的迁移。
  • 在存在一张金额 ≤ 充值的已提交 invoice 之前,资金 MUST NOT 到达商户。
  • 支付交易 MUST 由已提交 invoice 的字段构造,使任何一方都无法替换目的地或金额。

State Machine

CREATED意图已签FUNDED用户 SA 充值 USDCINVOICE_COMMITTED商户收款地址+ invoice 哈希已提交PAID支付已执行DELIVERED交付已确认,审计 root 已锚定

终止状态

格达到条件
DELIVERED商户交付确认;审计 root 已锚定
FAILED商户报告失败;资金路径重新开放退款
EXPIRED截止已过未完成;expireOrder 被调用

On-Chain Mapping

迁移Anchor key数据
createOrderintentHash意图哈希 + 用户 SA + max + deadline
depositOrderintentHash充值金额(USDC)
commitInvoiceintentHash商户地址 + 金额 + 选择哈希 + invoice 哈希
executePaymentintentHash审计 root(全部 ActionTrace 的 Merkle root)
confirmDeliveryintentHash交付哈希 + 成功标志

AVIP-SET-EXP —— 超时自助退款

Purpose

通用逃生口:订单截止后,任何人都能触发退回用户,完全不依赖平台、Agent 或商户在线。

Normative Requirements

  • A2BOrderGateway.expireOrder(intentHash) MUST 可被任何人调用。
  • 合约 MUST 在动作前校验 block.timestamp > deadline。
  • 过期时,被充值的资金 MUST 转回用户智能账户(userSA)。

语义

expireOrder(intentHash):
  require block.timestamp > deadline
  order.status = EXPIRED
  transfer(deposit) → userSA

托管模型里由 refundExpired(AVIP-SET-ESC)提供同样的活性。只要世界上还有一个 EVM 兼容节点,用户就能取回资金 —— 这就是协议层"抗跑路"的含义。


AVIP-SET-DSP —— 争议裁决

Purpose

DisputeController 冻结被争议的 escrow,从双方收集证据哈希,并通过指挥 EscrowManager 执行仲裁人的裁决 —— 全程在链上,使裁决与其资金移动原子完成。

Normative Requirements

  • 开启争议 MUST 立即冻结 escrow(AVIP-SET-ESC → Frozen)。
  • 只有获授权的仲裁人 MUST 能 resolve 争议。
  • 若仲裁人在 DISPUTE_TIMEOUT(7 天)内未裁决,任何人 MUST 能调用 resolveExpired 退回 requester(失败安全)。
  • 一次裁决 MUST 在单笔交易内记录决定并分发资金。

Data Structures

争议记录

字段类型说明
orderIdbytes32被争议的 escrow
initiatoraddress开启争议方
initiatorEvidencebytes32发起方证据哈希
respondentEvidencebytes32应答方证据哈希
statusDisputeStatusNone / Open / Resolved
decisionDecision结果
openedAtuint256提交时间
resolvedAtuint256裁决时间

Decision 枚举

值资金分配
RequesterWins100% 给 requester,不扣手续费
ExecutorWins100% 给 executor,扣手续费
Split五五分,从 executor 份额扣手续费
Cancelled(超时)100% 退回 requester

证据以哈希(bytes32)存储,内容在链下。这样 gas 低,也避免把可能敏感的争议细节发到公链。

State Machine

openDispute()resolve()(仲裁人)resolveExpired()(7 天之后)NoneOpenResolved(RequesterWins / ExecutorWins/ Split / Cancelled)Resolved(Cancelled → 退款)

On-Chain Mapping

裁决EscrowManager 调用
RequesterWinssplitRelease(orderId, fullAmount, false)
ExecutorWinssplitRelease(orderId, 0, true)
SplitsplitRelease(orderId, amount/2, true)
Cancelled(超时)refund(orderId)

Events:DisputeOpened、EvidenceSubmitted、DisputeResolved。完整接口见 Pro File · 智能合约。

On this page