摘要
Solana 免费 API 让开发者无需支付节点基础设施费用即可读写 Solana 区块链。公共端点非常适合原型开发,但通常有速率限制和可靠性问题,可能影响生产应用。本指南介绍免费 Solana API 包含的内容、如何开始使用,以及何时迁移到托管或专用 RPC 提供商。
快速建议:何时免费 Solana API 足够
免费 Solana API 是学习、原型开发或运行低流量脚本的绝佳起点。如果你正在构建黑客松项目、测试钱包集成或为小型仪表板获取账户余额,公共端点很可能满足需求。
然而,一旦你的应用需要一致的性能、更高的吞吐量或历史数据,你应该考虑托管 RPC 服务。公共端点是共享的,通常有速率限制,在流量高峰时可能导致间歇性故障。对于生产工作负载,专用节点或具有明确服务级别的托管 RPC 提供商是更安全的选择。
以下是快速决策路径:
- 原型开发或学习:使用公共免费 API。
- 构建生产 dApp:使用具有免费层和付费计划的托管 RPC 提供商。
- 高吞吐量或归档数据:使用专用节点或提供归档和 WebSocket 支持的提供商。
如果你不确定哪种选项适合你的工作负载,请参阅我们的 RPC 定价 和 支持的 RPC 网络 页面了解更多详情。
什么是 Solana 免费 API?
Solana 免费 API 是公开可访问的端点,让你无需运行自己的节点即可与 Solana 区块链交互。它暴露 JSON-RPC 方法,允许你查询账户余额、发送交易、读取程序状态,并通过 WebSocket 订阅账户或程序更新。
大多数免费 API 由基础设施提供商或社区成员运营。它们方便,因为无需设置,但带有权衡:
- 速率限制:免费层通常限制每秒或每天的请求数。
- 可靠性:公共端点可能宕机或在网络拥塞时变慢。
- 数据可用性:一些免费 API 仅提供近期数据,而非完整历史状态。
对于许多开发者来说,免费 API 是迈向更强大解决方案的第一步。
如何开始使用免费 Solana API
开始使用免费 Solana API 很简单。你需要一个 RPC 端点 URL 和一个客户端库,如 @solana/web3.js。
以下是使用 OnFinality 官方公共端点进行 Solana 主网的基本示例:
const web3 = require('@solana/web3.js');
const connection = new web3.Connection(
'https://solana.api.onfinality.io/public',
'confirmed'
);
async function getBalance(pubkey) {
const publicKey = new web3.PublicKey(pubkey);
const balance = await connection.getBalance(publicKey);
console.log(`Balance: ${balance / web3.LAMPORTS_PER_SOL} SOL`);
}
getBalance('YourPublicKeyHere');
你也可以使用 curl 直接测试端点:
curl https://solana.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getHealth"}'
这应该返回类似 {"jsonrpc":"2.0","result":"ok","id":1} 的响应。
对于 WebSocket 订阅,使用 WebSocket URL:
const wsUrl = 'wss://solana.api.onfinality.io/public-ws';
const connection = new web3.Connection(wsUrl, 'confirmed');
const subscriptionId = connection.onAccountChange(
new web3.PublicKey('YourPublicKeyHere'),
(accountInfo) => {
console.log('Account changed:', accountInfo);
}
);
免费 Solana API 上有哪些可用方法?
免费 Solana API 支持 Solana 生态系统定义的标准 JSON-RPC 方法。这些包括:
- 账户和余额查询:
getBalance、getAccountInfo、getTokenAccountsByOwner - 交易和区块查询:
getTransaction、getBlock、getRecentBlockhash - 程序和状态查询:
getProgramAccounts、getSignaturesForAddress - 网络健康:
getHealth、getVersion、getSlot - WebSocket 订阅:
onAccountChange、onLogs、onProgramAccountChange
并非所有免费 API 都支持每种方法。有些可能禁用昂贵的方法,如 getProgramAccounts,以保护其基础设施。始终检查提供商的文档以了解特定方法的限制。
免费与付费 Solana API:有什么区别?
免费和付费 Solana API 的主要区别在于服务级别和可靠性。以下是比较:
| 功能 | 免费 API | 付费 API(托管 RPC) |
|---|---|---|
| 成本 | $0 | 订阅或按使用量计费 |
| 速率限制 | 严格(例如,10-40 req/s) | 更高限制或无硬上限 |
| 可靠性 | 尽力而为 | SLA 支持的正常运行时间 |
| 历史数据 | 有限 | 提供归档数据 |
| WebSocket 支持 | 通常有限 | 完全支持 |
| 专用资源 | 无 | 有(专用节点) |
| 支持 | 社区或无 | 技术支持 |
对于生产应用,付费服务的可靠性和可扩展性通常证明其成本合理。你可以从免费层开始,随着用户群增长而升级。
何时从免费 Solana API 升级
当你注意到以下任何情况时,应考虑升级:
- 速率限制错误:你的应用开始遇到
429 Too Many Requests响应。 - 延迟峰值:请求耗时超过预期,影响用户体验。
- 停机:公共端点在高峰时段不可用。
- 需要历史数据:你需要查询超出免费窗口的过去交易或账户状态。
- WebSocket 可靠性:你的应用依赖实时更新,连接频繁断开。
像 OnFinality 这样的托管 RPC 提供商提供 专用节点 和 RPC 服务,可以处理生产流量。你还可以探索 如何选择 RPC 提供商 获取详细的评估框架。
使用免费 Solana API 的常见陷阱
以下是开发者在使用免费 Solana API 时遇到的一些常见问题以及如何避免:
- 忽略速率限制:始终实现带有指数退避的重试逻辑。
- 使用错误的端点:确保在生产环境中使用主网端点,而不是 devnet。
- 不处理 WebSocket 重连:WebSocket 连接可能断开;实现自动重连。
- 假设数据新鲜度:免费 API 可能落后于最新插槽;适当使用
confirmed或finalized确认级别。 - 过度使用昂贵方法:像
getProgramAccounts这样的方法可能很重;尽可能缓存结果。
关键要点
- Solana 免费 API 是公共端点,让你无需运行节点即可与 Solana 交互。
- 免费 API 非常适合原型开发,但有速率限制和可靠性问题。
- 对于生产环境,考虑托管 RPC 提供商或专用节点。
- 在依赖免费 API 之前,始终检查方法支持和速率限制。
- 使用重试逻辑并处理 WebSocket 重连以构建健壮的应用。
常见问题解答
有免费的 Solana API 吗?
是的,许多提供商为 Solana 提供免费公共端点。例如,OnFinality 在 https://solana.api.onfinality.io/public 提供公共端点。
免费 Solana API 有哪些限制?
免费 API 通常有速率限制,可能不支持所有方法,并且没有正常运行时间保证。它们适用于开发和低流量使用。
我可以将免费 Solana API 用于生产吗?
不建议。生产应用需要可靠的性能和支持。考虑付费 RPC 服务或专用节点。
如何获取免费的 Solana API 密钥?
一些提供商即使对于免费层也要求 API 密钥。OnFinality 通过其 RPC 服务 提供免费层访问,需要注册。
Solana 主网和 devnet API 有什么区别?
主网 API 与实时 Solana 网络交互,而 devnet API 用于在测试网络上进行测试。Devnet 代币没有实际价值。有关更多信息,请参阅我们的 Solana devnet 指南。
如何在免费和付费 Solana API 之间选择?
评估你的流量、数据需求和可靠性要求。如果你需要高吞吐量或归档数据,付费服务值得投资。有关更多指导,请阅读我们的 RPC 提供商选择指南。