Pièces enregistrées par lot (mode ancré)

Pour les marques à gros volumes en QR : chaque lot est inscrit sur la blockchain en une seule écriture, et le jeton d'une pièce n'est créé que lorsque son acheteur la revendique.

Sur cette page

En quittant cette page, vous saurez ce que change le mode ancré pour vos pièces, ce que son inscription prouve et ne prouve pas, à quel moment une pièce reçoit son propre jeton, et comment un tiers vérifie la preuve d'une pièce sans nous faire confiance.

#Le principe

Par défaut, chaque pièce frappée reçoit tout de suite son propre jeton sur la blockchain Base. C'est le mode « une pièce, un jeton ».

En mode ancré, les pièces d'un lot sont créées dans SealTrust, avec leur numéro de série et leur QR code signé, exactement comme aujourd'hui. Le lot entier est ensuite inscrit sur la blockchain en une seule écriture : une racine de Merkle, une empreinte qui résume toutes les pièces du lot. Chaque pièce garde sa propre preuve d'appartenance à cette racine.

Une pièce ne reçoit son jeton que le jour où elle bouge pour la première fois : quand son acheteur la revendique, ou quand votre marque la transfère. Une pièce qui n'est jamais revendiquée n'aura jamais de jeton.

Ce mode convient à une marque qui imprime des QR codes en grand nombre pour lutter contre le marché gris : elle a besoin d'un numéro de série prouvable pour chaque pièce, pas d'un jeton par pièce dès la fabrication.

#Qui l'active

L'équipe SealTrust, à votre demande. Le réglage vaut pour toute la marque. Il ne change jamais pendant qu'une frappe de la marque est en cours, et chaque changement est inscrit au journal d'audit.

Rien ne change pour les pièces déjà créées : une pièce qui a son jeton le garde, une pièce inscrite par son lot reçoit son jeton à sa première revendication, quel que soit le mode de la marque à ce moment-là.

Le mode ancré couvre les pièces en QR seul. Une puce NFC est encodée avec son jeton : un lot NFC continue de se frapper pièce par pièce.

#Frapper un lot

Le geste est le même : « Frapper le lot (groupé) » sur la fiche du lot. Il n'y a rien d'autre à faire.

Les pièces existent dès le clic. Les QR codes, l'archive à imprimer et les codes d'achat se préparent comme d'habitude. L'inscription du lot part dans la foulée, en une seule transaction. Si elle ne peut pas partir tout de suite (réseau indisponible, frais trop élevés), elle repart automatiquement dans l'heure : la fiche du lot affiche « En attente d'inscription, automatique sous 1 h ».

Une fois la transaction confirmée, la fiche du lot affiche « Inscrit sur la blockchain le … », avec le lien vers la transaction et le gaz utilisé.

Si la blockchain refuse l'inscription, ou si la transaction reste sans confirmation pendant une heure, elle repart automatiquement au passage horaire suivant. Rien n'est renvoyé à l'aveugle : quand la racine est déjà inscrite, c'est la transaction qui l'a inscrite qui est retenue. D'ici là, la page publique de la pièce affiche « Enregistré, inscription refusée » ou « Enregistré, inscription en attente », et rien n'est présenté comme prouvé.

Une frappe en mode ancré couvre un seul lot à la fois. Les pièces doivent toutes appartenir au lot, et à votre marque.

#Ce que l'inscription prouve

Elle prouve que votre marque a enregistré ce numéro de série, dans ce lot, au plus tard à la date du bloc qui porte la transaction, et que les informations inscrites n'ont pas changé depuis.

Elle ne prouve pas, à elle seule, que l'objet qu'une personne a en main porte bien ce numéro, ni qui en est le propriétaire. La propriété commence à la revendication, avec le jeton.

La page publique de la pièce, celle qu'ouvre son QR code, affiche « Enregistré et ancré » une fois la transaction confirmée, avec la date, le lien vers la transaction et la preuve. Avant la confirmation, elle affiche « Enregistré, inscription en attente ».

#Quand une pièce reçoit son jeton

À sa première revendication, le jeton est créé puis remis à l'acheteur, dans la même demande. Les règles de revendication de votre marque s'appliquent comme pour toute pièce : code d'achat exigé, activation en magasin, délai. Une deuxième revendication est refusée comme aujourd'hui.

Au premier transfert fait par votre marque, le jeton est créé puis transféré, une fois le code de confirmation du transfert saisi : une demande abandonnée avant ce code ne crée rien.

Le jeton d'une pièce enregistrée par son lot est créé par une seule signature. Une marque qui signe par un coffre multisignature (Safe) ne peut donc pas passer en mode ancré, et un coffre ne peut pas être activé tant que des pièces de la marque attendent leur jeton.

Le contrôle du marché gris porte sur la pièce, pas sur son jeton : il s'applique dès la création de la pièce.

#Vérifier la preuve d'une pièce

La preuve se lit sans clef d'API, avec le numéro de série imprimé sur le QR :

curl
curl https://api.sealtrust.io/v1/verify/unit-anchor/K4QNAFCHDETK

La réponse donne status (recorded une fois la transaction confirmée, pending avant, failed si la blockchain l'a refusée), les champs inscrits leaf_fields, la feuille leaf, sa position leaf_index, la preuve proof, la racine merkle_root, l'identifiant de lot sur le contrat onchain_batch_id, la transaction et son lien explorer_url, la date recorded_at, et token_minted. La même information arrive dans le champ unit_anchor de GET /v1/resolve/{identifier}.

Pour refaire la vérification soi-même :

  1. recalculer la feuille à partir de leaf_fields :
Texte
keccak256(abi.encode(
  bytes32 keccak256("sealtrust.unit-anchor.v1"),
  string  serial,
  string  brand_code,
  uint256 product_model_id,
  string  lot_code,
  bytes32 uid_hash,
  uint64  created_at_unix
))
  1. remonter la preuve : à chaque étape, hacher la valeur courante avec la valeur suivante de proof, la plus petite des deux en premier (convention MerkleProof d'OpenZeppelin). Le résultat doit être merkle_root ;
  2. lire sur le contrat anchoredRootByBatch(onchain_batch_id) : la valeur doit être la même racine. onchain_root_matches donne le résultat de cette lecture faite par nos serveurs, à titre indicatif.

uid_hash est aussi l'empreinte du jeton que la pièce recevra : son numéro de jeton est cette empreinte lue comme un nombre. Le jeton créé plus tard est donc bien celui de la pièce inscrite.

Une pièce qui n'a pas été créée en mode ancré répond 404 : elle a son propre jeton, et sa preuve est ailleurs (confiance et preuves).

#Ce qu'il faut retenir

  • Le mode ancré inscrit un lot entier en une seule transaction ; chaque pièce garde sa preuve.
  • Rien à cliquer en plus : l'inscription part avec la frappe, et repart seule dans l'heure si besoin.
  • Une pièce reçoit son jeton à sa première revendication ou à son premier transfert, jamais avant.
  • L'inscription prouve l'enregistrement du numéro et sa date, pas la possession de l'objet.

Votre réponse ouvre un courriel pré-rempli dans votre messagerie, à destination de contact@sealtrust.io. Vous le relisez avant de l'envoyer.

Proposer une correctionSignaler un problème