Logo
新用户订阅 RPC,首月享 6.5 折优惠查看优惠
RPC Assistant

如何为生产应用选择 zkSync RPC 提供商

摘要

选择 zkSync RPC 提供商意味着在可靠性、吞吐量和 zkSync 特定功能之间取得平衡。本指南介绍了在选择提供商时应注意的事项,比较了公共、共享和专用选项,并帮助您决定哪种适合您的工作负载。我们涵盖了链设置、关键 RPC 方法以及在使用 ZKsync 构建时需避免的常见陷阱。

快速建议:将提供商与您的工作负载匹配

在比较供应商之前,请确定您的应用程序实际需要从 zkSync RPC 提供商那里获得什么。钱包或简单的 dApp 前端通常可以在公共端点上运行。每秒发出数千个请求的交易机器人、索引器或分析服务将需要专用节点或具有慷慨速率限制和存档数据的提供商。

问自己这些问题:

  • 您期望每秒多少请求? 公共端点通常将每个客户端的速率限制在 10–100 RPS。如果您的流量是突发或持续的,您需要一个可以扩展的提供商。
  • 您需要历史状态吗? 索引器和分析工具通常需要大范围的 eth_getLogs 或存档数据。并非所有提供商都提供存档节点。
  • 您需要 WebSocket 支持吗? 实时应用程序(如订单簿或事件监听器)依赖 eth_subscribe。检查提供商是否支持 WSS 及其订阅限制。
  • 您对停机的容忍度是多少? 如果您的应用程序是生产环境,单个公共端点是有风险的。考虑具有多个端点、故障转移或专用集群的提供商。

对于大多数生产工作负载,像 OnFinality 这样的托管 RPC 提供商提供了可靠性和可扩展性的平衡。您获得稳定的端点、访问多个网络,并在超出共享基础设施时可以选择升级到专用节点。有关详细信息,请参阅 RPC 定价支持的网络

zkSync RPC 基础知识:您连接的是什么

ZKsync 是一个以太坊 Layer 2 扩展解决方案,使用零知识卷叠(ZK rollups)来提高吞吐量并降低交易成本。它与 EVM 兼容,这意味着大多数以太坊工具只需很少的更改即可使用。然而,ZKsync 有自己的 JSON-RPC API,扩展了标准以太坊 API,增加了 L2 特定的方法。

当您与 ZKsync 交互时,您向端点发送 JSON-RPC 请求。端点可以是公共节点、共享提供商或您自己运行的专用节点。提供商处理底层节点基础设施,包括同步、存储和网络连接。

链设置一览

如果您正在配置钱包或 dApp,您需要正确的链详细信息。以下是 ZKsync 主网和测试网的官方设置:

这些 URL 是 OnFinality 提供的公共端点。对于生产环境,您应该获取专用 API 密钥以避免速率限制并确保可靠性。有关更多详细信息,请参阅 ZKsync 网络页面

在 zkSync RPC 提供商中寻找什么

并非所有 RPC 提供商都是平等的。以下是选择 ZKsync 提供商时要评估的关键标准:

标准检查什么为什么重要
可靠性正常运行时间历史、冗余端点、故障转移停机会破坏您的应用程序并失去用户信任
吞吐量速率限制(RPS)、突发容量、专用选项高流量应用程序需要一致的性能
数据可用性存档节点、eth_getLogs 支持、历史数据索引器和分析需要完整历史
传输HTTPS 和 WebSocket 支持实时应用程序需要 WSS 订阅
zkSync 特定方法支持 zks_getBlockDetailszks_getTransactionDetails某些应用程序需要 L2 特定数据
定价免费层、按需付费、专用定价成本应与您的使用量成比例
支持文档、SLA、社区当出现问题时您需要帮助

公共 vs. 共享 vs. 专用

  • 公共端点 免费且易于使用,但速率受限,不适合生产环境。它们适用于测试和小型项目。
  • 共享 RPC 提供商 提供托管端点,具有更高的速率限制和附加功能,如存档数据和 WebSocket 支持。它们是大多数生产应用程序的良好默认选择。
  • 专用节点 为您提供单租户节点,没有共享资源。它们提供最高的性能和可靠性,但成本更高。它们非常适合高吞吐量应用程序、索引器和企业。

OnFinality 提供共享和专用选项。您可以从共享端点开始,随着需求增长升级到专用节点。有关详细信息,请参阅 RPC 定价

如何使用提供商连接到 ZKsync

选择提供商后,您需要配置应用程序以使用端点。以下是使用 ethers.js 连接到 ZKsync 主网的示例:

const { ethers } = require("ethers");

// 替换为您的提供商的端点
const RPC_URL = "https://zksync.api.onfinality.io/public";

const provider = new ethers.JsonRpcProvider(RPC_URL);

async function getBlockNumber() {
  const blockNumber = await provider.getBlockNumber();
  console.log("当前区块号:", blockNumber);
}

getBlockNumber();

对于 WebSocket 支持,使用 ethers.WebSocketProvider

const { ethers } = require("ethers");

const WSS_URL = "wss://zksync.api.onfinality.io/public";
const provider = new ethers.WebSocketProvider(WSS_URL);

provider.on("block", (blockNumber) => {
  console.log("新区块:", blockNumber);
});

请注意,公共端点可能不支持 WebSocket。请与您的提供商确认正确的 WSS URL。

您将使用的关键 zkSync RPC 方法

