摘要
Solana 浏览器 API 是驱动区块浏览器的 JSON-RPC 接口,允许开发者查询交易、账户和区块。本文解释了如何将其用于调试和分析,以及如何为生产工作负载选择可靠的 RPC 提供商。
快速决策指南:应该使用哪个 Solana API?
在编写任何代码之前,请确定您需要公共 RPC 端点、托管 API 服务还是专用节点。选择取决于您的工作负载:
- 原型开发或轻量测试:公共端点如
https://solana.api.onfinality.io/public适用于偶尔的请求。 - 生产 dApp 或索引器:您需要一个可靠、可扩展的 RPC 提供商,具有高吞吐量和低延迟。OnFinality 的托管 Solana RPC 提供共享和专用选项。
- 重分析或归档数据:考虑专用节点或支持归档数据的提供商。
对于大多数生产用例,托管 RPC 服务是合适的选择,因为它处理基础设施、扩展和故障转移。如果您需要完全控制或自定义配置,专用节点 可能更好。查看 RPC 定价 以比较选项。
什么是 Solana 浏览器 API?
Solana 浏览器 API 是像 Solana Explorer 这样的区块浏览器用来获取链上数据的 JSON-RPC 接口。它允许您查询交易、账户、区块和网络状态。开发人员使用它来构建仪表板、监控活动和调试应用程序。
该 API 本质上与标准 Solana RPC API 相同。术语“浏览器 API”通常指为浏览器功能提供支持的只读方法,例如 getTransaction、getAccountInfo 和 getBlock。这些方法是 Solana JSON-RPC 规范的一部分。
探索 Solana 数据的关键方法
以下是检查链上数据最有用的方法:
| 方法 | 描述 | 用例 |
|---|---|---|
getTransaction | 通过签名获取交易 | 验证交易的状态和详细信息 |
getAccountInfo | 获取账户余额和数据 | 检查代币余额或程序状态 |
getBlock | 通过 slot 获取区块 | 分析区块内容和奖励 |
getSignaturesForAddress | 列出地址的交易签名 | 显示账户的交易历史 |
getBalance | 获取账户的 SOL 余额 | 快速余额检查 |
getLatestBlockhash | 获取最新区块哈希 | 准备交易 |
这些方法是只读的,不需要发送交易。它们非常适合构建浏览器、分析工具和监控系统。
如何调用 Solana 浏览器 API
您可以使用任何 HTTP 客户端调用 Solana JSON-RPC API。以下是一个 curl 示例,用于通过签名获取交易:
curl https://solana.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getTransaction",
"params": [
"2mN7Z1mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3",
{
"encoding": "jsonParsed",
"maxSupportedTransactionVersion": 0
}
]
}'
将签名替换为浏览器中的真实签名。jsonParsed 编码提供人类可读的 JSON,而不是原始二进制。
在 JavaScript 中使用 API
对于 JavaScript 应用程序,您可以使用官方的 @solana/web3.js 库。以下是获取交易的示例:
import { Connection, PublicKey } from '@solana/web3.js';
const connection = new Connection('https://solana.api.onfinality.io/public');
const signature = '2mN7Z1mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3mQmZ3';
const tx = await connection.getParsedTransaction(signature, {
maxSupportedTransactionVersion: 0
});
console.log(tx);
这将为您提供一个解析后的交易对象,其中包含账户密钥、指令和余额。
使用浏览器 API 时的常见陷阱
- 速率限制:公共端点通常有速率限制。如果您发出许多请求,可能会收到 429 错误。对于生产环境,请使用具有更高限制的托管提供商。
- 交易版本:较新的 Solana 交易可能使用版本 0。始终设置
maxSupportedTransactionVersion为 0 以避免错误。 - 编码:使用
jsonParsed获取可读数据,但请注意,对于大型负载,它可能比base58慢。 - Slot 延迟:交易后数据可能不会立即可用。查询前等待几秒钟。
如何为浏览器类工作负载选择 Solana RPC 提供商
如果您正在构建浏览器或分析工具,您需要一个能够处理高读取吞吐量的提供商。考虑以下因素:
| 因素 | 检查内容 | 为什么重要 |
|---|---|---|
| 吞吐量 | 每秒请求数 (RPS) 限制 | 高流量需要高 RPS |
| 延迟 | 不同区域的响应时间 | 低延迟改善用户体验 |
| 可靠性 | 正常运行时间历史和故障转移 | 避免停机 |
| 数据保留 | 归档数据可用性 | 历史查询需要归档节点 |
| WebSocket 支持 | 实时订阅 | 浏览器的实时更新 |
OnFinality 提供 Solana RPC 端点,支持 HTTP 和 WebSocket。您可以从共享端点开始,随着流量增长升级到 专用节点。
使用浏览器 API 进行调试
当交易失败时,浏览器 API 可以帮助您诊断问题。使用 getTransaction 检查错误消息和日志。例如,失败的交易将在响应中具有 err 字段。
您还可以使用 getSignaturesForAddress 查看账户的近期交易并检查其状态。这对于监控和调试很有用。
关键要点
- Solana 浏览器 API 是用于读取链上数据的 JSON-RPC 接口。
- 使用
getTransaction、getAccountInfo和getBlock等方法检查数据。 - 公共端点适合测试,但生产应用程序需要可靠的提供商。
- 根据吞吐量、延迟、可靠性和数据保留选择提供商。
- OnFinality 提供托管 Solana RPC 和专用节点 以实现可扩展的基础设施。
常见问题解答
Solana 浏览器 API 和 RPC API 有什么区别?
浏览器 API 本质上与 RPC API 相同。它指的是区块浏览器用于获取数据的只读方法。
我可以使用浏览器 API 发送交易吗?
不能,浏览器 API 是只读的。要发送交易,您需要通过 RPC API 签名并提交。
如何获取 Solana RPC 端点?
您可以使用公共端点,如 https://solana.api.onfinality.io/public,或在 OnFinality 注册托管服务。
OnFinality 是否支持 Solana devnet?
是的,OnFinality 提供 Solana devnet RPC 用于测试。
监控 Solana 交易的最佳方式是什么?
使用 WebSocket 订阅获取实时更新,或使用 getSignaturesForAddress 轮询 RPC API。