Ana içeriğe geç

JSON-RPC — eth_ Ad Alanı

QoreChain, EVM uyumlu bir JSON-RPC arayüzü uygular; böylece standart Ethereum araçları (MetaMask, Hardhat, Foundry, ethers.js, web3.js) zincir durumunu okuyabilir ve gazı hiçbir değişiklik yapmadan tahmin edebilir. EVM şeridinden işlem göndermek için zincir sürümü v3.2.0'dan itibaren fazladan bir adım gerekir: gönderen hesabın kayıtlı bir kuantum sonrası anahtarı ve açık bir EVM yetkilendirme penceresi olmalıdır (İşlem gönderme bölümüne bakın).

Bağlantı​

TaşımaVarsayılan Adres
HTTPhttp://localhost:8545
WebSocketws://localhost:8546
not

EVM JSON-RPC arayüzü, qorechain-vladi ana ağı (EVM zincir kimliği 9801, onaltılık 0x2649, düğüm sürümü v3.2.3, 7 Haziran 2026'dan beri canlı; 3.742.566 yüksekliğinden itibaren v3.2.4) ve qorechain-diana test ağı (EVM zincir kimliği 9800, onaltılık 0x2648, düğüm sürümü v3.2.4, 19 Ekim 2026'dan beri) tarafından sunulur. Yukarıdaki yerel adresler kendi çalıştırdığınız bir düğüm için geçerlidir. Genel HTTP uç noktaları https://evm.qore.host (ana ağ) ve https://evm-testnet.qore.host (test ağı) olup Ağlar sayfasında listelenmiştir. Tek genel EVM WebSocket'i test ağınındır (wss://evm-ws-testnet.qore.host); genel bir ana ağ EVM WebSocket'i yoktur.

Desteklenen Ad Alanları​

Ad AlanıAçıklama
eth_Temel Ethereum JSON-RPC yöntemleri
web3_Yardımcı yöntemler (istemci sürümü, hashleme)
net_Ağ durumu yöntemleri
txpool_İşlem havuzu incelemesi
rpc_Sunucu iç gözlemi (rpc_modules)

eth_ Yöntemleri​

YöntemParametrelerAçıklama
eth_blockNumberyokEn son blok numarasını döndürür
eth_getBalanceaddress, blockNumberBir adresin bakiyesini wei cinsinden döndürür
eth_getTransactionCountaddress, blockNumberBir adres için nonce'u (işlem sayısını) döndürür
eth_sendRawTransactionsignedTxDataİmzalanmış bir işlemi yayın için gönderir
eth_callcallObject, blockNumberEVM'e karşı salt okunur bir çağrı yürütür
eth_estimateGascallObjectBir işlem için gereken gazı tahmin eder
eth_getBlockByNumberblockNumber, fullTx (bool)Numaraya göre blok verisini döndürür
eth_getTransactionByHashtxHashHash'e göre işlem verisini döndürür
eth_getTransactionReceipttxHashMadenciliği yapılmış bir işlem için makbuzu döndürür
eth_getLogsfilterObjectBir filtreyle eşleşen günlükleri döndürür
eth_chainIdyokZincir kimliğini döndürür (onaltılık kodlanmış)
eth_gasPriceyokGeçerli gaz fiyatını wei cinsinden döndürür
eth_feeHistoryblockCount, newestBlock, rewardPercentilesGeçmiş ücret verilerini döndürür (EIP-1559)
eth_getBlockByHashblockHash, fullTx (bool)Hash'e göre blok verisini döndürür
eth_getCodeaddress, blockNumberKontrat bytecode'unu döndürür
eth_getStorageAtaddress, slot, blockNumberBir depolama yuvasını döndürür
eth_getBlockReceiptsblockNumberBir bloktaki tüm makbuzları döndürür
eth_getProofaddress, storageKeys, blockNumberBir hesap kanıtı döndürür
eth_createAccessListcallObject, blockNumberBir çağrı için erişim listesi oluşturur
eth_maxPriorityFeePerGasyokÖnerilen öncelik ücretini döndürür (wei)
eth_syncingyokDüğüm senkronize olduğunda false döndürür
eth_newFilter, eth_newBlockFilter, eth_getFilterChangesfiltre nesnesi / filtre kimliğiYoklama (polling) filtreleri

web3_ Yöntemleri​

YöntemParametrelerAçıklama
web3_clientVersionyokİstemci sürüm dizesini döndürür
web3_sha3data (hex)Girdinin Keccak-256 hash'ini döndürür

txpool_ Yöntemleri​

YöntemParametrelerAçıklama
txpool_statusyokBekleyen ve kuyruktaki işlemlerin sayısını döndürür
txpool_contentyokBekleyen ve kuyruktaki işlemleri döndürür (genel uç noktalarda yok)
txpool_inspectyokHavuzun özetini döndürür (genel uç noktalarda yok)

net_ Yöntemleri​

YöntemParametrelerAçıklama
net_versionyokAğ kimliğini döndürür
net_listeningyokDüğüm dinliyorsa true döndürür
net_peerCountyokBağlı eş sayısını döndürür (onaltılık)

Yapılandırma​

JSON-RPC sunucusunu app.toml içinde etkinleştirin ve yapılandırın:

[json-rpc]
# Enable the JSON-RPC server
enable = true

# HTTP server address
address = "0.0.0.0:8545"

# WebSocket server address
ws-address = "0.0.0.0:8546"

# Enabled API namespaces (a node initialised by v3.2.3 or later defaults to "eth,net,web3";
# txpool is opt-in because it publishes the node's pending transactions)
api = "eth,web3,net,txpool"

