Aller au contenu principal

JSON-RPC — Espace de noms eth_

QoreChain implémente une interface JSON-RPC entièrement compatible EVM, permettant aux outils Ethereum standard (MetaMask, Hardhat, Foundry, ethers.js, web3.js) d'interagir avec la chaîne sans modification.

Connexion

TransportAdresse par défaut
HTTPhttp://localhost:8545
WebSocketws://localhost:8546
remarque

L'interface JSON-RPC EVM est servie par le mainnet qorechain-vladi (ID de chaîne EVM 9801, hex 0x2649, actif sur la version de chaîne v3.1.85) et le testnet qorechain-diana (ID de chaîne EVM 9800, hex 0x2648). Les adresses locales ci-dessus s'appliquent à un nœud que vous exécutez vous-même ; remplacez par le point de terminaison mainnet ou testnet de votre fournisseur pour un accès distant.

Espaces de noms pris en charge

Espace de nomsDescription
eth_Méthodes JSON-RPC Ethereum de base
web3_Méthodes utilitaires (version du client, hachage)
net_Méthodes de statut réseau
txpool_Inspection du pool de transactions
qor_Extensions spécifiques à QoreChain (voir Espace de noms qor_)

Méthodes eth_

MéthodeParamètresDescription
eth_blockNumberaucunRenvoie le numéro du dernier bloc
eth_getBalanceaddress, blockNumberRenvoie le solde d'une adresse en wei
eth_getTransactionCountaddress, blockNumberRenvoie le nonce (nombre de transactions) d'une adresse
eth_sendRawTransactionsignedTxDataSoumet une transaction signée pour diffusion
eth_callcallObject, blockNumberExécute un appel en lecture seule sur l'EVM
eth_estimateGascallObjectEstime le gas requis pour une transaction
eth_getBlockByNumberblockNumber, fullTx (bool)Renvoie les données d'un bloc par numéro
eth_getTransactionByHashtxHashRenvoie les données d'une transaction par hash
eth_getTransactionReceipttxHashRenvoie le reçu d'une transaction minée
eth_getLogsfilterObjectRenvoie les logs correspondant à un filtre
eth_chainIdaucunRenvoie l'ID de chaîne (encodé en hex)
eth_gasPriceaucunRenvoie le prix du gas actuel en wei
eth_feeHistoryblockCount, newestBlock, rewardPercentilesRenvoie les données de frais historiques (EIP-1559)

Méthodes web3_

MéthodeParamètresDescription
web3_clientVersionaucunRenvoie la chaîne de version du client
web3_sha3data (hex)Renvoie le hachage Keccak-256 de l'entrée

Méthodes net_

MéthodeParamètresDescription
net_versionaucunRenvoie l'ID du réseau
net_listeningaucunRenvoie true si le nœud est à l'écoute
net_peerCountaucunRenvoie le nombre de pairs connectés (hex)

Configuration

Activez et configurez le serveur JSON-RPC dans 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

Exemples

eth_blockNumber

Requête :

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

Réponse :

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

eth_chainId

Requête :

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

Réponse (mainnet qorechain-vladi, ID de chaîne 9801) :

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

Sur le testnet qorechain-diana (ID de chaîne 9800), cette méthode renvoie "0x2648".

eth_getBalance

Requête :

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

Réponse :

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

Connexion avec 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
  • L'ID de chaîne est renvoyé sous forme de chaîne hex. Convertissez en décimal pour la configuration du portefeuille — 0x2649 correspond à 9801 (mainnet), 0x2648 à 9800 (testnet).
  • La tarification du gas suit le modèle EIP-1559. Utilisez eth_feeHistory pour estimer les frais de base et les frais de priorité.
  • Étiquettes de bloc acceptées : "latest", "earliest", "pending", ou un numéro de bloc en hex.
  • Limitations des filtres : eth_getLogs est plafonné à filter-cap résultats par requête (par défaut 10 000). Utilisez des plages de blocs plus étroites pour les grands ensembles de données.