Varsayılan olarak kuantuma dayanıklı
QoreChain, post-kuantum kriptografiyi birinci sınıf bir imza şeması olarak ele alır. Bir hesap, zincir üzerinde bir ML-DSA-87 (Dilithium-5, NIST FIPS 204) anahtarı kaydeder, ardından işlemleri bir hibrit imza taşıyabilir — olağan klasik secp256k1 imzası artı bir ML-DSA-87 imzası. Zincirin ante işleyicisi her ikisini de doğrular; böylece kuantuma dayanıklı bir hesap, gelecekteki bir kuantum düşmanına karşı koruma kazanırken klasik doğrulamayla tam uyumlu kalır.
SDK bunu küçük, bağımsız uygulanabilir bir yüzeye paketler; böylece bir dApp varsayılan olarak kuantuma dayanıklı hale gelir: PQC korumalı olmak için tek bir çağrı.
Durumu kontrol edin
isPqcRegistered / getPqcStatus, bir adresin qor_getPQCKeyStatus JSON-RPC
yöntemi aracılığıyla kayıtlı bir PQC anahtarına sahip olup olmadığını okur. Bunlar bir
QorClient'ı veya createClient'tan oluşturulan istemciyi kabul eder:
import { createClient, isPqcRegistered, getPqcStatus } from "@qorechain/sdk";
const client = createClient({ network: "mainnet", endpoints: { /* … */ } });
const safe = await isPqcRegistered(client, "qor1…");
const status = await getPqcStatus(client, "qor1…");
// status: { registered: boolean; algorithmId?: number; pubkey?: string | Uint8Array }
Aynı durum EVM tarafında da 0x0000000000000000000000000000000000000A02 adresindeki
pqcKeyStatus(address) returns (bool registered, uint8 algorithmId, bytes pubkey)
ön derlemesi (@qorechain/evm içinde pqcKeyStatus olarak sunulur) aracılığıyla okunabilir.
Yukarıdaki yardımcılar, hiçbir viem eşi gerektirmeyen JSON-RPC yöntemini tercih eder.
Tek çağrıda kaydedin
ensurePqcRegistered, bir hesabı kuantuma dayanıklı yapar. Bağımsız uygulanabilirdir: bir
durum kaynağı geçin, anahtar zaten kayıtlıysa kaydı atlar;
bu nedenle her uygulama başlangıcında çağrılması güvenlidir.
import { generatePqcKeypair, ensurePqcRegistered } from "@qorechain/sdk";
const tx = await client.connectTx(signer);
const pqcKeypair = generatePqcKeypair(); // or derive deterministically from the wallet
const res = await ensurePqcRegistered(tx, {
pqcKeypair,
statusSource: client, // makes the call idempotent (skips if already registered)
});
// res: { alreadyRegistered: boolean; txHash?: string }
Arka planda, imzalayanın Dilithium genel anahtarıyla (pqcKeypair içinden) artı,
isteğe bağlı olarak hesabın ECDSA genel anahtarıyla MsgRegisterPQCKey oluşturur
ve yayınlar.
Hibrit imzalayın
migrateToHybrid kaydı sağlar ve anahtar çiftini mevcut
buildHybridTx / signAndBroadcastHybrid oluşturucularına önceden bağlı olarak bir hibrit
gönderme yolu geri verir:
import { migrateToHybrid } from "@qorechain/sdk";
const hybrid = await migrateToHybrid(tx, { pqcKeypair, statusSource: client });
await hybrid.signAndBroadcastHybrid({
registry,
signer, // classical secp256k1 direct signer
messages,
fee,
chainId,
accountNumber,
sequence,
transport, // a connected broadcast transport (e.g. StargateClient)
});
Bir anahtarı döndürün
PQC anahtarını döndürmeniz gerekirse (algoritma yükseltmesi veya ele geçirilmiş bir anahtar),
hem eski hem de yeni anahtarın sahipliğini kanıtlayarak MsgMigratePQCKey yayınlayan
migratePqcKey'i kullanın:
import { migratePqcKey } from "@qorechain/sdk";
await migratePqcKey(tx, {
oldPublicKey,
newPublicKey,
oldSignature, // by the old key
newSignature, // by the new key
});
Kullanıcı arayüzünde
@qorechain/react kiti bunların tümünü React'te sunar:
usePqcStatus kancası ve <QuantumSafeBadge/> bileşeni, bağlı hesabın kayıtlı bir
PQC anahtarına sahip olduğu her durumda bir Kuantuma dayanıklı
göstergesi gösterir.