Zum Hauptinhalt springen

JSON-RPC — eth_-Namespace

QoreChain implementiert eine vollständig EVM-kompatible JSON-RPC-Schnittstelle, die es Standard-Ethereum-Werkzeugen (MetaMask, Hardhat, Foundry, ethers.js, web3.js) ermöglicht, ohne Anpassungen mit der Chain zu interagieren.

Verbindung

TransportStandardadresse
HTTPhttp://localhost:8545
WebSocketws://localhost:8546
hinweis

Die EVM-JSON-RPC-Schnittstelle wird vom qorechain-vladi-Mainnet (EVM-Chain-ID 9801, hex 0x2649, live auf Chain-Version v3.1.85) und vom qorechain-diana-Testnet (EVM-Chain-ID 9800, hex 0x2648) bereitgestellt. Die obigen lokalen Adressen gelten für einen Node, den Sie selbst betreiben; ersetzen Sie für den Fernzugriff den Mainnet- oder Testnet-Endpunkt Ihres Anbieters.

Unterstützte Namespaces

NamespaceBeschreibung
eth_Zentrale Ethereum-JSON-RPC-Methoden
web3_Hilfsmethoden (Client-Version, Hashing)
net_Methoden zum Netzwerkstatus
txpool_Inspektion des Transaktionspools
qor_QoreChain-spezifische Erweiterungen (siehe qor_-Namespace)

eth_-Methoden

MethodeParameterBeschreibung
eth_blockNumberkeineGibt die neueste Blocknummer zurück
eth_getBalanceaddress, blockNumberGibt den Kontostand einer Adresse in Wei zurück
eth_getTransactionCountaddress, blockNumberGibt die Nonce (Transaktionsanzahl) einer Adresse zurück
eth_sendRawTransactionsignedTxDataÜbermittelt eine signierte Transaktion zur Verbreitung
eth_callcallObject, blockNumberFührt einen schreibgeschützten Aufruf gegen die EVM aus
eth_estimateGascallObjectSchätzt das für eine Transaktion erforderliche Gas
eth_getBlockByNumberblockNumber, fullTx (bool)Gibt Blockdaten anhand der Nummer zurück
eth_getTransactionByHashtxHashGibt Transaktionsdaten anhand des Hashes zurück
eth_getTransactionReceipttxHashGibt die Quittung für eine geminte Transaktion zurück
eth_getLogsfilterObjectGibt Logs zurück, die einem Filter entsprechen
eth_chainIdkeineGibt die Chain-ID zurück (hex-kodiert)
eth_gasPricekeineGibt den aktuellen Gaspreis in Wei zurück
eth_feeHistoryblockCount, newestBlock, rewardPercentilesGibt historische Gebührendaten zurück (EIP-1559)

web3_-Methoden

MethodeParameterBeschreibung
web3_clientVersionkeineGibt die Client-Versionszeichenkette zurück
web3_sha3data (hex)Gibt den Keccak-256-Hash der Eingabe zurück

net_-Methoden

MethodeParameterBeschreibung
net_versionkeineGibt die Netzwerk-ID zurück
net_listeningkeineGibt true zurück, wenn der Node lauscht
net_peerCountkeineGibt die Anzahl der verbundenen Peers zurück (hex)

Konfiguration

Aktivieren und konfigurieren Sie den JSON-RPC-Server in app.toml:

[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
api = "eth,web3,net,txpool,qor"

# 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

Beispiele

eth_blockNumber

Anfrage:

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

Antwort:

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

eth_chainId

Anfrage:

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

Antwort (Mainnet qorechain-vladi, Chain-ID 9801):

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

Im qorechain-diana-Testnet (Chain-ID 9800) gibt diese Methode "0x2648" zurück.

eth_getBalance

Anfrage:

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

Antwort:

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

Verbindung mit ethers.js

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");
Info
  • Die Chain-ID wird als Hex-Zeichenkette zurückgegeben. Wandeln Sie sie für die Wallet-Konfiguration in eine Dezimalzahl um — 0x2649 ist 9801 (Mainnet), 0x2648 ist 9800 (Testnet).
  • Die Gaspreisbildung folgt dem EIP-1559-Modell. Verwenden Sie eth_feeHistory zur Schätzung von Basisgebühr und Prioritätsgebühr.
  • Akzeptierte Block-Tags: "latest", "earliest", "pending" oder eine Hex-Blocknummer.
  • Filterbeschränkungen: eth_getLogs ist auf filter-cap Ergebnisse pro Abfrage begrenzt (Standard 10.000). Verwenden Sie für große Datensätze engere Blockbereiche.