ZKsync 支持标准的以太坊 JSON-RPC 方法,以及一些 L2 特定的方法。以下是最常见的方法:

  • eth_blockNumber – 获取最新区块号
  • eth_getBalance – 获取地址的余额
  • eth_call – 执行只读合约调用
  • eth_sendRawTransaction – 发送已签名的交易
  • eth_getTransactionReceipt – 获取交易收据
  • eth_getLogs – 查询日志(用于索引)
  • zks_getBlockDetails – 获取区块的详细信息(L2 特定)
  • zks_getTransactionDetails – 获取交易的详细信息(L2 特定)

您可以使用简单的 curl 请求测试这些方法:

curl -X POST https://zksync.api.onfinality.io/public \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

使用 zkSync RPC 时的常见陷阱

即使使用好的提供商,您也可能会遇到问题。以下是一些常见陷阱以及如何避免它们:

  • 速率限制:公共端点通常限制每秒请求数。如果达到限制,您将收到错误。使用具有更高限制的提供商或实现重试逻辑。
  • 缺少存档数据:一些提供商只提供完整节点,不存储历史状态。如果您需要查询旧区块,您需要存档节点。
  • WebSocket 断开:WebSocket 连接可能会断开。在您的应用程序中实现重新连接逻辑。
  • 错误的链 ID:确保使用正确的链 ID(主网为 324,Sepolia 为 300)。使用错误的链 ID 将导致交易失败。
  • L2 特定方法:并非所有提供商都支持 zks_* 方法。如果您需要它们,请验证您的提供商是否支持。

生产就绪检查清单

在启动您的应用程序之前,请完成此检查清单:

  • 选择满足您吞吐量和数据需求的提供商
  • 获取专用 API 密钥(不是公共端点)
  • 为您的 RPC 端点设置监控
  • 为速率限制和网络错误实现重试逻辑
  • 使用具有重新连接功能的 WebSocket 实现实时功能
  • 先在 ZKsync Sepolia 上测试
  • 准备备用提供商以防停机

关键要点

  • ZKsync 是一个与 EVM 兼容的 L2,具有自己的 JSON-RPC API。
  • 根据您的工作负载选择提供商:公共用于测试,共享用于生产,专用用于高吞吐量。
  • 检查存档数据、WebSocket 支持和 zkSync 特定方法。
  • 使用正确的链 ID 和端点区分主网和测试网。
  • 监控您的端点并制定备用计划。

常见问题解答

最好的 zkSync RPC 提供商是什么?

最好的提供商取决于您的需求。对于生产环境,寻找具有高可靠性、良好吞吐量并支持 zkSync 特定方法的提供商。OnFinality 提供共享和专用选项。

我可以使用公共 zkSync RPC 端点用于生产吗?

公共端点速率受限,不建议用于生产。它们适用于测试和开发。

OnFinality 支持 ZKsync 吗?

是的,OnFinality 支持 ZKsync 主网和 Sepolia 测试网。有关详细信息,请参阅 ZKsync 网络页面

ZKsync 主网的链 ID 是多少?

链 ID 是 324。

如何获得专用的 zkSync RPC 节点?

您可以从 OnFinality 获得专用节点。有关更多信息,请参阅 专用节点

RPC 知识库

相关 RPC 内容

网络 RPCHydraDX

什么是 HydraDX,如何通过 RPC 连接到它?

# 什么是 HydraDX,如何通过 RPC 连接到它? HydraDX(现已更名为 Hydration)是一个构建在 Polkadot 上的下一代 DeFi 协议,作为平行链运行。其旗舰产品是 Omnipool,一种创新的自动做市商(AMM),将所有资产整合到一个单一交易池中,从而实现资本高效的兑...

网络 RPCEthereum

Ethereum区块链API:它是什么以及如何连接你的dApp

Ethereum区块链API是让你的应用程序从Ethereum网络读取数据并发送交易的接口。它主要基于JSON-RPC(一种轻量级协议,被所有Ethereum客户端使用),通常通过像ethers.js或web3.js这样对开发者友好的库来访问。对于生产级应用,选择一个拥有良好正常运行时间、速率限制和...

网络 RPCSORA

什么是SORA区块链以及如何连接它?

# 什么是SORA区块链以及如何连接它? SORA是一个旨在创建去中心化货币体系和经济基础设施的区块链平台。它基于Hyperledger Iroha v3构建,采用单一逻辑账本、确定性最终性和基于通道的扩展,以支持支付、DeFi、CBDC和企业应用。该网络通过民主机制进行治理,旨在为全球市场提供统一...

网络 RPCPolygon

什么是Polygon RPC端点,如何选择合适的端点?

# 什么是Polygon RPC端点,如何选择合适的端点? Polygon RPC(远程过程调用)端点是一个URL,允许您的dApp、钱包或后端服务与Polygon区块链通信。由于Polygon兼容EVM,您可以使用标准的以太坊JSON-RPC方法来查询余额、发送交易以及与智能合约交互。RPC提供商...

区块链基础设施TON

什么是TON节点,何时应该运行一个?

TON节点是存储The Open Network区块链完整状态、验证交易并为应用程序提供数据的软件客户端。运行自己的节点可以让你直接、不受限制地访问网络,但也需要大量的运维开销。对于大多数开发者来说,使用托管RPC端点或来自OnFinality等提供商的专用节点,是一种更快、更可靠且无需维护负担的替...

网络 RPCPolkadotAsset Hub

Polkadot Asset Hub 迁移:开发者中继链过渡指南

# Polkadot Asset Hub 迁移:开发者中继链过渡指南 Polkadot Asset Hub 迁移于 2025 年 11 月 4 日执行,将核心面向用户的功能——余额、质押、治理——从中继链迁移到 Asset Hub 系统平行链。这一架构转变减少了中继链的膨胀,实现了更快的升级,并为 ...

永远不用担心基础设施

OnFinality 消除了 DevOps 的繁重工作,让您能够更聪明、更快地构建。

开始