Ici, la blockchain ne stocke pas vos données. Elle ne porte qu'une preuve : une empreinte vérifiable qui scelle l'information, sans token, sans donnée personnelle on-chain. Voici précisément ce que cela enregistre, ce qu'est le passeport de lot, et les problématiques que cela résout.
L'erreur courante est de croire qu'on « met le vin sur la blockchain ». On n'y met rien de tout cela — ce serait coûteux, public et impossible à corriger.
La donnée déclarée (nutrition, ingrédients, appellation…) reste chez le producteur — servie par l'application, et pour les pièces jointes éventuellement stockée en adressage par contenu (IPFS). Sur la chaîne, on n'inscrit qu'une empreinte de 32 octets, accompagnée d'un horodatage. Le rôle de la chaîne se résume à répondre, de façon infalsifiable, à une seule question : « ce contenu précis existait-il, et a-t-il été engagé, à cette date ? »
Une seule valeur : l'empreinte cryptographique du document. Rien d'autre.
On calcule d'abord une forme canonique du JSON (JCS, RFC 8785) — mêmes octets quel que soit l'ordre des clés — puis son SHA-256. Le résultat, 0x… sur 32 octets, est l'empreinte. Pour un lot, on inscrit la racine de Merkle de toutes les empreintes du lot.
Ce que cela garantit, concrètement :
L'ancrage n'est pas captif : chaque domaine peut sceller sa propre empreinte avec son propre wallet.
Publie la nomenclature OIV (son empreinte, sa version) et ancre les racines de Merkle des lots. Une racine couvre tout un lot ; chaque e-label du lot reste prouvable individuellement.
Registre public où chaque domaine ancre son empreinte avec sa propre adresse : isAnchored(empreinte) renvoie l'horodatage et l'adresse qui a ancré. C'est ce qui rend l'ancrage réellement décentralisé et non dépendant de XDCellar.
Les deux fonctionnent sur XDC Network, avec un miroir sur XRPL (mémo de transaction) — même empreinte, deux chaînes, pour la redondance de la preuve.
Là où l'e-label prouve une bouteille, le passeport prouve et relie un lot entier.
Le passeport de lot est un Verifiable Credential (VC) W3C 2.0, un document JSON-LD qui contient : la référence de lot, la racine de Merkle du lot, la liste des e-labels qui le composent (identifiant, nom, empreinte), les informations de registre, et — optionnellement — des événements de garde (traçabilité de la chaîne de possession). Il est signé avec la clé Ed25519 de l'émetteur, rattachée à une identité did:web publiée sur le domaine.
Son intérêt tient en trois points :
Sans clé de signature configurée, le passeport reste W3C-valide (non signé) et son empreinte reste ancrable — dégradation propre, jamais de blocage.
Chaque brique répond à un problème concret de la filière.
Le vocabulaire technique de cette page, en clair. Pour aller plus loin : le lexique complet →
Suite de 32 octets (affichée 0x…) obtenue en hachant le document. Elle change entièrement au moindre changement du contenu : c'est le « sceau » que l'on inscrit sur la chaîne.
Fonction de hachage cryptographique : transforme n'importe quel contenu en une empreinte de taille fixe, déterministe et pratiquement impossible à falsifier ou à inverser.
Réécriture normalisée du JSON (ordre des clés, espaces…) pour que le même contenu produise toujours les mêmes octets — condition indispensable à une empreinte reproductible par tous.
Empreinte unique qui résume tout un lot d'empreintes, construite en les hachant deux à deux jusqu'à une seule valeur. Un seul ancrage couvre le lot, et chaque élément reste prouvable individuellement.
« On-chain » = inscrit dans un registre de blockchain, donc public, permanent et daté. L'horodatage fait foi de l'antériorité de la donnée.
Action d'inscrire une empreinte dans un registre on-chain pour sceller un contenu et lui donner une preuve d'antériorité vérifiable.
Contrat qui publie la nomenclature OIV (empreinte + version) et ancre les racines de Merkle des lots.
Registre public d'ancrage ouvert : chaque domaine y inscrit son empreinte avec sa propre adresse ; on lit qui a ancré quoi et quand par un simple appel.
Document vérifiable décrivant un lot de vin : référence, racine de Merkle, e-labels du lot, événements de garde. Voir aussi Verifiable Credential.
Standard ouvert de document numérique vérifiable (JSON-LD) : on peut contrôler qui l'a émis et que son contenu n'a pas été modifié, sans dépendre de l'émetteur.
Identifiant décentralisé rattaché à un nom de domaine : la clé publique de l'émetteur est publiée sur le site (/.well-known/did.json), ce qui permet de vérifier ses signatures et de prouver « qui déclare ».
Algorithme de signature numérique rapide et sûr, utilisé (cryptosuite eddsa-jcs-2022) pour signer le passeport et en garantir l'authenticité.
IPFS (InterPlanetary File System) : stockage où un fichier est désigné par l'empreinte de son contenu (CID) — l'adresse change si le contenu change, ce qui renforce l'intégrité des pièces jointes.
Here, the blockchain does not store your data. It only carries a proof: a verifiable fingerprint that seals the information — token-free, with no personal data on-chain. Here is exactly what that records, what the batch passport is, and the problems it solves.
A common mistake is to think you "put the wine on the blockchain". You put none of that there — it would be costly, public and impossible to correct.
The declared data (nutrition, ingredients, appellation…) stays with the producer — served by the app, and for attachments optionally stored via content addressing (IPFS). On the chain, only a 32-byte fingerprint is written, together with a timestamp. The chain's whole job is to answer, tamper-proof, one single question: "did this exact content exist, and was it committed, on this date?"
A single value: the cryptographic fingerprint of the document. Nothing else.
We first compute a canonical form of the JSON (JCS, RFC 8785) — the same bytes regardless of key order — then its SHA-256. The result, a 32-byte 0x…, is the fingerprint. For a batch, we record the Merkle root of all the batch fingerprints.
What it guarantees, concretely:
Anchoring is not captive: each estate can seal its own fingerprint with its own wallet.
Publishes the OIV nomenclature (its fingerprint, its version) and anchors the batch Merkle roots. One root covers a whole batch; each e-label in the batch remains individually provable.
A public registry where each estate anchors its fingerprint with its own address: isAnchored(fingerprint) returns the timestamp and the address that anchored. This is what makes anchoring truly decentralised and independent of XDCellar.
Both run on XDC Network, with a mirror on XRPL (transaction memo) — same fingerprint, two chains, for proof redundancy.
Where the e-label proves one bottle, the passport proves and links an entire batch.
The batch passport is a W3C 2.0 Verifiable Credential (VC), a JSON-LD document containing: the batch reference, the batch Merkle root, the list of e-labels in it (id, name, fingerprint), the registry information, and — optionally — custody events (chain-of-custody traceability). It is signed with the issuer's Ed25519 key, tied to a did:web identity published on the domain.
Its value comes down to three points:
With no signing key configured, the passport stays W3C-valid (unsigned) and its fingerprint stays anchorable — graceful degradation, never a blocker.
Each building block answers a concrete industry problem.
The technical vocabulary of this page, in plain words. To go further: the full glossary →
A 32-byte string (shown as 0x…) obtained by hashing the document. It changes entirely at the slightest content change: it is the "seal" written on the chain.
A cryptographic hash function: turns any content into a fixed-size fingerprint that is deterministic and practically impossible to forge or reverse.
A normalised rewrite of the JSON (key order, whitespace…) so the same content always yields the same bytes — a prerequisite for a fingerprint anyone can reproduce.
A single fingerprint summarising a whole set of fingerprints, built by hashing them pairwise down to one value. One anchor covers the batch, and each item stays individually provable.
"On-chain" = written into a blockchain ledger, therefore public, permanent and dated. The timestamp evidences the data's anteriority.
Writing a fingerprint into an on-chain registry to seal a content and give it verifiable proof of anteriority.
The contract that publishes the OIV nomenclature (fingerprint + version) and anchors the batch Merkle roots.
A public open-anchoring registry: each estate writes its fingerprint with its own address; you read who anchored what and when with a simple call.
A verifiable document describing a wine batch: reference, Merkle root, batch e-labels, custody events. See also Verifiable Credential.
An open standard for a verifiable digital document (JSON-LD): one can check who issued it and that its content is unaltered, without relying on the issuer.
A decentralised identifier bound to a domain name: the issuer's public key is published on the site (/.well-known/did.json), letting anyone verify its signatures and prove "who declares".
A fast, secure digital-signature algorithm used (eddsa-jcs-2022 cryptosuite) to sign the passport and guarantee its authenticity.
IPFS (InterPlanetary File System): storage where a file is referred to by the fingerprint of its content (CID) — the address changes if the content changes, reinforcing attachment integrity.