JSON-RPC — Solana Uyumlu
QoreChain, SVM (Solana Virtual Machine) çalışma zamanı üzerinden Solana ile uyumlu bir JSON-RPC arayüzü sunar ve mevcut Solana araçlarının ve SDK'larının QoreChain ile doğrudan etkileşime girmesini sağlar.
Zincir sürümü v3.1.89 (22 Ağustos) itibarıyla, yaşanan bir olayın ardından SVM yürütme hattı ağ genelinde işlem gönderimi için devre dışı bırakılmıştır — herhangi bir işlem code 11, "SVM module is disabled" hatası döndürür. Bu durum yalnızca genel salt okunur uç noktalarda değil, ağ genelinde geçerlidir. Aşağıdaki tablodaki okuma tipi yöntemler (örn. getBalance, getAccountInfo) genel uç noktalarda normal şekilde yanıt verir, ancak hat yeniden açılana kadar SVM işlemi gönderen canlı bir entegrasyon denemeyin — bu, çalışma zamanı parametresi değil, derleme zamanında yapılan bir devre dışı bırakmadır, dolayısıyla bir yönetişim oylamasıyla yeniden açılamaz; harici bir denetim onay verene kadar kapalı kalması beklenmektedir.
Bağlantı
| Aktarım | Adres |
|---|---|
| HTTP (kendi düğümünüz) | http://127.0.0.1:8899 |
| HTTPS (genel, mainnet, salt okunur) | https://svm.qore.host |
| HTTPS (genel, testnet, salt okunur) | https://svm-testnet.qore.host |
JSON-RPC sunucusu qorechaind start tarafından başlatılır ve varsayılan olarak etkindir, 127.0.0.1:8899 üzerinde dinler. app.toml içindeki bir [svm-rpc] bölümü (enable + address) üzerinden yapılandırılır. Yeni başlatılan bir düğüm bu arayüzü zaten sunar — ek bir süreç gerekmez. Genel uç noktalar salt okunurdur (işlem gönderimi uçta devre dışı bırakılmıştır).
Zincir sürümü v3.1.82 itibarıyla, SVM arayüzü hesabın yerel QOR bakiyesini — Cosmos ve EVM arayüzlerinde görülenle aynı birleşik fonları — lamport cinsinden (9 ondalık; 1 uqor = 1,000 lamport) sunar. Bkz. SVM Arayüzünde Yerel QOR.
Yöntemler
| Yöntem | Parametreler | Açıklama |
|---|---|---|
getAccountInfo | pubkey (base58 dizesi) | Hesap verisini, sahibini, lamport miktarını ve çalıştırılabilir bayrağını döndürür |
getBalance | pubkey (base58 dizesi) | Verilen genel anahtar için lamport cinsinden yerel QOR bakiyesini döndürür |
getSignaturesForAddress | address (base58 dizesi) | Adresi ilgilendiren işlem imzalarını döndürür (para yatırma tespiti) |
getSlot | yok | Geçerli slot numarasını döndürür |
getMinimumBalanceForRentExemption | dataLength (tam sayı) | Verilen veri boyutu için kira muafiyeti gerektiren minimum bakiyeyi döndürür |
getVersion | yok | Düğüm yazılımı sürümünü döndürür |
getHealth | yok | Düğüm sağlık durumunu döndürür (sağlıklıysa "ok") |
getBlockHeight | yok | Geçerli blok yüksekliğini döndürür |
getLatestBlockhash | yok | Yakın tarihli bir blockhash ve lastValidBlockHeight döndürür |
getRecentBlockhash | yok | getLatestBlockhash'in eski biçimi |
getFeeForMessage | message (base64) | Bir mesajın ücretini (lamport) döndürür |
getMultipleAccounts | pubkeys (dizi) | Tek çağrıda birden fazla hesabı döndürür |
getProgramAccounts | programId (base58) | Bir programa ait hesapları döndürür |
getTokenAccountsByOwner | owner, filtre | Bir sahibin token hesaplarını döndürür |
getTokenAccountsByDelegate | delegate, filtre | Bir delegenin token hesaplarını döndürür |
getGenesisHash ve getEpochInfo gibi bu listenin dışındaki yöntemler -32601 method not found döndürür (https://svm.qore.host ve https://svm-testnet.qore.host üzerinde denetlendi, 20 Ekim 2026). v3.2.2'den itibaren RPC ve gRPC sorgularındaki base58 adresleri kanonik olmalı ve uzunluk bakımından sınırlı olmalıdır; hatalı biçimli bir adres reddedilir. getTransaction kabul edilir ancak şu anda result alanı olmayan bir zarfla yanıt verir, bu yüzden ona güvenmeyin. getSlot tarafından bildirilen slot, zincirin blok yüksekliğini takip eder.
Yanıt Biçimi
Tüm yanıtlar JSON-RPC 2.0 spesifikasyonunu izler. Zincir üzerindeki duruma referans veren yanıtlar, geçerli slot bilgisini içeren bir context nesnesi içerir:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"context": {
"slot": 123456
},
"value": { ... }
}
}
Örnekler
getAccountInfo
İstek:
curl -X POST http://localhost:8899 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "getAccountInfo",
"params": [
"4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T",
{ "encoding": "base64" }
],
"id": 1
}'
Yanıt:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"context": {
"slot": 123456
},
"value": {
"data": ["AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", "base64"],
"executable": false,
"lamports": 1000000000,
"owner": "11111111111111111111111111111111",
"rentEpoch": 0
}
}
}
getBalance
İstek:
curl -X POST http://localhost:8899 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "getBalance",
"params": ["4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T"],
"id": 2
}'
Yanıt:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"context": {
"slot": 123456
},
"value": 1000000000
}
}
getVersion
İstek:
curl -X POST http://localhost:8899 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "getVersion",
"params": [],
"id": 3
}'
Yanıt:
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"solana-core": "1.18.0-qorechain",
"feature-set": 0
}
}
1.18.0-qorechain sürüm dizesi, QoreChain SVM çalışma zamanı üzerinde çalışan Solana 1.18.0 RPC arayüzüyle uyumluluğu gösterir.
@solana/web3.js Entegrasyonu
Mevcut Solana uygulamaları, Connection nesnesini yerel SVM uç noktasına yönlendirerek QoreChain'e bağlanabilir:
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);
}
Notlar
- Adres biçimi: SVM hesapları, yerel Cosmos SDK modüllerinin kullandığı
qor1Bech32 önekinin aksine, base58 kodlu genel anahtarlar (standart Solana biçimi) kullanır. - VM'ler Arası Köprüleme: Varlıkları EVM ve SVM çalışma zamanları arasında taşımak için VM'ler Arası modülünü (
x/crossvm) kullanın.crossvm callsözdizimi için İşlem Komutları sayfasına bakın. SVM hattı devre dışıdır veMsgCrossVMCallana ağda kapalıdır; dolayısıyla bu bilgi bugün yalnızca referans niteliğindedir. - Program dağıtımı: BPF programlarını CLI üzerinden (
qorechaind tx svm deploy-program) veya programatik olarak SVM çalışma zamanı aracılığıyla dağıtın. - Hesaplama bütçesi: SVM çalışma zamanı, varsayılan olarak işlem başına 1,400,000 hesaplama birimlik bir hesaplama bütçesi uygular. Bu, modül parametreleri aracılığıyla yapılandırılabilir.