Set upInstall the SDK
The SI company adds the open source Qstamp SDK to the service that runs its agents. It has one dependency, QCore, for post quantum signing.
$ npm install @quantovainc/qstamp
added 2 packages
$ npx @quantovainc/qstamp --version
0.1.4
package@quantovainc/qstamp 0.1.4
signing library@quantovainc/qcore 0.4.2
licenceApache 2.0 or MIT · Copyright 2026 Quantova Inc
Set upCreate the signing account
A signing key is created on the operator's own server or hardware security module. Its account is funded and registered once on the Quantova network.
$ openssl rand -hex 32 > signer.key && chmod 600 signer.key
$ node account.js
address Q1NUR6ETECQXEVE77TJ9YPZ6WAWYMT45WCJANV5J43X93SF79DWE0S0D572X
status registered, ready to stamp
account signatureML DSA 65 · FIPS 204
key custodyoperator only, never sent to Quantova
Set upChoose or deploy the contract
The company stamps through the official Qstamp contract, or deploys its own issuer contract from the Quanta templates. Its own contract is compiled in QIDE at qdock.io by the attested Quanta compiler and deployed with the QMask wallet.
official contractQ1D6TZFRL203P3DFAFVUPZUHGUCM4EWGH6063XNS42VA5235RNQWXS7FXEWX
institution contractQ1DAJ3TZ7AN8JVY2MUCWYUWVPXEJSHH53JNDZ48L07RT6948J2N5QSNF3787
compiled containermatches the audited hash 7cd509e2d21bc4a3
deployment domainfresh random 64 bit value bound into every signed order
IntegrateRegister the model
When a model is approved for use, its passport is stamped with the record kind ai_model. Every later decision can then be linked to the exact model that made it.
model-passport.jsonmodel registry
{
"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"
}record kind4 · ai_model
fingerprint1b15118c7e2f1e482f87821a43d8062585b85e93d061bef1f6d429f621cfc850
transactionQTX19P000T7X6TPFPG8XMXV2GPU0XAR94H36LF7TKP6GGTXN2NQPWLZQ8PZJFY
block2,011,764
IntegrateConnect the agent runtime
The agent runtime writes every tool call and decision as a canonical record, keeps it in the company's own log and anchors the batch every minute. The receipts are stored beside the actions.
agent-runtime.jsoperator system
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); OperateThe agent acts
A credit decision agent at a bank approves a loan. Its action is written as a canonical JSON record with the agent, model, policy, tool, decision and time.
credit-batch-1/action-04.jsonoperator system
{
"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"
} OperateThe SDK fingerprints it
On the operator's own systems, the SDK computes the SHA3 256 bit fingerprint of the record. The record itself never leaves the bank.
$ npx @quantovainc/qstamp hash action-04.json
action-04.json
algorithmSHA3 256 · FIPS 202
fingerprintefb393903da28c2a6221179be662a2bbe2be06dfbd1acdee26bb057b6d2fb11f
OperateSalted and batched
The fingerprint is bound to a fresh random salt and placed in a hash tree with the other actions of the batch. Six actions share one tree root.
leafH(0x00 ‖ QSTAMP/LEAF/V1 ‖ alg ‖ digest ‖ salt)
saltd275e738d46530b36f2c90e48a16bcd6e37fa9480378eb253c4e7a66a6a6b710
batch size6 actions
tree root34f64b12e5b363f1add6c48c0f85ebd60e4c2d421e5559f5d7b88717db205c54
OperateOne commitment
The root is bound to the chain, the official contract, the signing account, the record kind and the batch size. The result is one 32 byte commitment.
commitmentH(0x02 ‖ QSTAMP/ROOT/V1 ‖ genesis ‖ contract ‖ sender ‖ kind ‖ size ‖ root)
record kind6 · ai_agent_action
value6068a3e9625471530eda32f3292a9ac667c4f543281d62b12c62ad3481f07e0a
OperateSigned with ML DSA 65
The SDK sends one transaction that calls the Qstamp Quanta contract on the Quantova Virtual Machine. It is signed with ML DSA 65, a post quantum signature.
transactionQTX1V53JW528S64SZYD6EDZ563N0PUUA2ARGNQHV4LTJMNH24PQS5VPQTAH8RQ
signerQ1NUR6ETECQXEVE77TJ9YPZ6WAWYMT45WCJANV5J43X93SF79DWE0S0D572X
contractQ1D6TZFRL203P3DFAFVUPZUHGUCM4EWGH6063XNS42VA5235RNQWXS7FXEWX
signatureML DSA 65 · FIPS 204
fee0.005 TQTOV for the whole batch
OperateFinal on chain
Validators finalise the block with post quantum signatures. The contract records the commitment in a Stamped event. The stamp became final in under one second.
block2,011,753
time2026-10-09 09:39:25 UTC
eventStamped · selector 5a110849
event datasigner ‖ commitment ‖ kind
✓ final · recorded by the official contract
OperateVisible on the explorer
Anyone can open the transaction on QVMScan, the public Quantova explorer, and read the commitment, the signer, the record kind and the block.
qvmscan.io/tx/QTX1V53JW5…PQTAH8RQ
statusSuccess
block2,011,753
fromQ1NUR6ETECQXEVE77TJ9YPZ6WAWYMT45WCJANV5J43X93SF79DWE0S0D572X
toQ1D6TZFRL203P3DFAFVUPZUHGUCM4EWGH6063XNS42VA5235RNQWXS7FXEWX
Qstamp evidenceStamped · Official Qstamp contract · ai_agent_action
commitment6068a3e9625471530eda32f3292a9ac667c4f543281d62b12c62ad3481f07e0a
Open the live transaction ProveA court asks what the agent did
The bank produces the record and its receipt. The verifier recomputes the fingerprint, the tree root and the commitment, and finds the same commitment on chain. Changing a single digit makes the check fail.
$ 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
original fingerprintefb393903da28c2a6221179be662a2bbe2be06dfbd1acdee26bb057b6d2fb11f
altered fingerprint93b2b98383cd8fc1d71c9727c358b077149123050b4e1ac78654e1889f37c086