Qstamp / Fonctionnement
Architecture

D’un enregistrement à un reçu qui survit aux ordinateurs quantiques.

Qstamp préserve la confidentialité de chaque enregistrement et ne rend vérifiable que la preuve. Les enregistrements, leurs empreintes et leurs reçus restent chez l’opérateur. Seul un engagement cryptographique salé unique est ancré au moyen d’un contrat Quanta sur la machine virtuelle Quantova, où un comité de validateurs post-quantique le finalise.

SYSTÈMES DE L’OPÉRATEUR SDK QSTAMP · LOCAL MACHINE VIRTUELLE QUANTOVA COMITÉ DE VALIDATEURS Enregistrementsactions d’IA, fichiers CondensatSHA3 256 bits Feuille salée0x00 · tag · alg · sel Arbre de hachageracine RFC 9162 Engagement0x02 · contexte · racine Transaction signéeML DSA 65 · frais plafonnés Contrat Quantaémet l’événement Stamped Bloc, racine d’événementsengagement inclus Certificat de finalitécomité ML DSA 65 Reçus restituésun par enregistrement · JSON Archivejoint à l’original SYSTÈMES DE L’OPÉRATEUR SDK QSTAMP · LOCAL MACHINE VIRTUELLE QUANTOVA COMITÉ DE VALIDATEURS Enregistrementsactions d’IA, fichiers CondensatSHA3 256 bits Feuille salée0x00 · tag · alg · sel Arbre de hachageracine RFC 9162 Engagement0x02 · contexte · racine Transaction signéeML DSA 65 · frais plafonnés Contrat Quantaémet l’événement Stamped Bloc, racine d’événementsengagement inclus Certificat de finalitécomité ML DSA 65 Reçus restituésun par enregistrement · JSON Archivejoint à l’original
Figure 1 · Horodatage. Seul l’engagement cryptographique de 32 octets franchit le périmètre de l’opérateur. Les liaisons en pointillés représentent des opérations réseau.
Un exemple réel

Comment une entreprise SI déploie Qstamp, de l’installation à une empreinte vérifiable par une juridiction.

Treize étapes réparties en quatre phases, à savoir mise en place, intégration, exploitation et preuve. Chaque valeur présentée est tirée d’un déploiement réel de Qstamp sur la machine virtuelle Quantova, et toute entreprise qui intègre Qstamp suit la même procédure.

qstamp · piste de déploiement et de preuve
Mise en placeIntégrationExploitationPreuve
Mise en place

Installer le SDK

L’entreprise SI ajoute le SDK Qstamp open source au service qui exécute ses agents. Il ne comporte qu’une seule dépendance, QCore, pour la signature post-quantique.

$ npm install @quantovainc/qstamp
added 2 packages

$ npx @quantovainc/qstamp --version
0.1.4
paquet@quantovainc/qstamp 0.1.4
bibliothèque de signature@quantovainc/qcore 0.4.2
licenceApache 2.0 ou MIT · Droit d’auteur 2026 Quantova Inc
Mise en place

Créer le compte signataire

Une clé de signature est créée sur le propre serveur de l’opérateur ou sur son module matériel de sécurité. Son compte est approvisionné et enregistré une seule fois sur le réseau Quantova.

$ openssl rand -hex 32 > signer.key && chmod 600 signer.key
$ node account.js
address  Q1NUR6ETECQXEVE77TJ9YPZ6WAWYMT45WCJANV5J43X93SF79DWE0S0D572X
status   registered, ready to stamp
signature du compteML DSA 65 · FIPS 204
garde de la cléopérateur uniquement, jamais transmise à Quantova
Mise en place

Choisir ou déployer le contrat

L’entreprise horodate au moyen du contrat Qstamp officiel, ou déploie son propre contrat émetteur à partir des modèles Quanta. Son propre contrat est compilé dans QIDE sur qdock.io par le compilateur Quanta attesté et déployé avec le portefeuille QMask.

contrat officielQ1D6TZFRL203P3DFAFVUPZUHGUCM4EWGH6063XNS42VA5235RNQWXS7FXEWX
contrat de l’institutionQ1DAJ3TZ7AN8JVY2MUCWYUWVPXEJSHH53JNDZ48L07RT6948J2N5QSNF3787
conteneur compilécorrespond au hachage audité 7cd509e2d21bc4a3
domaine de déploiementvaleur aléatoire fraîche de 64 bits liée à chaque ordre signé
Intégration

