Î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 și qor_ folosesc evmRpc.
„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ă „feature not present"
Precompile-urile EVM există doar pe nodurile care rulează QoreChain EVM Engine. Pe un nod EVM obișnuit aceste apeluri eșuează. Dacă vizați noduri eterogene, înveliți fiecare apel de precompile și tratați eroarea per apel.
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), adaptoarele EVM/SVM
(@qorechain/evm, @qorechain/svm), kitul React (@qorechain/react) și
scaffolder-ul create-qorechain-dapp sunt pe npm la 0.7.0; clientul Python
este pe PyPI (pip install qorechain-sdk la 0.7.0, import qorsdk);
clientul Go este pe module proxy
(go get github.com/qorechain/qorechain-sdk/packages/go/..., tag
packages/go/v0.7.0); iar clientul Java este pe Maven Central
(io.github.qorechain:qorechain-sdk:0.7.0). Clientul Rust este pe crates.io
(cargo add qorechain-sdk) la cea mai recentă versiune de crate publicată,
care momentan este în urma versiunii 0.7.0 — instalați de pe crates.io sau din
repo. 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.1.85). Înainte ca o tranzacție hibridă să treacă verificarea PQC, cheia
publică PQC a semnatarului trebuie să fie înregistrată
(MsgRegisterPQCKeyV2), sau puteți seta includePqcPublicKey: true pentru a o
încorpora în vederea înregistrării automate la prima utilizare. Lanțul acceptă
doar semnături ML-DSA-87 deterministe (SDK-ul semnează determinist în
mod implicit începând cu 0.5.1); semnăturile hedged eșuează cu pqc cod 21
(hybrid_verify_failed). Vedeți
Conturi și semnare PQC.
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
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ă.