摘要
选择 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 主网和测试网的官方设置:
| 网络 | 链 ID | 原生货币 | 浏览器 | 公共 RPC URL |
|---|---|---|---|---|
| ZKsync 主网 | 324 | ETH | https://explorer.zksync.io | https://zksync.api.onfinality.io/public |
| ZKsync Sepolia | 300 | ETH | https://sepolia.explorer.zksync.io | https://zksync-sepolia.api.onfinality.io/public |
这些 URL 是 OnFinality 提供的公共端点。对于生产环境,您应该获取专用 API 密钥以避免速率限制并确保可靠性。有关更多详细信息,请参阅 ZKsync 网络页面。
在 zkSync RPC 提供商中寻找什么
并非所有 RPC 提供商都是平等的。以下是选择 ZKsync 提供商时要评估的关键标准:
| 标准 | 检查什么 | 为什么重要 |
|---|---|---|
| 可靠性 | 正常运行时间历史、冗余端点、故障转移 | 停机会破坏您的应用程序并失去用户信任 |
| 吞吐量 | 速率限制(RPS)、突发容量、专用选项 | 高流量应用程序需要一致的性能 |
| 数据可用性 | 存档节点、eth_getLogs 支持、历史数据 | 索引器和分析需要完整历史 |
| 传输 | HTTPS 和 WebSocket 支持 | 实时应用程序需要 WSS 订阅 |
| zkSync 特定方法 | 支持 zks_getBlockDetails、zks_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 获得专用节点。有关更多信息,请参阅 专用节点。