Le fonctionnement de ChainProof
Le mécanisme derrière la démo, pour l'auditeur qui doit s'y fier et le développeur qui doit l'intégrer.
01
Entrées et garde
Un lot est une chaîne d'entrées. La première est l'enregistrement du producteur; chaque entrée suivante (passation, point de contrôle, relevés scellés) est signée par l'organisation qui la produit et contient l'empreinte de l'entrée précédente.
Une seule organisation a la garde à un moment donné. La garde est un pointeur inscrit au registre, et elle ne change de main que par le protocole de passation décrit plus bas.
02
Le protocole de passation
Une passation, c'est deux signatures, pas une. L'expéditeur signe ce qui part : le destinataire, le compte et le numéro de scellé. Tant que le destinataire n'a pas répondu, la garde reste à l'expéditeur, qui peut encore annuler.
Le destinataire signe ce qui arrive. Il accepte si tout concorde, accepte avec un écart si quelque chose cloche (le compte, le scellé, un signalement de température) ou refuse, et la garde reste où elle était. Dans tous les cas, l'écart est inscrit par la partie qui l'a constaté, au moment où elle l'a constaté.
Envoyée
l'expéditeur signe compte + scellé
- Acceptéela garde change de mainReçu
- Acceptée avec écartla garde change de mainÉcart
- Refuséela garde resteRefusé
- Annuléela garde reste
03
Sceller les relevés de capteurs
Un enregistreur voyage avec le lot. Ses relevés restent hors chaîne; quand le gardien les scelle, une seule empreinte racine de tous les relevés est ancrée dans une entrée.
Toute période hors de la plage permise devient une entrée d'écart dans la même transaction. Elle ne peut pas être retirée. Les parties suivantes peuvent y répondre, et le prochain destinataire voit le signalement avant de signer.
04
Comment une étiquette est vérifiée
Le code QR ne contient que le code de lot. La page du passeport récupère les entrées du lot, recalcule chaque empreinte à partir de son contenu et de l'empreinte précédente, puis compare le résultat à l'empreinte ancrée on-chain.
Si quelqu'un modifie une entrée après sa signature (un compte, une date, un lieu), cette entrée et toutes les suivantes cessent de concorder. Une étiquette dont le code n'est pas au registre est affichée comme suspecte.
Entrée 1
prev 0x000000…0000
hash 0x-45021…5bdf
Entrée 2
prev 0x-45021…5bdf
hash 0x-423bc…33f5
Entrée 3modifiée
prev 0x-423bc…33f5
hash 0x-47e70…cafc
Entrée 4
prev 0x-47e70…cafc
hash 0x-16b1f…be4c
05
Ce qui reste privé
Seules des empreintes sont inscrites on-chain : empreintes d'entrées, racines de relevés, signatures et pointeur de garde. Prix, contrats, documents et relevés bruts restent dans les systèmes de chaque partie et peuvent être divulgués au cas par cas à un auditeur, qui les compare aux empreintes ancrées.
06
Le format d'une entrée
Toutes les entrées ont la même forme. Une intégration (ERP, lecteurs d'entrepôt, flux GS1 EPCIS) n'a qu'à produire cet objet et à signer son empreinte.
{
"batchId": "HU-2584",
"seq": 6,
"kind": "handoff-accepted",
"actor": "flv",
"counterparty": "trc",
"at": "2026-08-19T11:15:00-04:00",
"place": "Port of Montréal, QC",
"data": {
"count": 60,
"seal": "MSKU-5531907",
"sealOk": true
},
"prevHash": "0x-27a5f8541ca0fbee-1dbba79a7769292016fb5ec5-fd08638-544ff429-64789a9d",
"hash": "0x-47cd826d-5255cc4d-1e79c730-41c7dc91-6a95a092-471186d077d97da4-2bda17be",
"txHash": "0x-b5facfa-5305307e5b64afaa29b7617e7a1052af-30f78950-3ab14306-4d364220",
"block": 4760575
}