Logo
新用户订阅 RPC,首月享 6.5 折优惠查看优惠
RPC Assistant

什么是 Solana 浏览器 API,如何使用它?

摘要

Solana 浏览器 API 允许你以编程方式查询链上数据,如交易、账户和区块,为自定义浏览器和分析仪表板提供支持。本文解释了核心 RPC 方法、如何选择公共端点与托管端点,以及如何构建简单的浏览器查询工作流。

快速决策指南:公共端点与托管 RPC

在编写任何代码之前,请决定要查询哪个 Solana RPC 端点。公共 api.mainnet-beta.solana.com 端点有速率限制且没有 SLA,因此适合偶尔手动检查,但不适合生产环境的浏览器功能。如果您正在构建仪表板、索引器或任何发出大量请求的工具,则需要一个托管 RPC 提供商,提供更高的吞吐量、WebSocket 支持和专用容量。

对于生产工作负载,OnFinality 在 https://solana.api.onfinality.io/public 提供托管 Solana RPC 端点,并在 wss://solana.api.onfinality.io/public-ws 提供 WebSocket 支持。您还可以配置专用节点以获得专属容量。查看 RPC 定价 页面了解计划详情,以及支持的网络页面获取完整列表。

如果您只是手动探索链,Solana 浏览器 是无需编写代码即可检查交易和账户的最简单方式。但如果您想构建自己的浏览器或将链上数据集成到您的应用中,则需要 RPC API。

什么是 Solana 浏览器 API?

Solana 浏览器 API 是一组 JSON-RPC 方法,允许您以编程方式检索链上数据。无需点击网页浏览器,您可以使用 HTTP 或 WebSocket 请求查询相同的数据——交易、账户、区块、代币余额。这是自定义浏览器、分析仪表板、投资组合跟踪器和后端服务的基础。

Solana RPC API 提供了读取网络状态、发送交易、模拟执行以及订阅实时更新的方法。用于浏览器类功能的最常见方法有:

  • getBlock – 按槽号检索区块,包括交易和奖励。
  • getTransaction – 按签名获取交易,支持解析或原始 JSON。
  • getAccountInfo – 获取账户的数据、lamports 和所有者。
  • getBalance – 获取地址的 SOL 余额。
  • getTokenAccountsByOwner – 列出由地址拥有的代币账户。
  • getSignaturesForAddress – 获取地址的近期交易签名。
  • getLatestBlockhash – 获取当前区块哈希以构建交易。

这些方法直接映射到区块浏览器中看到的内容。例如,当您在 Solscan 上打开一笔交易时,浏览器在后台调用 getTransaction

构建浏览器的关键 RPC 方法

让我们通过具体示例来看最常用的方法。您可以使用 curl 或任何 HTTP 客户端测试这些方法。

获取账户信息

要获取账户(例如钱包或程序)的数据,请使用 getAccountInfo。响应包括账户的 lamport 余额、所有者程序和原始数据。

curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getAccountInfo",
    "params": [
      "GgPpTKg78vmzgvPpNsKKBf5WJyNTfXCyhLNQ4TfFhNiT",
      {"encoding": "jsonParsed"}
    ]
  }'

获取地址的近期交易

要列出地址的近期交易签名,请使用 getSignaturesForAddress。这是浏览器交易历史页面使用的。

curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getSignaturesForAddress",
    "params": [
      "GgPpTKg78vmzgvPpNsKKBf5WJyNTfXCyhLNQ4TfFhNiT",
      {"limit": 5}
    ]
  }'

获取交易详情

获得签名后,使用 getTransaction 获取完整交易详情。使用 "encoding": "jsonParsed" 获取可读的指令数据。

curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getTransaction",
    "params": [
      "5Uu3mQyUH...",
      {"encoding": "jsonParsed"}
    ]
  }'

获取代币余额

对于代币持有量,使用 getTokenAccountsByOwner。这将返回地址拥有的所有代币账户,包括铸币厂和余额。

curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getTokenAccountsByOwner",
    "params": [
      "GgPpTKg78vmzgvPpNsKKBf5WJyNTfXCyhLNQ4TfFhNiT",
      {"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},
      {"encoding": "jsonParsed"}
    ]
  }'

使用 WebSocket 进行实时更新

如果您想要实时更新——例如,监控新交易或账户变化——请使用 WebSocket 端点。Solana 的 accountSubscribe 方法允许您监听账户的变化。

const ws = new WebSocket("wss://solana.api.onfinality.io/public-ws");

ws.onopen = () => {
  ws.send(JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "accountSubscribe",
    params: [
      "GgPpTKg78vmzgvPpNsKKBf5WJyNTfXCyhLNQ4TfFhNiT",
      {"encoding": "base64", "commitment": "finalized"}
    ]
  }));
};

ws.onmessage = (event) => {
  console.log(JSON.parse(event.data));
};

WebSocket 连接非常适合实时仪表板,但它们需要支持持久连接的提供商。公共端点通常限制 WebSocket 使用,因此建议在生产环境中使用托管提供商。

比较浏览器数据源

构建浏览器时,您有几种获取链上数据的选项。下表比较了主要方法。

数据源最适合限制
公共 RPC 端点手动检查、原型开发速率限制、无 SLA、无 WebSocket 保证
托管 RPC 提供商生产应用、中等流量需要 API 密钥或订阅
专用节点高吞吐量、自定义需求成本更高、运维开销
网页浏览器 UI人工浏览不可编程

