Sari la conținutul principal

JSON-RPC — Compatibil cu Solana

QoreChain oferă o interfață JSON-RPC compatibilă cu Solana prin runtime-ul său SVM (Solana Virtual Machine), permițând instrumentelor și SDK-urilor Solana existente să interacționeze nativ cu QoreChain.

Trimiterea tranzacțiilor SVM este momentan dezactivată

Începând cu versiunea de lanț v3.1.89 (22 august), în urma unui incident, lane-ul de execuție SVM este dezactivat la nivel de rețea pentru trimiterea tranzacțiilor — orice tranzacție returnează code 11, "SVM module is disabled". Acest lucru se aplică la nivel de rețea, nu doar la endpoint-urile publice doar-pentru-citire. Metodele de tip citire din tabelul de mai jos (de exemplu getBalance, getAccountInfo) răspund normal pe endpoint-urile publice, dar nu încerca o integrare live care trimite tranzacții SVM până când lane-ul nu se redeschide — aceasta este o dezactivare la momentul compilării, nu un parametru de runtime, deci nu poate fi reactivată printr-un vot de guvernanță; se așteaptă să rămână dezactivată până când un audit extern o eliberează.

Conexiune​

TransportAdresă
HTTP (nod propriu)http://127.0.0.1:8899
HTTPS (public, mainnet, doar citire)https://svm.qore.host
HTTPS (public, testnet, doar citire)https://svm-testnet.qore.host

Serverul JSON-RPC este pornit de qorechaind start și este activat implicit, ascultând pe 127.0.0.1:8899. Este configurat printr-o secțiune [svm-rpc] în app.toml (enable + address). Un nod proaspăt pornit servește deja această interfață — nu este necesar niciun proces suplimentar. Endpoint-urile publice sunt doar pentru citire (trimiterea tranzacțiilor este dezactivată la nivel de edge).

notă

Începând cu versiunea de lanț v3.1.82, interfața SVM servește soldul nativ QOR al contului — aceleași fonduri unificate vizibile pe interfețele Cosmos și EVM — denominat în lamports (9 zecimale; 1 uqor = 1.000 lamports). Vezi QOR nativ pe interfața SVM.


Metode​

MetodăParametriDescriere
getAccountInfopubkey (șir base58)Returnează datele contului, proprietarul, lamports și indicatorul executable
getBalancepubkey (șir base58)Returnează soldul nativ QOR în lamports pentru cheia publică dată
getSignaturesForAddressaddress (șir base58)Returnează semnăturile tranzacțiilor care implică adresa (detectarea depunerilor)
getSlotniciunulReturnează numărul slotului curent
getMinimumBalanceForRentExemptiondataLength (număr întreg)Returnează soldul minim pentru scutirea de chirie pentru dimensiunea de date dată
getVersionniciunulReturnează versiunea software-ului nodului
getHealthniciunulReturnează starea de sănătate a nodului ("ok" dacă este sănătos)
getBlockHeightniciunulReturnează înălțimea curentă a blocului
getLatestBlockhashniciunulReturnează un blockhash recent și lastValidBlockHeight
getRecentBlockhashniciunulForma veche a getLatestBlockhash
getFeeForMessagemessage (base64)Returnează taxa pentru un mesaj (lamports)
getMultipleAccountspubkeys (listă)Returnează mai multe conturi într-un singur apel
getProgramAccountsprogramId (base58)Returnează conturile deținute de un program
getTokenAccountsByOwnerowner, filtruReturnează conturile de token ale unui proprietar
getTokenAccountsByDelegatedelegate, filtruReturnează conturile de token ale unui delegat

Metodele din afara acestei liste, precum getGenesisHash și getEpochInfo, returnează -32601 method not found (verificat pe https://svm.qore.host și https://svm-testnet.qore.host, 20 octombrie 2026). Începând cu v3.2.2, adresele base58 din interogările RPC și gRPC trebuie să fie canonice și cu lungime limitată; o adresă malformată este refuzată. getTransaction este acceptată, dar în prezent răspunde cu un înveliș fără câmpul result, așa că nu te baza pe ea. Slotul raportat de getSlot urmărește înălțimea blocului lanțului.


Formatul răspunsurilor​

Toate răspunsurile respectă specificația JSON-RPC 2.0. Răspunsurile care fac referire la starea on-chain includ un obiect context cu slot-ul curent:

{
"jsonrpc": "2.0",
"id": 1,
"result": {
"context": {
"slot": 123456
},
"value": { ... }
}
}

Exemple​

getAccountInfo​

Cerere:

curl -X POST http://localhost:8899 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "getAccountInfo",
"params": [
"4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T",
{ "encoding": "base64" }
],
"id": 1
}'

Răspuns:

{
"jsonrpc": "2.0",
"id": 1,
"result": {
"context": {
"slot": 123456
},
"value": {
"data": ["AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", "base64"],
"executable": false,
"lamports": 1000000000,
"owner": "11111111111111111111111111111111",
"rentEpoch": 0
}
}
}

getBalance​

Cerere:

curl -X POST http://localhost:8899 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "getBalance",
"params": ["4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T"],
"id": 2
}'

Răspuns:

{
"jsonrpc": "2.0",
"id": 2,
"result": {
"context": {
"slot": 123456
},
"value": 1000000000
}
}

getVersion​

Cerere:

curl -X POST http://localhost:8899 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "getVersion",
"params": [],
"id": 3
}'

Răspuns:

{
"jsonrpc": "2.0",
"id": 3,
"result": {
"solana-core": "1.18.0-qorechain",
"feature-set": 0
}
}

Șirul de versiune 1.18.0-qorechain indică compatibilitatea cu interfața RPC Solana 1.18.0 care rulează pe runtime-ul SVM QoreChain.


Integrare cu @solana/web3.js​

Aplicațiile Solana existente se pot conecta la QoreChain direcționând obiectul Connection către endpoint-ul SVM local:

import { Connection, PublicKey, LAMPORTS_PER_SOL } from "@solana/web3.js";

const connection = new Connection("http://127.0.0.1:8899", "confirmed");

// Check version
const version = await connection.getVersion();
console.log("Node version:", version["solana-core"]);

// Get balance
const pubkey = new PublicKey("4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T");
const balance = await connection.getBalance(pubkey);
console.log("Balance:", balance / LAMPORTS_PER_SOL);

// Get slot
const slot = await connection.getSlot();
console.log("Current slot:", slot);

// Get account info
const accountInfo = await connection.getAccountInfo(pubkey);
if (accountInfo) {
console.log("Owner:", accountInfo.owner.toBase58());
console.log("Executable:", accountInfo.executable);
console.log("Data length:", accountInfo.data.length);
}

Note​

  • Formatul adreselor: Conturile SVM folosesc chei publice codificate base58 (formatul standard Solana), nu prefixul Bech32 qor1 folosit de modulele native Cosmos SDK.
  • Punte cross-VM: Pentru a muta active între runtime-urile EVM și SVM, folosește modulul Cross-VM (x/crossvm). Vezi Comenzile de tranzacție pentru sintaxa crossvm call. Lane-ul SVM este dezactivat, iar MsgCrossVMCall este oprit pe mainnet, deci aceasta este astăzi doar referință.
  • Implementarea programelor: Implementează programe BPF prin CLI (qorechaind tx svm deploy-program) sau programatic prin runtime-ul SVM.
  • Buget de calcul: Runtime-ul SVM impune implicit un buget de calcul de 1.400.000 de unități de calcul per tranzacție. Acesta este configurabil prin parametrii modulului.