快速了解兼容 Ethereum 的 JSON-RPC 接口

原文作者:PaperMoon团队

前言

随着区块链生态的发展,越来越多的开发者希望在不同公链之间实现技术复用与平滑迁移。为了降低以太坊开发者进入 Polkadot 生态的门槛,Polkadot Hub 提供了兼容 Ethereum 的 JSON-RPC 接口,使开发者可以继续使用熟悉的以太坊工具链进行交互。

通过这些接口,开发者可以:

• 查询账户信息

• 获取区块和交易数据

• 调用智能合约

• 发送交易

• 调试执行过程

本文将系统介绍 Polkadot Hub 当前支持的 JSON-RPC 方法,并配合示例进行说明,帮助开发者快速上手。

测试网络 RPC 入口

本文示例使用 Polkadot Hub 测试网的 RPC 节点:

bash 复制代码
https://services.polkadothub-rpc.com/testnet

所有请求均通过 HTTP POST 的方式发送,遵循 JSON-RPC 2.0 标准格式。

JSON-RPC 基础说明

JSON-RPC 是一种基于 JSON 的远程过程调用协议,Ethereum 节点普遍采用该协议作为标准接口。

基本请求格式如下:

bash 复制代码
{
  "jsonrpc": "2.0",
  "method": "方法名",
  "params": [],
  "id": 1
}

• jsonrpc:协议版本

• method:调用的方法名称

• params:参数数组

• id:请求标识符

账户与链信息接口

1. eth_accounts

功能: 返回当前客户端管理的地址列表。

参数: 无

用途: 查询节点钱包账户(通常用于本地节点)

2. eth_blockNumber

功能: 返回最新区块高度

参数: 无

用途: 获取当前链的同步进度

3. eth_chainId

功能: 返回当前链 ID

用途: 用于交易签名防止重放攻击

4. net_version

功能: 返回网络 ID

5. web3_clientVersion

功能: 返回客户端版本信息

合约调用与 Gas 相关接口

1. eth_call

功能: 执行一次"只读"合约调用,不会上链

常见用途:

• 查询余额

• 调用 view / pure 函数

• 读取状态变量

特点:

• 不消耗 Gas

• 不改变状态

2. eth_estimateGas

功能: 估算交易所需 Gas

用途:

• 发送交易前进行成本预估

• 防止 Gas 不足导致失败

3. eth_gasPrice

功能: 返回当前 Gas 单价(Wei)

4. eth_maxPriorityFeePerGas

功能: 返回建议的小费 Gas 价格(EIP-1559)

账户与合约状态查询

1. eth_getBalance

功能: 查询账户余额

单位: Wei

2. eth_getCode

功能: 获取地址上的合约字节码

用途:

• 判断是否为合约账户

• 调试部署问题

3. eth_getStorageAt

功能: 读取合约指定存储槽数据

用途:

• 底层调试

• 状态分析

4. eth_getTransactionCount

功能: 获取账户 nonce(交易序号)

用途:

• 构造交易时使用

• 防止重复交易

区块与交易查询接口

1. eth_getBlockByHash

通过区块 Hash 查询区块信息

2. eth_getBlockByNumber

通过区块高度查询区块

3. eth_getBlockTransactionCountByNumber

获取某个区块中的交易数量

4. eth_getBlockTransactionCountByHash

通过 Hash 查询交易数量

5. eth_getTransactionByHash

查询单笔交易详情

6. eth_getTransactionByBlockNumberAndIndex

按区块号和索引查询交易

7. eth_getTransactionByBlockHashAndIndex

按区块 Hash 和索引查询交易

8. eth_getTransactionReceipt

查询交易回执(是否成功、Gas 消耗、日志等)

这是判断交易状态的关键接口。

日志与事件查询

eth_getLogs

功能: 按条件查询合约事件日志

支持过滤条件:

• 区块范围

• 合约地址

• Topics

• BlockHash

用途:

• 监听合约事件

• 构建区块浏览器

• 数据分析

交易发送接口

1. eth_sendRawTransaction

功能: 发送已签名交易

特点:

• 本地签名

• 最安全

• 推荐方式

2. eth_sendTransaction

功能: 由节点代签交易

说明:

通常只适用于本地节点环境,生产环境较少使用。

节点状态接口

1. eth_syncing

查看节点是否同步中

2. net_listening

节点是否监听网络连接

3. net_peerCount

当前连接的节点数量

4. system_health

系统健康状态

调试与执行追踪接口(Debug API)

Polkadot Hub 还支持部分以太坊调试接口,方便开发者排查问题。

1. debug_traceBlockByNumber

追踪整个区块的执行过程

支持 tracer:

• callTracer

• opTracer

2. debug_traceTransaction

追踪单笔交易执行路径

常用于:

• 分析失败原因

• 调试复杂合约调用

3. debug_traceCall

对 eth_call 进行完整执行追踪

特点:

• 不上链

• 返回详细执行信息

返回结果格式说明

所有正常返回遵循 JSON-RPC 2.0 规范:

bash 复制代码
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": ...
}

错误处理机制

当发生错误时,返回格式如下:

bash 复制代码
{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32000,
    "message": "错误信息"
  }
}

开发者应在代码中正确处理 error 字段,避免程序异常。

技术意义与实践价值

通过这些 JSON-RPC 接口,Polkadot Hub 实现了与以太坊生态的高度兼容,带来以下优势:

1. 工具链复用

开发者可直接使用:

• MetaMask

• Ethers.js

• Web3.js

• Hardhat

• Foundry

等成熟工具。

2. 降低迁移成本

无需重写大量基础代码,即可部署和调试合约。

3. 方便调试与运维

Debug API 为复杂应用提供了完善的排查能力。

4. 支持多层生态建设

这些接口是:

• 区块浏览器

• 钱包

• 数据平台

• 分析系统

的基础设施。

总结

Polkadot Hub 通过完整实现 Ethereum JSON-RPC 接口体系,为以太坊开发者提供了一条低成本进入 Polkadot 生态的路径。

本文系统介绍了:

• 基础查询接口

• 合约调用接口

• 交易发送接口

• 日志查询接口

• 调试接口

• 错误处理机制

对于希望在 Polkadot 上部署 EVM 合约的开发者来说,理解这些接口是必备基础能力。

未来,随着 Polkadot EVM 生态的不断完善,这套接口体系将成为连接多链应用的重要桥梁。

原文链接:https://docs.polkadot.com/smart-contracts/for-eth-devs/json-rpc-apis/

相关推荐
网安情报局18 小时前
除了 CDN,DDoS 攻击还有哪些更有效的防护方式?
网络
Promise微笑19 小时前
2026年国产替代油介损测试仪:油介损全场景解决方案与技术演进
大数据·网络·人工智能
小小小米粒19 小时前
Collection单列集合、Map(Key - Value)双列集合,多继承实现。
java·开发语言·windows
czhc114007566320 小时前
C# 428 线程、异步
开发语言·c#
:12120 小时前
java基础
java·开发语言
SilentSamsara21 小时前
Python 环境搭建完整指南:从下载安装到运行第一个程序
开发语言·python
小短腿的代码世界21 小时前
Qt文件系统与IO深度解析:从QFile到异步文件操作
开发语言·qt
AnalogElectronic1 天前
linux 测试网络和端口是否连通的命令详解
linux·网络·php
harder3211 天前
RMP模式的创新突破
开发语言·学习·ios·swift·策略模式
jinanwuhuaguo1 天前
OpenClaw工程解剖——RAG、向量织构与“记忆宫殿”的索引拓扑学(第十三篇)
android·开发语言·人工智能·kotlin·拓扑学·openclaw