3.1 Deterministic Finite State Machine (DFSM)

在 OES 中,我们不仅将状态机视为一种代码模式,更将其视为一种数学约束。我们定义了一个五元组自动机 来形式化描述担保流程:

M=(Q,Σ,δ,q0,F)M = (Q, \Sigma, \delta, q_0, F)

3.1.1 Mathematical Definition of States

  • $Q$ (有限状态集合): 协议中所有可能的合法状态。

Q={Sinit,Slock,Sdel,Sdisp,Sfin,Svoid}Q = \{S_{init}, S_{lock}, S_{del}, S_{disp}, S_{fin}, S_{void}\}
  • (Initialized): 合约实例化,参数已配置,等待注资。

  • (Locked): 买方资金已存入 Vault,担保生效。

  • (Delivered): 卖方提交了链上履约凭证 (Proof of Delivery)。

  • (Disputed): 争议被触发,合约挂起,控制权移交 DAN。

  • (Finalized): 正常结案,资金流向卖方。

  • (Voided): 交易取消或仲裁判定退款,资金回流买方。

  • (初始状态):

  • (终止状态集合): 。一旦进入该集合,状态即不可变 (Immutable)。

3.1.2 Transition Function

转移函数 定义了合法的状态流转路径。任何未在该函数中定义的转换尝试都将被智能合约的 require() 语句拦截并回滚 (Revert)。

核心转移逻辑如下:

1.锁定转换 (Locking Transition):

δ(Sinit,Deposit)Slock\delta(S_{init}, \text{Deposit}) \rightarrow S_{lock}

约束条件: msg.value >= amount 或 token.transferFrom 成功。

2.交付转换 (Delivery Transition).

δ(Slock,SubmitProof)Sdel\delta(S_{lock}, \text{SubmitProof}) \rightarrow S_{del}

约束条件: 仅卖方可调用,且 block.timestamp < deliveryDeadline。

3.原子结算转换 (Settlement Transition):

δ(Sdel,Confirm)Sfin\delta(S_{del}, \text{Confirm}) \rightarrow S_{fin}

约束条件: 买方签名确认 或 block.timestamp > inspectionPeriod (自动验收)。

4.争议中断 (Dispute Interrupt):

δ({Sdel,Slock},RaiseDispute)Sdisp\delta(\{S_{del}, S_{lock}\}, \text{RaiseDispute}) \rightarrow S_{disp}

约束条件: 在 inspectionPeriod 内,且双方均未确认。

3.1.3 Atomic Swap Implementation

OES 利用区块链的原子性特性,实现了 Conditional Asset Swap 。与传统的 Hash Time-Locked Contracts (HTLC) 仅依赖哈希原像不同,OES 扩展了触发条件。

Solidity Style Pseudocode:

Solidity

Security Properties:

  • Idempotency: 由于在第 4 步状态被修改为 FINALIZED,即使攻击者再次调用该函数,也会在第 2 步 require 处失败。这保证了资金只能被释放一次。

  • 交付即付款 (Delivery-versus-Payment, DvP): 资金释放的唯一前提是状态机已成功流转至 (意味着卖方已提交证据)。数学上保证了买方不可能在卖方未提交动作前提取资金(除非超时退款)。