Enregistrer le modèle

Lorsqu’un modèle est approuvé pour utilisation, son passeport est horodaté avec le type d’enregistrement ai_model. Chaque décision ultérieure peut alors être rattachée au modèle exact qui l’a prise.

model-passport.jsonregistre de modèles
{
  "evaluation": {"approved_by": "Model Risk Committee", "auc": 0.871},
  "model": "risk-model 3.2.1",
  "time": "2026-10-09T09:39:27.273Z",
  "training_data": "dataset manifest 2026-09-30",
  "weights_sha3": "f01483b8e6269760c5c2e2025875b6e5d1b16402443e9a98d73e0a43156bf17b"
}
type d’enregistrement4 · ai_model
empreinte1b15118c7e2f1e482f87821a43d8062585b85e93d061bef1f6d429f621cfc850
transactionQTX19P000T7X6TPFPG8XMXV2GPU0XAR94H36LF7TKP6GGTXN2NQPWLZQ8PZJFY
bloc2,011,764
Intégration

Connecter l’environnement d’exécution de l’agent

L’environnement d’exécution de l’agent consigne chaque appel d’outil et chaque décision sous la forme d’un enregistrement canonique, le conserve dans le propre journal de l’entreprise et ancre le lot chaque minute. Les reçus sont stockés à côté des actions.

agent-runtime.jssystème de l’opérateur
const qstamp = require('@quantovainc/qstamp');
const batch = [];

agent.on('action', (action) => {
  const bytes = Buffer.from(canonicalJson(action));
  log.write(bytes);
  batch.push({ digest: qstamp.digestBytes(bytes) });
});

setInterval(async () => {
  const records = batch.splice(0);
  if (records.length === 0) return;
  const receipts = await qstamp.stamp({
    seed, index: 0, kind: 'ai_agent_action', records,
    onPending: savePending,
  });
  receipts.forEach(storeBesideAction);
}, 60000);
Exploitation

L’agent agit

Un agent de décision de crédit d’une banque approuve un prêt. Son action est consignée sous la forme d’un enregistrement JSON canonique indiquant l’agent, le modèle, la politique, l’outil, la décision et l’heure.

credit-batch-1/action-04.jsonsystème de l’opérateur
{
  "agent": "credit-decision-agent-07",
  "amount_usd": 125000,
  "applicant": "APP-54a49c823275",
  "decision": "approve",
  "human_review": false,
  "model": "risk-model 3.2.1",
  "operator": "Example Bank plc",
  "policy": "retail-lending-policy 2026-10",
  "reasons": ["score_above_threshold"],
  "risk_score": 645,
  "time": "2026-10-09T09:39:25.132Z",
  "tool": "credit_bureau.lookup"
}
Exploitation

Le SDK en calcule l’empreinte

Sur les propres systèmes de l’opérateur, le SDK calcule l’empreinte SHA3 de 256 bits de l’enregistrement. L’enregistrement lui-même ne quitte jamais la banque.

$ npx @quantovainc/qstamp hash action-04.json
  action-04.json
algorithmeSHA3 256 · FIPS 202
empreinteefb393903da28c2a6221179be662a2bbe2be06dfbd1acdee26bb057b6d2fb11f
Exploitation

Salage et regroupement en lot

L’empreinte est liée à un sel aléatoire frais et placée dans un arbre de hachage avec les autres actions du lot. Six actions partagent une même racine d’arbre.

feuilleH(0x00 ‖ QSTAMP/LEAF/V1 ‖ alg ‖ digest ‖ salt)
seld275e738d46530b36f2c90e48a16bcd6e37fa9480378eb253c4e7a66a6a6b710
taille du lot6 actions
racine de l’arbre34f64b12e5b363f1add6c48c0f85ebd60e4c2d421e5559f5d7b88717db205c54
Exploitation

Un engagement unique

La racine est liée à la chaîne, au contrat officiel, au compte signataire, au type d’enregistrement et à la taille du lot. Le résultat est un engagement cryptographique unique de 32 octets.

