Skip to main contentA-REX Core

示意图 · 04

经由 transform 的谱系

transform 是由批次生成批次的唯一方式。它销毁输入、铸造输出并记录父批次;BatchTransformed 与 EPCIS 2.0 TransformationEvent 一一对应。

拆分、合并和加工是同一种操作

flowchart LR
    subgraph SPLIT["重新分批(拆分)· 无需角色 · 商品和单位相同 · 数量守恒"]
        W1["#1 小麦 250 吨"] --> W2["#2 小麦 60 吨"]
        W1 --> W3["#3 小麦 40 吨"]
    end
    subgraph MERGE["重新分批(合并)"]
        M1["#4 咖啡 10 吨"] --> M3["#6 咖啡 25 吨"]
        M2["#5 咖啡 15 吨"] --> M3
    end
    subgraph PROC["加工 · TRANSFORMER_ROLE · 商品或数量发生变化"]
        P1["#2 小麦 60 吨"] --> P2["#7 面粉 45 吨"]
    end

父批次可在链上查询

flowchart TB
    F7["parentsOf(7) → [2]"] --> F2["parentsOf(2) → [1]"] --> F1["parentsOf(1) → []"]

召回时,沿 parentsOf 向后追溯到来源,并沿 BatchTransformed 事件向前追溯到每一个衍生批次。质量平衡审计则把每个加工步骤的输入和输出数量与经认证的比率进行比较。

参考实现所强制执行的规则

规则所在位置
输入必须存在、未被注销,并由 from 持有(或调用者已获 from 授权)transform、_update
重新分批(商品相同、单位相同、Σ 输入 = Σ 输出)无需角色isRebatch 检查
其他任何情形都需要 TRANSFORMER_ROLEtransform
每个输出都记录 parents = inputIds 和 issuer = msg.sender存储
钩子对输入和输出都看到 OP_TRANSFORM_update 上下文