摘要
Solana 端点是您的 dApp 或后端用于向 Solana 网络发送 JSON-RPC 请求的 URL。选择合适的端点会影响延迟、可靠性以及您的应用在负载下的扩展能力。本指南解释了什么是 Solana 端点、如何配置端点,以及如何评估生产环境中的提供商。
快速推荐:您应该使用哪个 Solana 端点?
如果您正在 Solana 上构建生产级 dApp 或后端服务,您需要一个能够处理持续流量且不会出现意外限流的端点。公共端点适合原型开发,但它们通常会限制请求频率,并且可能无法可靠地支持 WebSocket 订阅。对于生产环境,请考虑使用像 OnFinality 这样的托管 RPC 提供商,它们提供专用节点和具有明确使用限制的共享端点。请查看 RPC 定价 和 支持的网络 页面,了解哪种方案适合您的工作负载。
什么是 Solana 端点?
Solana 端点是一个通过 HTTP 或 WebSocket 接受 JSON-RPC 请求的 URL。它是读取链上数据、提交交易以及订阅账户或程序更新的入口。Solana 的 JSON-RPC API 与以太坊的不同,因此您需要使用 getBalance、getRecentBlockhash 和 sendTransaction 等方法,而不是 eth_getBalance。
例如,OnFinality 为 Solana mainnet 提供的官方公共端点是 https://solana.api.onfinality.io/public,WebSocket 端点为 wss://solana.api.onfinality.io/public-ws。您可以在开发中使用这些端点,但对于生产环境,您应该评估专用或共享的私有端点。
Solana 端点配置:Mainnet 和 Devnet
当您连接 Solana 时,需要指定网络。mainnet 端点用于真实资产,而 devnet 用于测试。以下是一个快速参考:
| 网络 | RPC URL (OnFinality) | WebSocket URL | 浏览器 |
|---|---|---|---|
| Mainnet | https://solana.api.onfinality.io/public | wss://solana.api.onfinality.io/public-ws | explorer.solana.com |
| Devnet | 参见 Solana Devnet | 参见 Solana Devnet | explorer.solana.com |
对于 devnet,您可以从水龙头获取 SOL 来测试交易。OnFinality 的 devnet 页面提供了端点和水龙头详细信息。
如何连接 Solana RPC:代码示例
以下是一个基本的 curl 请求,用于从 mainnet 端点获取当前 slot(最新区块高度):
curl https://solana.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getSlot"}'
要获取钱包地址的余额:
curl https://solana.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getBalance","params":["GgBq..."]}'
对于 JavaScript,您可以使用 @solana/web3.js 库:
import { Connection, PublicKey } from '@solana/web3.js';
const connection = new Connection('https://solana.api.onfinality.io/public', 'confirmed');
const address = new PublicKey('GgBq...');
const balance = await connection.getBalance(address);
console.log('Balance:', balance / 1e9, 'SOL');
对于 WebSocket 订阅,请使用 wss 端点:
const connection = new Connection('wss://solana.api.onfinality.io/public-ws', 'confirmed');
const subscriptionId = connection.onAccountChange(address, (accountInfo) => {
console.log('Account changed:', accountInfo);
});
Solana 端点与 Solana RPC 提供商:有什么区别?
端点只是一个 URL。提供商是背后的基础设施——节点、负载均衡器、监控和支持。当您使用公共端点时,您依赖提供商的共享基础设施。对于生产环境,您需要考虑:
- 速率限制:公共端点通常有严格的限制。请查看提供商的文档。
- 可靠性:单个节点可能会宕机。拥有多个节点的提供商提供更好的正常运行时间。
- WebSocket 支持:对于实时订阅至关重要。
- 归档数据:对于历史查询(如使用特定 slot 的
getTransaction)是必需的。
OnFinality 提供共享和专用的 Solana 节点。专用节点为您提供隔离的资源并可预测的性能。请参阅 专用节点 了解详情。
如何为生产环境选择 Solana 端点提供商
在评估提供商时,请比较以下因素:
| 因素 | 检查内容 | 重要性 |
|---|---|---|
| 正常运行时间 | 提供商的状态页面 | 停机意味着您的应用失败 |
| 速率限制 | 每秒请求数、每日配额 | 避免负载下被限流 |
| WebSocket | 订阅支持 | 实时功能所需 |
| 归档数据 | 历史访问 | 分析或审计所需 |
| 支持 | SLA、响应时间 | 对生产问题至关重要 |
| 定价 | 透明、可预测 | 避免意外账单 |
OnFinality 在 RPC 定价 页面上提供清晰的定价,并在 网络 页面上列出支持的网络。
常见的 Solana 端点错误及解决方法
以下是开发人员遇到的典型问题:
429 Too Many Requests:您达到了速率限制。请使用私有端点或降低请求频率。Connection refused:端点已关闭或 URL 错误。请检查网络并重试。WebSocket connection failed:您的防火墙可能阻止了wss。请确保您的环境允许 WebSocket 连接。Slot skipped:节点落后。请使用基础设施更好的提供商。
Solana 端点安全与最佳实践
- 切勿在客户端代码中暴露您的 API 密钥。请使用后端代理。
- 使用 HTTPS/WSS 加密流量。
- 设置请求超时,避免挂起。
- 通过健康检查监控您的端点。
关键要点
- Solana 端点是用于 JSON-RPC 请求的 URL。
- 公共端点用于开发;生产环境需要可靠的提供商。
- OnFinality 提供公共和专用的 Solana 端点。
- 在正常运行时间、速率限制、WebSocket、归档数据和支持方面比较提供商。
常见问题解答
什么是官方 Solana 端点?
Solana mainnet 的官方公共端点是 https://solana.api.onfinality.io/public。对于 devnet,请参阅 Solana Devnet 页面。
如何免费获取 Solana 端点? 您可以在开发中使用公共端点。对于生产环境,请考虑具有更好限制的付费计划。
HTTP 和 WebSocket 端点有什么区别? HTTP 用于一次性请求;WebSocket 用于实时订阅。
我可以使用 Solana 端点进行 NFT 铸造吗? 可以,您可以发送交易和查询元数据,但您需要一个可靠的端点来处理负载。
如何在共享和专用 Solana 节点之间选择? 共享节点对于低流量具有成本效益;专用节点为高吞吐量提供隔离资源。请参阅 专用节点。