engagementH(0x02 ‖ QSTAMP/ROOT/V1 ‖ genesis ‖ contract ‖ sender ‖ kind ‖ size ‖ root)
type d’enregistrement6 · ai_agent_action
valeur6068a3e9625471530eda32f3292a9ac667c4f543281d62b12c62ad3481f07e0a
Exploitation

Signé avec ML DSA 65

Le SDK envoie une transaction unique qui appelle le contrat Quanta Qstamp sur la machine virtuelle Quantova. Elle est signée avec ML DSA 65, une signature post-quantique.

transactionQTX1V53JW528S64SZYD6EDZ563N0PUUA2ARGNQHV4LTJMNH24PQS5VPQTAH8RQ
signataireQ1NUR6ETECQXEVE77TJ9YPZ6WAWYMT45WCJANV5J43X93SF79DWE0S0D572X
contratQ1D6TZFRL203P3DFAFVUPZUHGUCM4EWGH6063XNS42VA5235RNQWXS7FXEWX
signatureML DSA 65 · FIPS 204
frais0.005 TQTOV pour l’ensemble du lot
Exploitation

Final sur la chaîne

Les validateurs finalisent le bloc au moyen de signatures post-quantiques. Le contrat consigne l’engagement cryptographique dans un événement Stamped. L’horodatage est devenu final en moins d’une seconde.

bloc2,011,753
heure2026-10-09 09:39:25 UTC
événementStamped · sélecteur 5a110849
données de l’événementsigner ‖ commitment ‖ kind
✓ final · consigné par le contrat officiel
Exploitation

Visible dans l’explorateur

Toute personne peut ouvrir la transaction sur QVMScan, l’explorateur public de Quantova, et y lire l’engagement cryptographique, le signataire, le type d’enregistrement et le bloc.

qvmscan.io/tx/QTX1V53JW5…PQTAH8RQ
statutSuccess
bloc2,011,753
deQ1NUR6ETECQXEVE77TJ9YPZ6WAWYMT45WCJANV5J43X93SF79DWE0S0D572X
versQ1D6TZFRL203P3DFAFVUPZUHGUCM4EWGH6063XNS42VA5235RNQWXS7FXEWX
Preuve QstampStamped · Official Qstamp contract · ai_agent_action
engagement6068a3e9625471530eda32f3292a9ac667c4f543281d62b12c62ad3481f07e0a
Ouvrir la transaction réelle
Preuve

Une juridiction demande ce qu’a fait l’agent

La banque produit l’enregistrement et son reçu. Le vérificateur recalcule l’empreinte, la racine de l’arbre et l’engagement cryptographique, et retrouve le même engagement sur la chaîne. La modification d’un seul chiffre fait échouer la vérification.

$ npx @quantovainc/qstamp verify action-04.json.qstamp.json --file action-04.json
pass format · pass contract · pass content · pass inclusion
pass chain · pass transaction · pass event · pass block
VALID  stamped no later than 2026-10-09T09:39:25Z in block 2011753

$ npx @quantovainc/qstamp verify action-04.json.qstamp.json --file altered.json
FAIL content  the content does not match the fingerprint in the receipt
INVALID
empreinte d’origineefb393903da28c2a6221179be662a2bbe2be06dfbd1acdee26bb057b6d2fb11f
empreinte altérée93b2b98383cd8fc1d71c9727c358b077149123050b4e1ac78654e1889f37c086
Séquence d’horodatage

Sept étapes définies.

Calculer l’empreinte de chaque enregistrement

Le SDK calcule un SHA3 avec une sortie de 256 bits, ou un SHA2 avec une sortie de 256 bits lorsqu’un système existant l’utilise déjà.

Saler et étiqueter chaque feuille

Un sel neuf de 32 octets issu du générateur aléatoire du système d’exploitation est lié au condensat, ainsi qu’à l’étiquette de domaine QSTAMP/LEAF/V1 et à l’identifiant d’algorithme.

Construire l’arbre du lot

Les feuilles sont combinées conformément au RFC 9162. Les hachages de feuille et de nœud utilisent des préfixes distincts, ce qui supprime toute ambiguïté de seconde préimage.

Dériver l’engagement cryptographique

La racine est liée conjointement au hachage de genèse, au contrat, au signataire, au type d’enregistrement et à la taille du lot en une seule valeur de 32 octets.

Signer et soumettre

