量子安全な決済レシート
決済レシート は、ロールアップの決済バッチがポスト量子署名のもとで Main Chain に アンカーされたことを示す、可搬で自己完結型の証明です。特定のバッチを、そのロールアップの 状態をその高さでコミットしたオンチェーンアンカーに結び付け、完全オフライン で検証できます — ノードも、検証者のネットワーク経路への信頼も不要です。
アンカー署名は ML-DSA-87(Dilithium-5、FIPS-204)であり、Main Chain が使用するのと同じ ポスト量子スキームです。そのため、レシートはベースチェーンの量子安全な完全性を継承します。
正規アンカーメッセージ
検証では、アンカーフィールドから次の正確な順序で連結して構築された正規メッセージに対する Dilithium-5 署名をチェックします:
layer_id || layer_height (8-byte big-endian) || state_root || validator_set_hash
anchorSignBytes(...) はこれらのバイトを生成します。検証者はレシートからそれらを再構築し、
レイヤー作成者の登録済み ML-DSA-87 鍵に対して署名をチェックします。
ビルドと検証(TypeScript)
import {
createRdkClient,
buildSettlementReceipt,
verifySettlementReceipt,
} from "@qorechain/rdk";
// The public qore.host endpoints are baked into the presets (RDK ≥ 0.4.2);
// pass `endpoints` only to target your own node.
const rdk = createRdkClient({ network: "testnet" });
// Build a portable receipt for one batch.
const receipt = await buildSettlementReceipt(rdk, "my-roll", 7);
// Persist it, ship it, hand it to a counterparty — it is self-contained JSON.
// Verify fully offline. With no client, you must supply the creator's key.
const result = await verifySettlementReceipt(receipt, {
creatorPublicKey: "<layer creator ML-DSA-87 public key>",
});
console.log(result.valid); // true when the signature and the batch↔anchor binding both hold
creatorPublicKey の代わりに(またはそれと併せて)client を渡すと、検証は
レイヤー作成者の登録済み ML-DSA-87 鍵をチェーンから取得します(getPqcAccount(address))。
検証は次に 2 つのことをチェックします:
- 正規アンカーメッセージに対する Dilithium-5 署名、および
- バッチ ↔ アンカー状態ルートの結び付き — あなたが保持するバッチが、アンカーが コミットしたものであること。
// Online verification: fetch the creator's PQC key from the chain.
const online = await verifySettlementReceipt(receipt, { client: rdk });
アンカーの読み取り
レシートは、オンチェーンの x/multilayer Anchor クエリから構築されます。これは
チェーンバージョン v3.1.80 以降、gRPC と REST の両方で利用可能です(
REST / gRPC エンドポイント を参照)。
読み取りは次のとおりです:
getAnchor(layerId)— レイヤーのアンカー。getLatestAnchor()— 最新のアンカー。getAnchors(layerId)— レイヤーのアンカー履歴。getPqcAccount(address)— 登録済みのポスト量子アカウント(その ML-DSA-87 鍵)。作成者の署名の検証に使用されます。
CLI
# Build a receipt and print it.
qorollup receipt my-roll 7
# Build, then verify it inline.
qorollup receipt my-roll 7 --verify
# Build and write it to a file.
qorollup receipt my-roll 7 --out receipt.json
完全な qorollup オペレーター CLI については ロールアップのデプロイ
を参照してください。
その他の言語
Python、Go、Rust、Java(JVM)クライアントは、同じビルド/検証の
サーフェスを公開しています。これらは、バンドルされた JavaScript 実装ではなく
qorechain-pqc ライブラリを通じて ML-DSA-87 検証を
実行します。お使いの言語の RDK クライアントと併せてインストールしてください。