# Maximum number of logs returned by eth_getLogs
filter-cap = 10000

# Maximum gas for eth_call and eth_estimateGas
gas-cap = 25000000

# EVM execution timeout
evm-timeout = "5s"

# Transaction fee cap (in QOR)
txfee-cap = 1

# Maximum open WebSocket connections
max-open-connections = 0

Genel uç noktalardaki sınırlar​

not
  • eth_getLogs, fromBlock ile toBlock arasında en fazla 10.000 blok kabul eder. Daha geniş bir aralık {"code":-32000,"message":"maximum [from, to] blocks distance: 10000"} döndürür. Sorguları 10.000 blok veya daha küçük pencereler halinde yapın. Ayrı filter-cap ayarı, döndürülen günlük sayısını sınırlar.
  • txpool_status, genel uç noktalarda çalışır. txpool_content ve txpool_inspect, hem genel ana ağ hem de genel test ağı uç noktasında devre dışıdır (kendi çalıştırdığınız ve api listesinde txpool bulunan bir düğümde çalışırlar).
  • debug_* yöntemleri ve eth_signTransaction kullanılamaz.
  • eth_subscribe bir WebSocket bağlantısı gerektirir. HTTP üzerinden -32601 notifications not supported döndürür. Bkz. WebSocket Olayları.
  • Genel uç noktalarda eski yüksekliklerdeki durum budanmıştır (pruned); bu nedenle uzak bir geçmiş bloğa karşı eth_call, durum sürümü hatasıyla başarısız olabilir.
  • Bir betik 403 Forbidden alırsa açık bir User-Agent başlığı ayarlayın; Python'un varsayılan urllib ajanı engellenir, requests, curl, Node ve Go istemcileri olduğu gibi çalışır.

İşlem gönderme​

EVM şeridi bir PQC anahtarı ve açık bir pencere gerektirir

Zincir sürümü v3.2.0'dan itibaren EVM şeridi, bir işlemi (MsgEthereumTx, kontrat dağıtımları dahil) yalnızca kayıtlı bir kuantum sonrası anahtarı ve açık bir EVM yetkilendirme penceresi olan bir hesaptan kabul eder. Bu kurulumu yapmamış sıradan bir EVM cüzdanı işlem gönderemez: düğüm, işlemleri dahil etmek yerine bir pqc modülü hatasıyla (kod 26, 27 veya 28) reddeder. Bakiyeleri okumak, eth_call çağırmak ve gazı tahmin etmek için pencere gerekmez. v3.2.2'den itibaren zincir kimliği olmadan imzalanmış bir işlem (EIP-155 öncesi) de reddedilir; v3.2.3'ten itibaren bir pencere yalnızca düz QOR transferleriyle (native_only) veya listelenmiş alıcılarla (allowed_targets) sınırlandırılabilir; kapsam dışındaki bir işlem kod 27 ile reddedilir.

Göndermeden önce bir hesabı kontrol edin:

  • GET /qorechain/pqc/v1/account/{address} (found: true bir anahtarın kayıtlı olduğu anlamına gelir)
  • GET /qorechain/pqc/v1/evm_window/{address} (live: true şu anda bir pencerenin işlemleri kabul ettiği anlamına gelir)

Her ikisi de REST / gRPC Uç Noktaları sayfasında açıklanmıştır (pencere yanıtı ayrıca native_only ve allowed_targets alanlarını da bildirir). Pencere, bir Ethereum işlemiyle değil, bir QoreChain işlemiyle (MsgOpenEVMWindow; en fazla 17.280 blok ve 1.000 işlemle ve bir değer sınırıyla sınırlıdır) açılır. Şerit genel bakışı için EVM Geliştirme sayfasına bakın.

Örnekler​

eth_blockNumber​

İstek:

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

Yanıt:

{
"jsonrpc": "2.0",
"id": 1,
"result": "0x37f559"
}

eth_chainId​

İstek:

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

Yanıt (ana ağ qorechain-vladi, zincir kimliği 9801):

{
"jsonrpc": "2.0",
"id": 2,
"result": "0x2649"
}

qorechain-diana test ağında (zincir kimliği 9800) bu yöntem "0x2648" döndürür.

eth_getBalance​

İstek:

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

Yanıt:

{
"jsonrpc": "2.0",
"id": 3,
"result": "0x56bc75e2d63100000"
}

ethers.js ile Bağlanma​

import { ethers } from "ethers";

const provider = new ethers.JsonRpcProvider("http://localhost:8545");

// Get latest block
const block = await provider.getBlockNumber();
console.log("Latest block:", block);

// Get balance
const balance = await provider.getBalance("0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28");
console.log("Balance:", ethers.formatEther(balance), "QOR");
bilgi
  • Zincir kimliği onaltılık bir dize olarak döndürülür. Cüzdan yapılandırması için ondalığa dönüştürün — 0x2649 = 9801 (ana ağ), 0x2648 = 9800 (test ağı).
  • Gaz fiyatlandırması EIP-1559 modelini izler. Baz ücret ve öncelik ücreti tahmini için eth_feeHistory kullanın.
  • Kabul edilen blok etiketleri: "latest", "earliest", "pending" veya onaltılık bir blok numarası.
  • Filtre sınırlamaları: eth_getLogs, sorgu başına filter-cap sonuçla sınırlıdır (varsayılan 10.000) ve genel uç noktalar 10.000 bloktan geniş aralıkları reddeder. Büyük veri kümeleri için daha dar blok aralıkları kullanın.