L’engagement cryptographique est transmis dans une transaction signée en ML DSA 65. Les frais sont plafonnés avant la signature et la partie non utilisée des frais calculés selon la consommation est remboursée.

Enregistrer et finaliser

Le contrat Quanta émet un événement Stamped. Le comité de validateurs finalise le bloc en 0,2 seconde environ.

Délivrer les reçus

Chaque enregistrement reçoit un reçu contenant son sel, son chemin d’inclusion et son ancrage. Un fichier de reprise privé protège contre les interruptions.

Anatomie d’un reçu

Compact, autodescriptif et vérifiable.

contract.pdf.qstamp.jsonqstamp receipt 1
{ "format": "qstamp-receipt/1", "chain": { "id": "Q-test-net-1", "genesis": "ca91e093…" }, "contract": "Q1D6TZFRL203…", "kind": "6", "record": { "alg": "sha3-256", "digest": "9f07acaf…", "salt": "5e1c02d4…" }, "proof": { "index": 2, "size": 8, "path": [ … ] }, "root": "b3f1…", "anchor": { "tx": "QTX1TYDCHMSD…", "height": 1506979, "block": "QBK1…", "time": 1791430364, "sender": "Q1NUR6ETECQX…" } }

Les reçus ne contiennent aucune partie de l’enregistrement. Ils contiennent toutefois le condensat et le sel, et doivent donc être traités avec le même soin que les enregistrements qu’ils décrivent.

Regroupement en lots

Des preuves logarithmiques, un coût constant.

Un lot de toute taille est ancré par une seule transaction. Chaque enregistrement prouve son appartenance au moyen d’un chemin dont la longueur ne croît qu’avec le logarithme de la taille du lot.

feuille 0feuille 1feuille 2feuille 3feuille 4feuille 5feuille 6feuille 7nœudnœudnœudnœudnœudnœudracineEn surbrillance · la feuille 2 et les nœuds dans lesquels elle est hachée. Son chemin d’inclusion est le frère à chaque niveau, à savoir feuille 3, node(0,1) et node(4..7), soit trois hachages pour huit feuilles. racine nœud nœud nœud nœud nœud nœud feuille 0 feuille 1 feuille 2 feuille 3 feuille 4 feuille 5 feuille 6 feuille 7
Figure 3 · Un chemin d’inclusion croît avec le logarithme de la taille du lot. Un million d’enregistrements nécessitent vingt hachages frères.
Vérification

Faire confiance aux mathématiques, et non à l’émetteur.

La vérification produit l’un de trois résultats. Valide signifie que chaque maillon tient. Invalide signifie qu’au moins un maillon échoue. Indéterminé signifie que le réseau n’a pas pu être consulté. Un résultat indéterminé n’est jamais présenté comme valide.

CONTRÔLES LOCAUX · HORS RÉSEAU · SANS CONFIANCE CONTRÔLES D’ANCRAGE · QVM 1 · Contenurecalcul du condensat 2 · Feuillecondensat · sel · alg 3 · Inclusionchemin vers la racine 4 · Engagementliaison du contexte 5 · Transactionfinale · signée · données 6 · Événementcontrat officiel 7 · Blocidentifiant · horodatage Verdictun résultat sur trois CONTRÔLES LOCAUX · HORS RÉSEAU · SANS CONFIANCE CONTRÔLES D’ANCRAGE · QVM 1 · Contenurecalcul du condensat 2 · Feuillecondensat · sel · alg 3 · Inclusionchemin vers la racine 4 · Engagementliaison du contexte 5 · Transactionfinale · signée · données 6 · Événementcontrat officiel 7 · Blocidentifiant · horodatage Verdictun résultat sur trois
Figure 2 · Vérification. Les étapes 1 à 4 s’exécutent entièrement sur la machine du vérificateur. Les étapes 5 à 7 confirment l’ancrage sur le réseau Quantova.

Échec en mode fermé

Un point d’accès injoignable, une réponse tronquée ou des données malformées ne peuvent jamais produire un verdict valide.

Contrat épinglé

Les reçus ne sont vérifiés qu’au regard du contrat officiel de leur réseau, sauf si un déploiement personnalisé est explicitement déclaré de confiance.

Horodatage précis

L’horodatage des blocs ne décroît jamais et n’est accepté que s’il concorde, à 15 secondes près, avec les horloges des validateurs.