セットアップSDK をインストールする
SI 企業は、エージェントを実行するサービスにオープンソースの Qstamp SDK を追加する。依存関係は、耐量子署名のための QCore の1つのみである。
$ npm install @quantovainc/qstamp
added 2 packages
$ npx @quantovainc/qstamp --version
0.1.4
パッケージ@quantovainc/qstamp 0.1.4
署名ライブラリ@quantovainc/qcore 0.4.2
ライセンスApache 2.0 又は MIT · 著作権 2026 Quantova Inc
セットアップ署名アカウントを作成する
署名鍵は、運用者自身のサーバー又はハードウェアセキュリティモジュール上で作成される。そのアカウントには資金が供給され、Quantova ネットワークに一度だけ登録される。
$ openssl rand -hex 32 > signer.key && chmod 600 signer.key
$ node account.js
address Q1NUR6ETECQXEVE77TJ9YPZ6WAWYMT45WCJANV5J43X93SF79DWE0S0D572X
status registered, ready to stamp
アカウント署名ML DSA 65 · FIPS 204
鍵の保管運用者のみが保持し、Quantova には一切送信されない
セットアップコントラクトを選択又はデプロイする
企業は、公式の Qstamp コントラクトを通じてスタンプするか、Quanta テンプレートから独自の発行者コントラクトをデプロイする。独自のコントラクトは、qdock.io の QIDE において証明済みの Quanta コンパイラによりコンパイルされ、QMask ウォレットでデプロイされる。
公式コントラクトQ1D6TZFRL203P3DFAFVUPZUHGUCM4EWGH6063XNS42VA5235RNQWXS7FXEWX
機関コントラクトQ1DAJ3TZ7AN8JVY2MUCWYUWVPXEJSHH53JNDZ48L07RT6948J2N5QSNF3787
コンパイル済みコンテナ監査済みハッシュ 7cd509e2d21bc4a3 と一致
展開ドメイン署名済みのすべてのオーダーに結び付けられる、新たに生成されたランダムな64ビット値
統合モデルを登録する
モデルの使用が承認されると、そのパスポートが記録種別 ai_model でスタンプされる。これにより、以後のすべての判断を、その判断を行った正確なモデルに結び付けることができる。
model-passport.jsonモデル登録簿
{
"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"
}記録種別4 · ai_model
フィンガープリント1b15118c7e2f1e482f87821a43d8062585b85e93d061bef1f6d429f621cfc850
トランザクションQTX19P000T7X6TPFPG8XMXV2GPU0XAR94H36LF7TKP6GGTXN2NQPWLZQ8PZJFY
ブロック2,011,764
統合エージェントランタイムを接続する
エージェントランタイムは、すべてのツール呼び出し及び判断を正規化された記録として書き出し、企業自身のログに保管し、1分ごとにバッチをアンカーする。レシートはアクションとともに保存される。
agent-runtime.js運用者のシステム
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); 運用エージェントが行動する
銀行の与信判断エージェントが融資を承認する。そのアクションは、エージェント、モデル、ポリシー、ツール、判断及び時刻を含む正規化された JSON 記録として書き出される。
credit-batch-1/action-04.json運用者のシステム
{
"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"
} 運用SDK がフィンガープリントを生成する
運用者自身のシステム上で、SDK は当該記録の SHA3 256 ビットのフィンガープリントを計算する。記録そのものが銀行の外部に出ることはない。
$ npx @quantovainc/qstamp hash action-04.json
action-04.json
アルゴリズムSHA3 256 · FIPS 202
フィンガープリントefb393903da28c2a6221179be662a2bbe2be06dfbd1acdee26bb057b6d2fb11f
運用ソルト付与とバッチ化
フィンガープリントは新たに生成されたランダムなソルトと結び付けられ、同一バッチの他のアクションとともにハッシュツリーに格納される。6件のアクションが1つのツリールートを共有する。
リーフH(0x00 ‖ QSTAMP/LEAF/V1 ‖ alg ‖ digest ‖ salt)
ソルトd275e738d46530b36f2c90e48a16bcd6e37fa9480378eb253c4e7a66a6a6b710
バッチサイズ6件のアクション
ツリールート34f64b12e5b363f1add6c48c0f85ebd60e4c2d421e5559f5d7b88717db205c54
運用1つのコミットメント
ルートは、チェーン、公式コントラクト、署名アカウント、記録種別及びバッチサイズに結び付けられる。その結果が1つの32バイトのコミットメントである。
コミットメントH(0x02 ‖ QSTAMP/ROOT/V1 ‖ genesis ‖ contract ‖ sender ‖ kind ‖ size ‖ root)
記録種別6 · ai_agent_action
値6068a3e9625471530eda32f3292a9ac667c4f543281d62b12c62ad3481f07e0a
運用ML DSA 65 による署名
SDK は、Quantova 仮想マシン上の Qstamp Quanta コントラクトを呼び出す1件のトランザクションを送信する。このトランザクションには、耐量子署名である ML DSA 65 で署名される。
トランザクションQTX1V53JW528S64SZYD6EDZ563N0PUUA2ARGNQHV4LTJMNH24PQS5VPQTAH8RQ
署名者Q1NUR6ETECQXEVE77TJ9YPZ6WAWYMT45WCJANV5J43X93SF79DWE0S0D572X
コントラクトQ1D6TZFRL203P3DFAFVUPZUHGUCM4EWGH6063XNS42VA5235RNQWXS7FXEWX
署名ML DSA 65 · FIPS 204
手数料バッチ全体で 0.005 TQTOV
運用オンチェーンで確定
バリデーターは耐量子署名によりブロックを確定する。コントラクトは、コミットメントを Stamped イベントに記録する。スタンプは1秒未満で確定した。
ブロック2,011,753
時刻2026-10-09 09:39:25 UTC
イベントStamped · selector 5a110849
イベントデータsigner ‖ commitment ‖ kind
✓ 確定済み · 公式コントラクトにより記録
運用エクスプローラーで閲覧可能
誰でも、Quantova の公開エクスプローラーである QVMScan でトランザクションを開き、コミットメント、署名者、記録種別及びブロックを確認することができる。
qvmscan.io/tx/QTX1V53JW5…PQTAH8RQ
ステータスSuccess
ブロック2,011,753
送信元Q1NUR6ETECQXEVE77TJ9YPZ6WAWYMT45WCJANV5J43X93SF79DWE0S0D572X
送信先Q1D6TZFRL203P3DFAFVUPZUHGUCM4EWGH6063XNS42VA5235RNQWXS7FXEWX
Qstamp の証跡Stamped · Official Qstamp contract · ai_agent_action
コミットメント6068a3e9625471530eda32f3292a9ac667c4f543281d62b12c62ad3481f07e0a
実際のトランザクションを開く 証明裁判所がエージェントの行為を問う
銀行は記録とそのレシートを提出する。検証者は、フィンガープリント、ツリールート及びコミットメントを再計算し、同一のコミットメントがオンチェーンに存在することを確認する。1桁でも変更すれば、検査は失敗する。
$ 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
元のフィンガープリントefb393903da28c2a6221179be662a2bbe2be06dfbd1acdee26bb057b6d2fb11f
改変後のフィンガープリント93b2b98383cd8fc1d71c9727c358b077149123050b4e1ac78654e1889f37c086