X Layer 是一个兼容以太坊 JSON-RPC 并支持 ZKEVM RPC 方法的 zkEVM 区块链网络,开发者可以通过标准接口与其进行交互。本文将全面介绍其主要网络与测试网络的接入方式、支持的 RPC 方法及使用建议。
在开始之前,请注意:X Layer 对每个 IP 地址的请求频率限制为每秒 100 次,无论是在主网还是测试网络。
主网信息 (chain-id: 0xC4, 十进制 196)
X Layer 主网为正式上线的生产环境,其基础配置如下:
- 网络 ChainID: 196
RPC 接入点:
测试网络信息 (chain-id: 0xC3, 十进制 195)
测试网络适用于开发与调试阶段,配置如下:
- 网络 ChainID: 195
RPC 接入点:
支持的 JSON-RPC 方法
X Layer 提供两类 RPC 方法:一类兼容标准的以太坊 JSON-RPC,另一类为专为 zkEVM 设计的 ZKEVM RPC 方法。
一、以太坊兼容 RPC 方法
以下是 X Layer 已支持的以太坊标准 RPC 方法列表。若方法未在下表中列出,则表示暂不支持。如需详细了解各方法,可参考以太坊官方 JSON-RPC 文档。
| 方法名 | 命名空间 | 说明 |
|---|---|---|
| web3_clientVersion | Web3 | 获取客户端版本号 |
| web3_sha3 | Web3 | 计算给定数据的 keccak-256 哈希(非标准 SHA3-256) |
| net_version | Net | 返回当前网络 ID |
| eth_protocolVersion | ETH | 返回值始终为 ‘zero’ |
| eth_syncing | ETH | 返回同步状态数据对象或 false |
| eth_gasPrice | ETH | 返回当前 Gas 价格(以 OKB 计价) |
| eth_blockNumber | ETH | 返回当前区块高度 |
| eth_chainId | ETH | 返回十六进制格式的网络链 ID |
| eth_getBalance | ETH | 根据账户地址和区块号查询余额 |
| eth_getStorageAt | ETH | 获取指定账户的存储内容 |
| eth_getTransactionCount | ETH | 返回某地址在特定区块的交易数量 |
| eth_getBlockTransactionCountByNumber | ETH | 返回指定区块号的交易总数 |
| eth_getBlockTransactionCountByHash | ETH | 返回指定区块哈希的交易总数 |
| eth_getCode | ETH | 返回合约地址的字节码 |
| eth_sign | ETH | 对数据进行以太坊签名 |
| eth_sendTransaction | ETH | 发送交易 |
| eth_sendRawTransaction | ETH | 发送已签名的原始交易 |
| eth_call | ETH | 执行消息调用(不上链) |
| eth_estimateGas | ETH | 估算交易所需 Gas 量 |
| eth_getBlockByNumber | ETH | 根据区块号获取区块信息 |
| eth_getBlockByHash | ETH | 根据区块哈希获取区块信息 |
| eth_getTransactionByHash | ETH | 根据交易哈希获取交易详情 |
| eth_getTransactionByBlockHashAndIndex | ETH | 根据区块哈希和交易索引获取交易 |
| eth_getTransactionReceipt | ETH | 根据交易哈希获取交易回执 |
| eth_newFilter | ETH | 创建新日志过滤器 |
| eth_newBlockFilter | ETH | 创建新区块过滤器 |
| eth_uninstallFilter | ETH | 卸载过滤器 |
| eth_getFilterChanges | ETH | 轮询过滤器的新日志 |
| eth_getLogs | ETH | 根据筛选条件返回日志数组 |
| eth_getFilterLogs | ETH | 返回符合过滤器 ID 的所有日志 |
| eth_getTransactionbyBlockNumberAndIndex | ETH | 根据区块高度和索引获取交易 |
| eth_subscribe | WebSocket | 通过 JSON-RPC 订阅事件 |
| eth_unsubscribe | WebSocket | 取消事件订阅 |
| debug_traceBlockByHash | Debug | 跟踪指定哈希区块的所有交易执行过程 |
| debug_traceBlockByNumber | Debug | 跟踪指定区块号的所有交易执行过程 |
| debug_traceTransaction | Debug | 跟踪指定交易的所有执行轨迹 |
注意:部分方法如eth_getCompilers、eth_getUncleCountByBlockHash、txpool_content等目前返回为空,不支持相关功能。
二、ZKEVM 专用 RPC 方法
除了以太坊兼容方法外,X Layer 还提供了一系列 ZKEVM 专用方法,用于处理零知识证明相关的批次操作与状态查询:
| 方法名 | 功能描述 |
|---|---|
| zkevm_batchNumber | 返回最新的批次号 |
| zkevm_batchNumberByBlockNumber | 返回与某区块关联的批次号 |
| zkevm_consolidatedBlockNumber | 返回已验证的最新批次所关联的区块号 |
| zkevm_getBatchByNumber | 根据批次号获取批次详情 |
| zkevm_isBlockVirtualized | 检查某区块是否已虚拟化 |
| zkevm_isBlockConsolidated | 检查某区块是否已验证 |
| zkevm_virtualBatchNumber | 返回最新虚拟化批次号 |
| zkevm_verifiedBatchNumber | 返回最新已验证批次号 |
常用 ZKEVM 方法详解
zkevm_batchNumber
返回最新的批次编号。
- 参数:无
- 返回:十六进制格式的批次号
zkevm_batchNumberByBlockNumber
返回某区块所对应的批次号。
- 参数:区块高度(十六进制字符串)
- 返回:十六进制格式的批次号
zkevm_getBatchByNumber
获取指定批次的详细信息,包括 coinbase 地址、状态根、全局退出根、时间戳、交易列表等。
- 参数:批次号(十六进制)或标签(如
latest、earliest) - 返回:批次对象结构
zkevm_isBlockConsolidated
判断某区块是否已经关联到已验证的批次。
- 参数:区块高度(十六进制)
- 返回:布尔值(true / false)
zkevm_verifiedBatchNumber
返回最新已验证的批次号。
- 参数:无
- 返回:最新已验证批次号
基础设施服务提供商
如果公共 RPC 无法满足高频或企业级需求,您也可以选择以下专业基础设施服务商,它们提供免费或高可用性的专用 RPC 服务:
- ZAN: 提供节点服务和 API 支持
- Ankr: 多链节点与部署基础设施解决方案
常见问题
X Layer 的 RPC 请求是否有限制?
是的,X Layer 对每个 IP 地址的请求频率限制为每秒 100 次,适用于主网和测试网。
如何在代码中连接 X Layer 网络?
您可以使用 Web3.js、Ethers.js 或其它兼容以太坊的开发库,通过填入相应的 RPC URL 和 ChainID(主网196,测试网195)即可连接。
是否支持 WebSocket 订阅?
是的,X Layer 支持通过 eth_subscribe 和 eth_unsubscribe 方法进行事件订阅,如新区块和日志监听。
哪些以太坊方法在 X Layer 中不受支持?
目前如 eth_getCompilers、与叔块相关的方法以及 txpool_content 返回为空或暂未实现。
ZKEVM 方法的主要用途是什么?
ZKEVM 方法主要用于查询和验证与零知识证明相关的批次状态,包括批次号、验证状态、虚拟化状态等,适合高级开发者和节点操作者使用。
如果遇到 RPC 连接问题怎么办?
建议首先检查网络设置和 ChainID 是否正确,如果问题持续,可尝试切换不同的 RPC 地址或使用专业基础设施服务。
希望本指南帮助您高效使用 X Layer 的 RPC 接口。无论是构建 dApp、调试智能合约还是管理节点,掌握这些方法将大大提升您的开发体验。