对于大多数生产浏览器功能,托管 RPC 提供商在可靠性和成本之间提供了最佳平衡。如果您需要完全控制节点配置或有非常高的查询量,专用节点可能值得考虑。

常见陷阱及如何避免

构建浏览器 API 集成可能会遇到一些常见问题。以下是一些注意事项:

速率限制

公共端点会积极限制请求。如果您发送太多请求,您将收到 429 Too Many Requests 错误。使用具有更高限制的托管提供商,并在客户端实现退避。

承诺级别

Solana 交易分阶段处理:processedconfirmedfinalized。如果您在交易最终确定之前查询,可能会得到 null 或不完整的数据。始终在请求中指定承诺级别,对于浏览器显示,使用 finalized 以避免显示未确认的数据。

大响应

getTransaction 使用 jsonParsed 可能返回较大的负载,尤其是对于复杂交易。考虑使用 base64 编码原始数据并在客户端解析以减少带宽。

WebSocket 重连

WebSocket 连接可能会断开。实现具有指数退避的重连逻辑,以维持可靠的实时数据流。

生产就绪检查清单

在启动浏览器或分析工具之前,请检查以下清单:

  • 使用具有专用端点的托管 RPC 提供商进行生产。
  • 在所有查询中设置适当的承诺级别(confirmedfinalized)。
  • 在客户端实现速率限制和重试逻辑。
  • 使用 WebSocket 订阅进行实时更新,并处理重连。
  • 缓存频繁访问的数据(例如账户信息、区块数据)以减少 RPC 负载。
  • 监控 RPC 使用情况,并设置错误或延迟警报。

关键要点

  • Solana 浏览器 API 是链上数据的编程接口,使用 JSON-RPC 方法,如 getTransactiongetAccountInfo
  • 公共端点适合测试,但不适合生产;使用像 OnFinality 这样的托管 RPC 提供商以获得可靠访问。
  • WebSocket 订阅支持实时更新,但需要支持持久连接的提供商。
  • 始终指定承诺级别并处理速率限制,以构建健壮的浏览器。

常见问题解答

区块浏览器和浏览器 API 有什么区别?

区块浏览器是一个以人类可读格式显示链上数据的 Web 应用程序。浏览器 API 是底层 RPC 接口,允许您以编程方式查询相同的数据。您可以在 API 之上构建自己的浏览器 UI。

我可以将公共 Solana RPC 端点用于生产吗?

公共端点有速率限制且没有 SLA,因此不建议用于生产。请使用托管 RPC 提供商或专用节点以获得可靠访问。

如何获取地址的交易历史?

使用 getSignaturesForAddress 方法获取近期交易签名,然后使用 getTransaction 获取每个签名的详细信息。请注意,此方法仅返回近期历史(最多约 10 分钟或几千笔交易),因此要获取完整历史,您需要索引器或归档节点。

Solana RPC 中的承诺级别是什么?

承诺级别决定了 RPC 返回交易或账户状态前需要确认的程度。processed 表示交易已收到,confirmed 表示交易已包含在区块中,finalized 表示区块已被集群确认。对于浏览器显示,使用 finalized 以避免显示未确认的数据。

OnFinality 是否支持 Solana 的 WebSocket?

是的,OnFinality 在 wss://solana.api.onfinality.io/public-ws 提供 Solana 的 WebSocket 端点。查看 Solana 网络页面 了解详情。

RPC 知识库

相关 RPC 内容

故障排查

'authentication failed: encrypted http response nonce mismatch' 是什么意思?如何修复?

'authentication failed: encrypted http response nonce mismatch' 错误是 TLS 重放保护失败。当加密 HTTP 响应中的 nonce 值与客户端期望的值不匹配时会发生此错误。最常见的原因是并发 HTTP/2 请求共享 TLS 会话 no...

RPC 提供商选择Solana

2025年Solana验证者最佳API有哪些?

验证者需要用于监控、质押和RPC访问的API。本指南将介绍关键的API类别、评估标准,以及如何为您的验证者运营选择合适的基础设施。...

RPC 故障排查

What is a nonce in crypto and how does it affect RPC calls?

A nonce is a number used once in cryptographic communications. In crypto, it serves two primary purposes: as a counter in proof-of-work mining (Bitcoi...

区块链基础设施

什么是 dOrg,它是如何运作的?

dOrg 是一个去中心化自治组织(DAO),由资深 Web3 开发者和构建者组成。它为协议、DeFi 项目和机构提供区块链和 AI 开发服务,作为团队扩展或按里程碑付费的承包商,而非传统代理机构。 对于评估 dOrg 的开发者来说,了解其结构、合作模式以及它与内部招聘或其他服务提供商的比较是关键。本...

RPC 提供商选择

什么是面向 dapp 的私有 RPC 端点,何时应该使用它们?

私有 RPC 端点是带有 API 密钥的唯一 URL,为你的 dapp 提供一条进入节点提供商基础设施的专属认证通道。与所有用户共享的公共端点不同,私有端点提供专用的速率限制、更好的可靠性和可观测性。本指南解释了公共端点、私有端点和专用端点之间的区别,并帮助你决定你的 dapp 需要哪一种。...

RPC 提供商选择

PublicNode 速率限制:预期与规划指南

PublicNode 为许多链提供免费的 RPC 端点,但像大多数公共服务一样,它应用速率限制以保护共享基础设施。本文解释了这些限制通常如何工作、如何检测它们,以及何时为生产工作负载迁移到专用或商业 RPC 提供商。...

永远不用担心基础设施

OnFinality 消除了 DevOps 的繁重工作,让您能够更聪明、更快地构建。

开始