摘要
私有 RPC 端点是带有 API 密钥的唯一 URL,为你的 dapp 提供一条进入节点提供商基础设施的专属认证通道。与所有用户共享的公共端点不同,私有端点提供专用的速率限制、更好的可靠性和可观测性。本指南解释了公共端点、私有端点和专用端点之间的区别,并帮助你决定你的 dapp 需要哪一种。
快速建议:你的 dapp 何时需要私有端点?
在比较提供商之前,先决定哪种访问模式适合你的工作负载。下表将常见的 dapp 场景映射到正确的端点类型。
| 场景 | 推荐访问方式 | 原因 |
|---|---|---|
| 原型、黑客松、低流量 | 公共端点 | 免费,无需设置,但速率限制严格且共享 |
| 中等流量的生产 dapp | 私有共享端点 | 专用速率限制、更好的可靠性和可观测性,而无需专用节点的成本 |
| 高吞吐量或数据密集型 dapp | 专用节点 | 一致的性能、自定义配置,且没有吵闹的邻居 |
| 交易机器人或延迟敏感型应用 | 具有低延迟路由的专用节点 | 最小化往返时间并减少失败的交易提交 |
如果你的 dapp 已过原型阶段并预期有稳定流量,私有 RPC 端点通常是正确的下一步。它为你提供带有 API 密钥的唯一 URL,因此你的请求不再排在共享公共端点的其他用户之后。你还拥有自己的速率限制和使用分析,这使得调试和容量规划更加容易。
对于大多数生产 dapp,私有共享端点在成本和性能之间取得了适当的平衡。只有当你需要一致的吞吐量、自定义节点配置或访问共享端点通常限制的存档数据和跟踪方法时,才迁移到专用节点。
什么是私有 RPC 端点?
RPC 端点是你的 dapp 用来与区块链节点通信的 URL。它接受 JSON-RPC 请求,如“这个地址的余额是多少?”或“广播此交易”,并将它们转发到运行链软件的节点。
私有 RPC 端点是一个只有你能使用的唯一 URL 的端点。它通常包含 API 密钥或认证令牌,为你提供进入提供商基础设施的专属认证通道。这里的“私有”意味着专属于你,而不是匿名或加密。它不会向公共内存池隐藏你的交易,也不会保护你免受 MEV 机器人的攻击。
私有端点不同于私有交易。私有交易是一些提供商提供的单独功能,用于将你的交易排除在公共内存池之外,直到它被包含在区块中,这可以降低 MEV 风险。私有 RPC 端点本身不会这样做。
公共 vs. 私有 vs. 专用:有什么区别?
可以将它们视为三个级别的访问:
- 公共端点 由所有人共享。它们免费,但速率限制严格,没有保证,也没有支持。它们适合测试,但不适合生产。
- 私有共享端点 是专属于你的,但仍然在共享基础设施上运行。你拥有自己的速率限制、更好的可靠性和使用分析。这是大多数生产 dapp 使用的。
- 专用节点 是单租户基础设施。你拥有自己的节点实例,这意味着一致的性能、对配置的完全控制,并且没有吵闹的邻居。这适用于高吞吐量或数据密集型工作负载。
下表总结了主要区别:
| 特性 | 公共 | 私有共享 | 专用 |
|---|---|---|---|
| URL 唯一性 | 共享 | 带 API 密钥的唯一 URL | 带 API 密钥的唯一 URL |
| 速率限制 | 严格,共享 | 自定义,按密钥 | 自定义,按节点 |
| 可靠性 | 尽力而为 | 良好 | 高 |
| 可观测性 | 无 | 基本使用统计 | 完整指标和日志 |
| 配置 | 无 | 有限 | 完全控制 |
| 成本 | 免费 | 订阅 | 更高 |
如何创建私有 RPC 端点
使用大多数提供商创建私有 RPC 端点都很简单。以下是通用工作流程:
- 注册 一个 RPC 提供商(如 OnFinality)的账户。
- 创建 API 密钥 或项目。这将生成一个带有你的密钥的唯一 URL。
- 选择网络 你要连接的网络(例如,Ethereum、Solana、Base)。
- 复制你的端点 URL 并在你的 dapp 配置中使用它。
例如,使用 OnFinality,你可以通过在仪表板中创建 API 密钥来获取任何受支持网络的私有端点。URL 看起来像:
https://your-project-id.region.rpc.onfinality.io
然后你在 dapp 的配置中使用此 URL。以下是使用 ethers.js 的示例:
import { ethers } from "ethers";
const provider = new ethers.JsonRpcProvider(
"https://your-project-id.region.rpc.onfinality.io"
);
const blockNumber = await provider.getBlockNumber();
console.log(blockNumber);
对于 viem:
import { createPublicClient, http } from "viem";
import { mainnet } from "viem/chains";
const client = createPublicClient({
chain: mainnet,
transport: http("https://your-project-id.region.rpc.onfinality.io"),
});
const blockNumber = await client.getBlockNumber();
console.log(blockNumber);
私有端点能做什么和不能做什么
私有端点主要提高可靠性并减少失败的提交。它们不会为你的交易提供匿名性或隐私。以下是细分:
- 能:为你提供专用的速率限制,因此你的请求不太可能被限制。
- 能:提供更好的正常运行时间和性能,因为你不会与人群竞争。
- 能:允许你查看自己的使用指标,这有助于调试和容量规划。
- 不能:向公共内存池隐藏你的交易。你的交易数据仍然对任何观察网络的人可见。
- 不能:保护你免受 MEV 机器人的攻击。为此,你需要私有交易路由,这是一个单独的功能。
何时私有端点不够用
私有共享端点有局限性。如果你的 dapp 需要以下任何一项,请考虑使用专用节点:
- 一致的高吞吐量:如果你经常达到速率限制,专用节点会给你更多余量。
- 存档数据:如果你需要任何区块的历史状态,你需要一个存档节点。许多共享端点只提供最近的状态。
- 跟踪方法:出于安全原因,共享端点通常限制
debug_traceTransaction等方法。 - 自定义配置:如果你需要启用特定标志或运行自己的节点版本,则必须使用专用节点。
如何评估提供私有端点的 RPC 提供商
在比较提供商时,请关注以下标准:
| 标准 | 要检查什么 | 为什么重要 |
|---|---|---|
| 速率限制 | 每秒请求数(RPS)和每日上限 | 超出限制会导致 429 错误和服务降级 |
| 网络覆盖 | 提供商是否支持你需要的所有链? | 避免为不同链管理多个提供商 |
| WebSocket 支持 | 用于实时订阅 | 对于 DEX 监控、订单簿和实时更新至关重要 |
| 存档数据 | 访问历史状态 | 索引和分析所需 |
| 地理延迟 | 边缘缓存或区域端点 | 较低的延迟减少交易提交的往返时间 |
| 认证 | API 密钥或基于 JWT | 私有端点必需;保持密钥安全 |
| 可观测性 | 使用仪表板和日志 | 帮助调试问题和规划容量 |
在比较提供商时使用此清单,包括 OnFinality 的 RPC 服务。
常见陷阱和故障排除
即使使用私有端点,你也可能遇到问题。以下是常见问题及解决方法:
- 超出速率限制(429):你发送了太多请求。升级你的套餐或优化你的 dapp 以缓存数据并减少冗余调用。
- 认证错误(401):你的 API 密钥无效或缺失。仔细检查你的端点 URL,并确保密钥正确包含。
- WebSocket 断开:如果你使用 WebSocket 进行实时数据,请确保你的提供商支持它,并且你处理了重连逻辑。
- 响应缓慢:检查你的地理区域。如果你的提供商有更接近用户的端点,请使用它们。
关键要点
- 私有 RPC 端点为你的 dapp 提供唯一的、经过认证的 URL,具有专用的速率限制和更好的可靠性。
- 它们不同于私有交易,私有交易可防止 MEV。
- 公共端点用于测试;私有共享端点用于大多数生产 dapp;专用节点用于高吞吐量或数据密集型工作负载。
- 根据速率限制、网络覆盖、WebSocket 支持、存档数据、延迟和可观测性来评估提供商。
- 使用清单比较提供商,并选择适合你 dapp 需求的提供商。
常见问题解答
什么是私有 RPC 端点?
私有 RPC 端点是一个带有 API 密钥的唯一 URL,只有你能使用。它为你的 dapp 提供进入节点提供商基础设施的专属认证通道,具有专用的速率限制和更好的可靠性。
公共 RPC 端点和私有 RPC 端点有什么区别?
公共端点由所有用户共享,并且速率限制严格。私有端点专属于你,具有自定义速率限制和更好的性能。
私有 RPC 端点会让我的交易私有吗?
不会。私有 RPC 端点不会向公共内存池隐藏你的交易。它只为你提供专用连接。对于交易隐私,你需要私有交易路由,这是一个单独的功能。
何时应该使用专用节点而不是私有共享端点?
当你需要一致的高吞吐量、存档数据、跟踪方法或自定义配置时,请使用专用节点。对于大多数生产 dapp,私有共享端点就足够了。
如何获取私有 RPC 端点?
注册一个 RPC 提供商(如 OnFinality),创建 API 密钥,选择你的网络,并在你的 dapp 中使用提供的 URL。有关更多详细信息,请参阅 RPC 定价 和 支持的网络。