Diagrammes · 04
Filiation via transform
transform est le seul moyen de fabriquer un lot à partir d'un lot. Elle détruit les entrées, émet les sorties et enregistre les parents ; BatchTransformed correspond un pour un à un TransformationEvent d'EPCIS 2.0.
Fractionnement, fusion et traitement forment une seule opération
flowchart LR
subgraph SPLIT["Réorganisation (fractionnement) · aucun rôle nécessaire · même denrée et même unité · quantité conservée"]
W1["#1 blé 250 t"] --> W2["#2 blé 60 t"]
W1 --> W3["#3 blé 40 t"]
end
subgraph MERGE["Réorganisation (fusion)"]
M1["#4 café 10 t"] --> M3["#6 café 25 t"]
M2["#5 café 15 t"] --> M3
end
subgraph PROC["Traitement · TRANSFORMER_ROLE · la denrée ou la quantité change"]
P1["#2 blé 60 t"] --> P2["#7 farine 45 t"]
endLes parents sont interrogeables on-chain
flowchart TB
F7["parentsOf(7) → [2]"] --> F2["parentsOf(2) → [1]"] --> F1["parentsOf(1) → []"]Un rappel remonte parentsOf jusqu'à l'origine et parcourt les événements BatchTransformed vers l'aval jusqu'à chaque lot dérivé. Un audit de bilan massique compare les quantités d'entrée et de sortie de chaque étape de traitement au ratio certifié.
Règles appliquées par la référence
| Règle | Où |
|---|---|
Les entrées doivent exister, ne pas être retirées et être détenues par from (ou par l'appelant approuvé par from) | transform, _update |
| La réorganisation de lots (même denrée, même unité, Σ entrées = Σ sorties) ne nécessite aucun rôle | vérification isRebatch |
Tout le reste exige TRANSFORMER_ROLE | transform |
Chaque sortie enregistre parents = inputIds et issuer = msg.sender | stockage |
Les hooks voient OP_TRANSFORM pour les entrées et les sorties | contexte de _update |