Adăugați semnarea hibridă într-un portofel compatibil Keplr
Lane-ul nativ al QoreChain refuză o tranzacție de la un cont cu o cheie ML-DSA-87
înregistrată, cu excepția cazului în care tranzacția poartă și semnătura acelei
chei. Un portofel compatibil Keplr (Keplr, Leap, Cosmostation și altele care
implementează signDirect) produce partea secp256k1; partea ML-DSA-87 trebuie
să vină de la cel care deține cheia post-cuantică.
Există două moduri de a o adăuga.
Varianta A: portofelul deține ambele chei (QoreSign)
Portofelul derivă cheia ML-DSA-87 alături de cheia secp256k1 și adaugă stratul înainte de a semna.
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
Reguli care protejează utilizatorul:
- Arătați utilizatorului mesajele și taxa din
bodyBytes/authInfoBytesînainte de semnare, la fel ca pentru orice cereresignDirect. Semnătura ML-DSA-87 acoperă taxa. - Când un dApp trimite un corp care poartă deja un strat PQC, verificați-l cu
assertPqLayerMatchesRegisteredKey(din@qorechain/qoresign/network) înainte de a adăuga semnătura clasică; un strat care nu se verifică nu protejează nimic. - Înregistrați cheia o singură dată per cont cu
buildRegisterPqKeyMessage, semnat în modulclassicalOnly(veziexamples/register-and-sendși Înregistrare). - După difuzare, citiți tranzacția comisă și apelați
evaluateLayerState;downgradedînseamnă că stratul nu a ajuns pe lanț.
Varianta B: dApp-ul deține cheia post-cuantică (@qorechain/wallet-adapter)
Când portofelul nu poate fi schimbat, un dApp poate folosi
@qorechain/wallet-adapter:
adaugă stratul ML-DSA-87 la corp și apoi cere portofelului neschimbat o
semnătură signDirect obișnuită. Cheia post-cuantică rămâne astfel la dApp sau
la un semnatar însoțitor, nu în portofel. QoreSign și adaptorul produc aceiași
octeți pentru aceleași chei.
Înregistrarea lanțului pentru Keplr
Sugerați lanțul cu experimentalSuggestChain, folosind descriptorii de lanț
publicați: id-urile de lanț qorechain-vladi (mainnet) și qorechain-diana
(testnet), prefixul bech32 qor, coin type 118, denominația taxei uqor cu 6
zecimale și un preț minim al gazului de 0.1. Endpointuri publice:
https://rpc.qore.host și https://api.qore.host (mainnet),
https://rpc-testnet.qore.host și https://api-testnet.qore.host (testnet).