跳转至主要内容

X层RPC

借助 Quicknode,您可以接入我们的全球X Layer网络,该网络会始终将您的 API 请求路由至最近的可用节点,从而确保低延迟和最快的速度。

什么是 X Layer?

X Layer 是一款基于 zkEVM 技术构建的以太坊零知识汇总(zkRollup)第二层解决方案。它采用混合证明方法——先为执行过程生成 STARK 证明,然后将这些证明递归地封装到 SNARK 中,以实现高效的链上验证。这既确保了交易的数学有效性,又继承了以太坊的安全性。

与乐观汇总不同,X Layer 无需设置提币挑战期,因为有效性证明一旦提交,便能提供加密学上的确定性。最终确认取决于证明提交间隔——通常以分钟为单位而非以天为单位——但仍比乐观汇总更快。与以太坊主网相比,交易成本大幅降低,这主要得益于交易批处理和调用数据压缩。

X Layer 实现了与以太坊虚拟机(EVM)的字节码级兼容性。该 zkEVM 架构支持几乎所有的 EVM 操作码和预编译函数,仅在极少数特殊情况下(如 gas 费用)存在细微差异。这确保了大多数现有的以太坊智能合约和应用程序无需修改即可部署,在保持与以太坊执行环境、开发工具及开发者生态系统广泛兼容的同时,还提供了零知识安全保证。

与 X 层交互

X Layer 完全支持标准的以太坊 JSON-RPC 接口,同时还提供了额外的第二层(Layer 2)专用功能。这确保了与现有以太坊工具的完全兼容性,因此开发人员无需修改代码,即可无缝使用 X Layer 配合 MetaMask、Hardhat、Foundry 以及 Web3 库等工具。

借助 X Layer API,您可以:

  • 执行所有标准的以太坊 JSON-RPC 方法(eth_call, eth_sendTransaction, eth_getBalance)
  • 访问 X 层特有的 Rollup 操作方法(例如,查询证明状态和桥接交互)
  • 查询桥接活动、批量提交及证明验证状态
  • 通过 WebSocket 连接订阅实时 L2 事件
  • 利用现有的跟踪和检查工具,对区块链进行更深入的调试

您可以通过以下方式连接到该 API:

  • 运行本地 X Layer 节点
  • 使用托管服务提供商(例如 Quicknode X Layer 端点),该服务可提供高可靠性的 X Layer 主网访问、数据存档以及增强的性能

支持的网络

Quicknode 提供以下 X 层网络的接入服务:

主网
类型:制作
链 ID:
196
HTTP:
WSS:
存档:
修剪:
测试网
类型:测试网
链 ID:
1952
HTTP:
WSS:
存档:
修剪:
注:

XLayer 在区块处使用重新生成机制 42,810,021. 此区块之前的历史数据虽然可用,但存储在旧版节点上,当您为诸如 eth_getBlockByNumber, eth_getBalance,以及 debug_trace*.

区块 42,810,021 本身无法追踪,且可能会返回 {"code":4444,"message":"pruned history unavailable"}.

交易节点要求

X Layer 使用两种不同的节点客户端,它们在重创世边界(区块42,810,021)处分开:

  • 42,810,021 以及此前 — 需要一个 cdk-Erigon 节点。Geth 节点返回 null 用于这些历史交易。
  • 块之后 42,810,021 — 需要一个 盖斯 节点。Erigon 节点返回 null 用于这些当前交易。

要查询重生前的数据,请包含 x-qn-height 在请求中添加包含目标块编号的标头,以便将其路由到 cdk-Erigon 节点。如果没有此标头,请求将默认使用 盖斯 节点,因此对于“再生成”后的区块,不要求包含区块头。

“重生”前的示例(cdk-Erigon,区块号 ≤ 42,810,021):

curl --location 'https://docs-demo.xlayer-mainnet.quiknode.pro/' \
--header 'Content-Type: application/json' \
--header 'x-qn-height: 42810020' \
--data '{"method":"eth_getBlockByNumber","params":["0x28D3AA4",false],"id":1,"jsonrpc":"2.0"}'

重生后示例(盖斯,区块号 > 42,810,021):

curl --location 'https://docs-demo.xlayer-mainnet.quiknode.pro/' \
--header 'Content-Type: application/json' \
--data '{"method":"eth_getBlockByNumber","params":["0x28D3AA6",false],"id":1,"jsonrpc":"2.0"}'
分享此文档