Keplr uyumlu bir cüzdana hibrit imzalama ekleyin
QoreChain'in yerel hattı, kayıtlı bir ML-DSA-87 anahtarı olan bir hesaptan gelen
işlemi, işlem o anahtarın imzasını da taşımadıkça reddeder. Keplr uyumlu bir
cüzdan (Keplr, Leap, Cosmostation ve signDirect uygulayan diğerleri)
secp256k1 kısmını üretir; ML-DSA-87 kısmı ise kuantum sonrası anahtarı tutan
tarafça sağlanmalıdır.
Bunu eklemenin iki yolu vardır.
Seçenek A: cüzdan iki anahtarı da tutar (QoreSign)
Cüzdan, ML-DSA-87 anahtarını secp256k1 anahtarının yanında türetir ve imzalamadan önce katmanı ekler.
import { deriveCanonicalPqKey, signPqLayer } from "@qorechain/qoresign";
// at account creation or import, from the same mnemonic and address
const pqKey = deriveCanonicalPqKey({ mnemonic, address });
// inside signDirect(signerAddress, signDoc):
const { bodyBytes } = signPqLayer({
chainId: signDoc.chainId,
bodyBytes: signDoc.bodyBytes,
authInfoBytes: signDoc.authInfoBytes,
pqKey,
});
const finalDoc = { ...signDoc, bodyBytes }; // sign this with the secp256k1 key, as for any Cosmos SDK chain
Kullanıcıyı güvende tutan kurallar:
- İmzalamadan önce kullanıcıya
bodyBytes/authInfoBytesiçindeki mesajları ve ücreti gösterin; hersignDirectisteğinde olduğu gibi. ML-DSA-87 imzası ücreti de kapsar. - Bir dApp zaten bir PQC katmanı taşıyan bir gövde gönderdiğinde, klasik imzanızı
eklemeden önce
assertPqLayerMatchesRegisteredKeyile (@qorechain/qoresign/networkiçinden) kontrol edin; doğrulanmayan bir katman hiçbir şeyi korumaz. - Anahtarı hesap başına bir kez,
classicalOnlymodunda imzalananbuildRegisterPqKeyMessageile kaydedin (bkz.examples/register-and-sendve Kayıt). - Yayından sonra, onaylanmış işlemi geri okuyun ve
evaluateLayerStateçağırın;downgradedkatmanın zincire ulaşmadığı anlamına gelir.
Seçenek B: kuantum sonrası anahtarı dApp tutar (@qorechain/wallet-adapter)
Cüzdan değiştirilemediğinde bir dApp
@qorechain/wallet-adapter
kullanabilir: gövdeye ML-DSA-87 katmanını ekler ve ardından değiştirilmemiş
cüzdandan sıradan bir signDirect imzası ister. Böylece kuantum sonrası anahtar
cüzdanda değil, dApp'te veya yardımcı bir imzalayıcıda durur. QoreSign ve adapter,
aynı anahtarlar için aynı baytları üretir.
Keplr için zincir kaydı
Zinciri, yayımlanmış zincir tanımlayıcılarıyla experimentalSuggestChain ile
önerin: zincir kimlikleri qorechain-vladi (mainnet) ve qorechain-diana
(testnet), bech32 öneki qor, coin türü 118, ücret birimi 6 ondalıklı uqor
ve asgari gas fiyatı 0.1. Herkese açık uç noktalar:
https://rpc.qore.host ve https://api.qore.host (mainnet),
https://rpc-testnet.qore.host ve https://api-testnet.qore.host (testnet).