Întrebări frecvente și depanare
Este mainnet-ul activ?
Da. Mainnet-ul este activ (chain id qorechain-vladi). Presetul de testnet
(qorechain-diana) rămâne de asemenea disponibil. Ambele preseturi vin cu
endpoint-uri implicite pe localhost; selectați rețeaua cu
createClient({ network: "mainnet" }) și suprascrieți endpoints cu URL-urile
nodurilor dvs. Vedeți
Rețea și endpoint-uri.
De ce apelurile mele merg către localhost?
createClient() folosește implicit endpoint-uri localhost. Pentru a
comunica cu un nod real, transmiteți un obiect endpoints:
const client = createClient({
endpoints: {
rest: "https://api-testnet.qore.host",
rpc: "https://rpc-testnet.qore.host",
evmRpc: "https://evm-testnet.qore.host",
},
});
Calea de semnare (connectTx) are nevoie de endpoint-ul de consens rpc;
citirile CosmWasm îl folosesc de asemenea. Citirile REST folosesc rest;
apelurile EVM folosesc evmRpc (la fel și apelurile qor_, pe un nod care
servește acel namespace). URL-urile de mainnet se găsesc în
referința de rețea.
„Cannot find module 'viem'" / „'@solana/web3.js'"
Acestea sunt peer dependencies pentru @qorechain/evm și respectiv
@qorechain/svm. Instalați-le în proiectul dvs.:
npm i @qorechain/evm viem
npm i @qorechain/svm @solana/web3.js
Un apel de precompile aruncă „returned no data" / „feature not present"
Precompile-urile EVM QoreChain sunt compilate în nod, dar nu sunt încă active
pe mainnet sau testnet: răspund doar acolo unde adresele lor sunt listate în
parametrul active_static_precompiles al modulului EVM, iar lista aceea este
goală pe ambele rețele. În prezent apelul returnează date goale, așa că viem
raportează returned no data ("0x"), iar funcția ajutătoare aruncă o eroare și pe
rețelele publice (vedeți
Precompile-uri EVM: starea în rețea).
Pe un nod EVM obișnuit apelurile eșuează în același mod. Verificați
GET /cosmos/evm/vm/v1/params și înveliți fiecare apel de precompile pentru ca
eroarea să fie tratată per apel.
Apelul meu client.qor eșuează cu -32601
client.qor apelează namespace-ul JSON-RPC qor_, pe care nicio versiune
publicată a nodului nu îl servește; rpc_modules pe endpoint-urile EVM publice
listează doar eth, net, rpc, txpool și web3. Folosiți în schimb o rută
REST, de exemplu GET /qorechain/pqc/v1/account/{address} (starea cheii PQC) sau
GET /qorechain/burn/v1/stats, prin client.rest.get(...). Vedeți
namespace-ul qor_.
Sumele mele sunt greșite cu un factor de un milion
QOR are unități de bază uqor de 10^6. Folosiți toBase / fromBase și
faceți toate calculele în unități de bază:
toBase("1.5"); // "1500000"
fromBase("1500000"); // "1.5"
Rețineți că runtime-ul EVM reprezintă QOR cu 18 zecimale (convenția EVM),
ceea ce este diferit de baza uqor Native de 10^6.
Ce pachete sunt publicate și unde?
Toate. Nucleul TypeScript (@qorechain/sdk, 0.8.3), adaptoarele EVM/SVM
(@qorechain/evm, @qorechain/svm, 0.8.0), kitul React (@qorechain/react,
0.8.3) și scaffolder-ul create-qorechain-dapp (0.8.0) sunt pe npm; clientul
Python este pe PyPI (pip install qorechain-sdk la 0.8.3, import qorsdk);
clientul Go este pe module proxy
(go get github.com/qorechain/qorechain-sdk/packages/go/..., tag
packages/go/v0.8.4); clientul Rust este pe crates.io (cargo add qorechain-sdk,
0.8.3); iar clientul Java este pe Maven Central
(io.github.qorechain:qorechain-sdk:0.8.3). Vedeți Instalare
pentru comenzile complete pentru fiecare limbaj.
Mnemonicul meu este respins
SDK-ul validează atât lista de cuvinte BIP-39, cât și suma de control
înainte de a deriva orice cheie, astfel încât o frază cu greșeli de tastare
aruncă o eroare în loc să producă în tăcere contul greșit. Verificați din nou
cuvintele; folosiți validateMnemonic pentru a testa o frază.
Tranzacții hibride (PQC)
Trimiterea hibridă (clasic + ML-DSA-87) este activă și obligatorie pe calea
Native — tranzacțiile Native doar clasice sunt respinse on-chain (chain
v3.2.0). Înainte ca o tranzacție hibridă să treacă verificarea PQC, cheia
publică PQC a semnatarului trebuie să fie înregistrată explicit cu
MsgRegisterPQCKeyV2 (o tranzacție semnată clasic, exceptată de la cerința
hibridă); încorporarea cheii publice în extensie
(includePqcPublicKey: true) nu o înregistrează, iar lanțul nu înregistrează
o cheie la prima utilizare.
Lanțul acceptă orice semnătură ML-DSA-87 validă conform FIPS-204, hedged sau
deterministă. SDK-ul semnează determinist în mod implicit (începând cu 0.5.1)
pentru ca o tranzacție să aibă mereu aceeași semnătură și același hash de tx.
Dacă o tx hibridă eșuează cu pqc cod 21 (hybrid_verify_failed), cauza este
versiunea sign-bytes, chain-id-ul, o bibliotecă PQC învechită sau o cheie
neînregistrată, niciodată semnarea hedged.
Ambele rețele verifică forma v2 a sign-bytes, așa că folosiți SDK 0.8.1 sau
mai nou și transmiteți rest (sau signBytesVersion): builder-ele aruncă o
eroare pe qorechain-vladi / qorechain-diana dacă lipsesc amândouă. Vedeți
Depanarea codului 21 și
Conturi și semnare PQC.
Tranzacția mea EVM este refuzată cu „no open EVM authorisation window"
Începând cu chain v3.2.0, lane-ul EVM admite o tranzacție doar de la un cont care
are o cheie PQC înregistrată și o fereastră de autorizare deschisă. Înregistrați o
cheie, deschideți o fereastră, apoi trimiteți. Vedeți
Fereastra de autorizare EVM. Cu SDK-ul,
classifyEvmWindowRejection(err) returnează "no-pqc-key", "no-window",
"exhausted" sau "invalid".
Tranzacțiile mele hibride eșuează la CheckTx cu o eroare de parsare a tranzacției
Actualizați SDK-ul. Versiunile 0.6.0 și anterioare serializau în JSON
extensia de corp de tranzacție /qorechain.pqc.v1.PQCHybridSignature, pe care
decodorul de tranzacții al lanțului o respinge la CheckTx. Începând cu
0.6.1 extensia este codificată protobuf (valoarea începe cu 0x08) în
toate cele cinci limbaje — tranzacțiile hibride construite cu versiuni mai
vechi sunt respinse on-chain, pe fiecare cale (inclusiv eth-native).
Cheltuirea mea prin authenticator este respinsă cu authenticator_replay
(Modulul abstractaccount este dezactivat acum pe ambele rețele; o cheltuire
este refuzată cu abstract account module is disabled înainte de verificarea
oricărui nonce. Vedeți Authenticators și cheltuire delegată.
Indicațiile de mai jos se aplică după ce modulul este activat.)
Nonce-ul este greșit. MsgExecuteEVM.nonce trebuie să fie nonce-ul EVM
curent al contului (relayer-ul este un cont diferit, deci nu adăugați
1); MsgExecuteCosmos.nonce este secvența per-authenticator pentru
(account, pubkey), un contor de stocare separat. Reobțineți valoarea și
semnați din nou. Alte eșecuri ale authenticator-ului se decodează prin
decodeTxError: codurile abstractaccount 5 (spending_limit_exceeded),
6 (session_key_expired) și 10 (permission_denied). Vedeți
Authenticators și cheltuire delegată.