快速了解兼容 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/

相关推荐
liulilittle4 分钟前
KCC:在 BBR 思路上的一次探索
网络·tcp/ip·算法·bbr·通信·拥塞控制·kcc
码云骑士8 分钟前
13-列表append的底层真相(上)-listobject源码中的预分配策略
开发语言·python
.道阻且长.1 小时前
C++ string 操作指南:接口解析
java·c语言·开发语言·c++
蚰蜒螟1 小时前
Java 对象的内存密语:从字段偏移量计算到 Unsafe 访问的完整链路
java·开发语言
星辰_mya1 小时前
CountDownLatch深度解析
java·开发语言·后端·架构
27669582921 小时前
泡泡玛特app 腾讯企业加固/支付宝加固脱修frida rpc调用
网络·网络协议·rpc·frida·泡泡玛特·ppmt·泡泡玛特app-rpc调用
laplaya1 小时前
使用 vcpkg 管理 C++ 项目中的依赖
开发语言·c++
feixing_fx2 小时前
选择器的威力——深入理解优先级计算与层叠规则
开发语言·前端·css·前端框架·html
其实防守也摸鱼2 小时前
软件安全与漏洞--Windows底层原理与软件逆向工程基础
linux·网络·数据库·算法·安全·安全架构·软件安全与漏洞
薛定猫AI2 小时前
【深度解析】OpenRouter Fusion API 技术拆解:多模型融合架构的能力边界与工程实践
网络·架构