摘要
PublicNode 为希望在不投入付费基础设施的情况下测试应用的开发者提供免费的 Solana RPC 端点。本文介绍如何查找和使用 PublicNode Solana RPC 端点、预期的速率限制和可靠性,以及何时为生产工作负载迁移到像 OnFinality 这样的托管或专用 RPC 提供商。
PublicNode 是一项免费的 RPC 服务,为包括 Solana 在内的多个区块链网络提供公共端点。开发者经常搜索确切的端点 URL、如何配置他们的钱包或 dApp,以及免费服务附带哪些限制。
本文为您提供实用细节:如何连接到 PublicNode Solana RPC 端点、在速率限制和可靠性方面预期如何,以及何时应考虑使用像 OnFinality 这样的托管 RPC 提供商用于生产工作负载。
快速决策:何时使用 PublicNode 与托管提供商
在深入端点细节之前,这里有一个快速框架,帮助您决定哪种 RPC 路线适合您的阶段:
- 原型和黑客松:PublicNode 的免费端点适用于快速实验、小型脚本和学习 Solana 开发。您无需创建账户即可开始。
- 构建生产级 dApp:如果您的应用服务真实用户,您需要一致的性能、更高的速率限制和支持。像 OnFinality 这样的托管 RPC 提供商提供专用节点和可扩展的 API 访问。
- 运行验证者或高频机器人:您可能需要具有低延迟且无共享速率限制的专用节点。PublicNode 的免费层并非为此设计。
如果您仍在评估,请查看 Solana RPC 提供商比较 以获得更广泛的视角。
什么是 PublicNode?
PublicNode 是一个社区驱动的 RPC 提供商,为多个网络提供免费的公共端点。它通常被那些希望无需运行自己的节点即可与区块链交互的开发者使用。
对于 Solana,PublicNode 提供 HTTP 端点和 WebSocket 端点。这些端点在所有用户之间共享,这意味着它们带有速率限制且没有正常运行时间保证。
PublicNode Solana RPC 端点详情
PublicNode 的 Solana RPC 端点是:
https://rpc.publicnode.com
这是 JSON-RPC 请求的基础 URL。您可以将其与任何 Solana RPC 客户端一起使用,例如 @solana/web3.js。
以下是使用 curl 的简单 getVersion 请求示例:
curl https://rpc.publicnode.com \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getVersion"}'
预期响应:
{"jsonrpc":"2.0","result":{"feature-set":2891141728,"solana-core":"1.18.22"},"id":1}
请注意,PublicNode 可能会随时间更改其端点 URL 或添加身份验证要求。始终查看官方 PublicNode 文档以获取最新端点。
将 Solana dApp 连接到 PublicNode
如果您使用 @solana/web3.js,您可以使用 PublicNode 端点创建 Connection 对象:
import { Connection } from '@solana/web3.js';
const connection = new Connection('https://rpc.publicnode.com', 'confirmed');
// 示例:获取最新区块哈希
const blockhash = await connection.getLatestBlockhash();
console.log(blockhash);
对于 WebSocket 订阅(例如,账户更改),您需要 WebSocket URL,PublicNode 也提供该 URL。但是,免费端点通常限制 WebSocket 使用或需要单独连接。
速率限制和可靠性:预期什么
PublicNode 是一项免费服务,因此存在限制:
- 速率限制:PublicNode 施加速率限制以防止滥用。确切限制并不总是公布,并且可能更改。如果超过限制,您可能会收到 HTTP 429 错误。
- 正常运行时间:没有 SLA。服务可能因维护而停机或经历中断。
- 数据保留:PublicNode 可能不提供完整的归档数据。Solana 的
getTransaction及类似方法可能仅返回近期数据。 - 无支持:如果您遇到问题,您依赖社区论坛或 Discord。
这些限制使 PublicNode 适用于开发和测试,但对于生产应用来说风险较大,因为停机或速率限制会直接影响用户。
何时迁移到托管 RPC 提供商
随着项目的发展,您可能需要:
- 更高的速率限制:托管提供商提供分层计划,具有更高的每秒请求数(RPS)配额。
- 专用节点:为了获得一致的性能,您可以获得不与其他用户共享的专用 Solana 节点。
- 归档数据:如果您的应用需要历史交易数据,您需要归档节点。PublicNode 可能不提供。
- WebSocket 支持:对于实时更新,可靠的 WebSocket 连接至关重要。
- 支持和 SLA:托管提供商提供支持和正常运行时间保证。
OnFinality 提供托管 Solana RPC 端点,支持 HTTP 和 WebSocket。您可以从免费层开始,并根据需要扩展到专用节点。有关详细信息,请参阅 RPC 定价。
比较 PublicNode 和 OnFinality 的 Solana 服务
下表总结了主要差异:
| 功能 | PublicNode | OnFinality |
|---|---|---|
| 成本 | 免费 | 免费层和付费计划 |
| 速率限制 | 共享,有限 | 可配置,更高限制 |
| 正常运行时间 SLA | 无 | 付费计划可用 |
| 归档数据 | 不保证 | 可按需提供 |
| WebSocket | 是,但有限 | 是,专用 WebSocket URL |
| 支持 | 社区 | 专门支持 |
| 专用节点 | 否 | 是 |
OnFinality 还提供 Solana Devnet 端点 用于测试,这对开发很有用。
使用 PublicNode Solana 的常见问题排查
如果您遇到 PublicNode 端点的问题,以下是常见问题和修复方法:
- HTTP 429 请求过多:您被限流了。降低请求频率或切换到付费提供商。
- 连接超时:免费端点可能过载。使用指数退避重试。
- 数据缺失:如果您需要历史交易,请使用归档提供商。
- WebSocket 断开:免费 WebSocket 端点可能断开连接。实现重连逻辑。
以下是 JavaScript 中的简单重试逻辑示例:
async function rpcCall(method, params) {
const response = await fetch('https://rpc.publicnode.com', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ jsonrpc: '2.0', id: 1, method, params })
});
if (response.status === 429) {
await new Promise(resolve => setTimeout(resolve, 1000));
return rpcCall(method, params);
}
return response.json();
}
关键要点
- PublicNode 在
https://rpc.publicnode.com提供免费的 Solana RPC 端点。 - 它适用于开发和测试,但由于速率限制和缺乏 SLA,不适合生产环境。
- 对于生产应用,请考虑像 OnFinality 这样的托管 RPC 提供商,它提供可扩展且可靠的基础设施。
- 始终查看官方 PublicNode 文档以获取最新端点和限制。
常见问题解答
PublicNode Solana RPC 是免费的吗?
是的,PublicNode 为 Solana 和其他网络提供免费的公共 RPC 端点。
PublicNode Solana 的速率限制是多少?
PublicNode 不公布确切的速率限制。它们可能会更改,并在所有用户之间共享。
我可以将 PublicNode 用于生产 dApp 吗?
不建议,因为缺乏 SLA、速率限制和潜在的停机。像 OnFinality 这样的托管提供商更适合生产环境。
PublicNode 支持 WebSocket 吗?
是的,PublicNode 提供 WebSocket 端点,但可能有额外限制。
如何获得专用的 Solana RPC 端点?
您可以从 OnFinality 获得专用的 Solana 节点。访问 Solana 网络页面 了解更多信息。