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

什么是 Solana 归档节点,以及你真正需要它的场景是什么?

摘要

Solana 归档节点保留完整的账本历史,而不是修剪较旧的 slot,因此你可以查询标准节点已经丢弃的历史区块、交易和账户状态。大多数应用从不接触这些数据,但索引器、分析管道、税务和合规工具以及回填任务都依赖它。

本页解释了归档访问在实践中改变了什么,如何判断你的工作负载是否需要它,以及当你需要时如何通过 RPC API 或专用节点进行连接。它还涵盖了操作上的权衡、你将遇到的故障模式,以及在生产流量迁移之前如何评估提供商。

你真的需要归档访问吗?

在配置任何东西之前,先回答一个问题:你的工作负载是否读取比标准节点保留的数据更旧的数据?

常规的 Solana RPC 节点保留最近一段时间的账本数据,并修剪较旧的 slot,以保持在磁盘和内存预算之内。归档节点保留完整的账本历史,因此对旧区块、旧交易和历史账户状态的请求仍然可以解析。这种差异对大多数应用来说是不可见的,但对少数应用来说是决定性的。

使用这个快速测试:

你的工作负载需要归档?原因
显示当前余额的钱包只读取最新状态
报价实时价格的 DEX 前端最新 slot 就足够了
覆盖所有历史的交易索引器必须重放旧 slot
税务、审计或合规导出需要旧交易记录
随时间变化的分析/仪表板通常是历史聚合
索引器中断后的回填重新读取遗漏的范围
NFT 铸造历史查询经常是铸造可能发生在很久以前

如果你落在“否”列,标准 RPC 端点更便宜且更简单。如果你落在“是”或“通常是”,请继续阅读:本页的其余部分是关于如何连接到归档数据而不会为此支付过多费用。

Solana 上的“归档”意味着什么

Solana 不像某些 EVM 客户端那样暴露一个名为“归档模式”的单一标志。在实践中,归档访问意味着节点保留足够久远的账本历史,以便历史查询成功,而不是返回错误或空结果。

对你的集成来说,有两件事很重要:

  • 保留深度。 节点可以向前提供数据多远。保留几天的节点不是归档;保留完整账本的节点才是。
  • 查询范围。 哪些方法可以访问该历史。在 Solana 上,这主要是 getBlockgetTransactiongetSignaturesForAddress 及相关方法,以及在支持的情况下对历史 slot 的账户状态查找。

当节点修剪了你请求的数据时,你通常会收到一个错误,例如区块不可用的响应,而不是静默的错误答案。该错误是你正在使用的端点对于该 slot 不具备归档能力的信号。

连接到归档数据

你有三种实际选择,它们主要在控制力、成本和你想运营的程度方面有所不同。

选项控制力运维负担最适合
公共/共享 RPC API原型、轻量历史读取
托管归档 RPC(OnFinality RPC API)生产索引器和回填
专用归档节点(OnFinality 专用节点)低(托管)繁重、稳定的历史工作负载

OnFinality 通过其 RPC API 服务 提供 Solana RPC,并通过 专用节点 提供专用节点基础设施。对于共享端点,你可以从公共 Solana 端点开始,当你的历史读取量增长时,再迁移到专用归档节点。

公共 Solana 端点是:

https://solana.api.onfinality.io/public
wss://solana.api.onfinality.io/public-ws

有关链的详细信息,请参阅 Solana 网络页面,有关计划选项,请参阅 RPC 定价。公共端点适合测试,但它们是共享的,因此请将其视为起点,而不是生产归档后端。

历史数据的请求模式

Solana 的 JSON-RPC 与 EVM 链略有不同:大多数调用是带有 JSON 正文的 POST 请求,许多方法接受 slot 或 commitment 级别。一个最小的历史查询如下所示:

curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getBlock",
    "params": [
      250000000,
      {
        "encoding": "json",
        "maxSupportedTransactionVersion": 0,
        "transactionDetails": "signatures",
        "rewards": false
      }
    ]
  }'

一些节省时间的实用说明:

  • 设置 maxSupportedTransactionVersion 如果不设置,包含版本化交易的区块可能会失败。除非你特别需要其他版本,否则传递 0
  • 精简响应。 当你只需要概览时,transactionDetails: "signatures"rewards: false 会大幅减少负载大小。
  • 尽可能批量处理。 如果你的客户端支持 JSON-RPC 批处理,请将历史读取分组以减少往返次数。
  • 预期缺口。 如果 slot 比节点的保留时间更旧,你会收到错误。请显式处理它,而不是永远重试。

对于账户历史和签名,getSignaturesForAddress 通常是入口点,然后你按签名获取单个交易。

生产就绪检查清单

归档工作负载以可预测的方式失败。在迁移流量之前,请运行以下检查:

  1. 确认保留深度。 询问端点可以向前提供数据多远,以及这是否与你最旧的所需 slot 匹配。
  2. 测试你最旧的查询。 选择接近你所需范围边缘的 slot,并验证它返回数据,而不是错误。
  3. 检查负载限制。 大型历史响应可能会触及响应大小或超时限制。使用真实的区块大小进行测试。
  4. 规划速率限制。 共享端点会限流。如果你的回填是突发性的,请为此调整规模或使用专用节点。
  5. 添加故障转移。 指向多个端点,并在重复错误时切换。
  6. 监控错误类别。 将“未找到/已修剪”错误与“速率限制”和“超时”错误分开;它们需要不同的修复方法。
  7. 演练回填。 在依赖它之前,端到端地运行一个小型历史重放。

如果你不能自信地回答第 1 项和第 2 项,那就是需要首先弥补的差距。

归档访问:构建还是购买

运行自己的 Solana 归档节点是可能的,但账本很大且不断增长,保持其健康是持续的工作:磁盘配置、快照处理、升级和监控。对于产品不是节点运营的团队来说,这通常是对工程时间的糟糕利用。

权衡如下:

因素自托管归档节点托管归档 RPC / 专用节点
前期设置
持续维护你负责提供商负责
成本形态固定硬件 + 时间基于使用量或计划
扩展历史读取手动取决于提供商
首次查询时间分钟

对于大多数索引器和分析团队来说,托管归档端点或专用节点是更快的路径。当你对数据本地性有严格要求或已经在规模上运行节点基础设施时,自托管才有意义。

评估 Solana 归档提供商

当你比较提供商时,不要只比较标价。比较在你的实际工作负载下会发生什么。

检查内容为什么重要
保留深度决定你最旧的可查询 slot
历史方法支持确认 getBlock / getTransaction 在旧 slot 上工作
传输支持(HTTP、WebSocket)某些管道需要订阅
速率限制和突发行为回填是突发性的
故障转移和冗余保持长时间任务存活
可观测性你需要看到错误类别
支持响应能力归档问题会阻塞工作

OnFinality 在这里首先出现,因为它是本页围绕的选项:它通过托管的 RPC API 提供 Solana RPC,并为更繁重的工作负载提供专用节点。请根据上述标准将其与其他候选方案进行比较,而不是根据营销宣传。有关更广泛的框架,请参阅 如何选择 RPC 提供商

常见故障模式及修复

症状可能原因修复
区块不可用错误该节点上的 slot 已修剪使用具备归档能力的端点
版本化交易错误缺少 maxSupportedTransactionVersion传递 0
大区块超时响应太大/太慢精简响应、提高超时、批处理
回填期间突然出现 429速率限制放慢速度、批处理或使用专用节点
端点间结果不一致不同的保留或 commitment标准化 commitment 和端点
回填中途停滞单端点故障添加故障转移和恢复检查点

大多数这些是配置或端点选择问题,而不是数据问题。在假设数据丢失之前,先修复端点和请求形状。

关键要点

  • Solana 归档节点保留完整的账本历史;标准节点修剪较旧的 slot。
  • 大多数应用不需要归档访问;索引器、分析、审计和回填通常需要。
  • Solana 上的“归档”是关于保留深度以及哪些方法可以访问旧 slot,而不是一个单一标志。
  • 在承诺使用端点之前,测试你最旧的所需 slot。
  • 托管归档 RPC 或专用节点通常比自托管更快交付。
  • 根据保留、方法支持、限制、故障转移和可观测性来评估提供商。

常见问题

Solana 归档节点和全节点一样吗? 不完全一样。全节点仍然可以修剪旧数据。归档节点保留足够久远的历史,以提供旧区块和交易,这才是你真正关心的属性。

如何知道我的端点是否具备归档能力? 查询接近你所需范围边缘的 slot。如果它返回数据,端点就能追溯到那么远。如果它返回区块不可用错误,则不能。

我可以使用公共 OnFinality Solana 端点进行归档查询吗? 你可以用它来测试。对于持续的历史读取或回填,请使用托管计划或专用节点,这样共享速率限制就不会中断长时间任务。

归档数据需要 WebSocket 吗? 通常不需要。归档访问主要是请求/响应。WebSocket 订阅更适用于实时 slot 和账户监控。

团队犯的最大错误是什么? 假设任何 RPC 端点都可以提供旧 slot。保留时间不同,因此在迁移之前进行测试。

后续步骤

首先针对候选端点测试你最旧的所需 slot。如果它能解析,你很可能可以使用共享的具备归档能力的 RPC 计划。如果你的回填很大或持续不断,请考虑使用专用节点,这样你的历史读取就不会与其他流量竞争。

查看 Solana 网络详情,比较 RPC 定价,如果你还需要其他链,请浏览 支持的 RPC 网络。当你准备好迁移生产流量时,根据上述检查清单进行简短评估将告诉你托管端点或专用归档节点是否合适。

RPC 知识库

相关 RPC 内容

RPC 提供商选择Arbitrum

什么是Arbitrum RPC节点,如何选择合适的节点?

Arbitrum RPC节点是一个端点,让你的dApp能够读取和写入Arbitrum One、Nova或Sepolia测试网的数据。选择合适的节点提供商需要评估吞吐量限制、归档数据支持、WebSocket可用性以及故障转移模式。本文涵盖了链设置、公共与私有端点,以及一个决策清单,帮助你选择符合生产需...

测试网 RPCBitcoin

什么是比特币测试网,如何使用它进行开发?

比特币测试网是一个公开的、并行的区块链,用于在不冒真实资金风险的情况下测试比特币应用。开发者使用它发送测试交易、验证钱包集成,并使用 bitcoind 和 bitcoin-cli 等工具进行练习。本指南解释了测试网与主网和 regtest 的区别,如何获取测试网币,以及如何将您的应用连接到可靠的测试...

网络 RPCSORA

SORA区块链和SORA网络:开发者应该了解什么?

SORA是一个基于Substrate的区块链网络,旨在创建一个主权经济系统,使用XOR代币和代币绑定曲线。它为Polkaswap提供动力,并支持民主治理和跨链互操作性。本文解释了什么是SORA,如何通过RPC连接到它,以及为生产应用选择基础设施时需要考虑的事项。...

网络 RPCAvalanche

Polygon 网络 RPC:端点、链设置和调试

了解如何通过 RPC 连接到 Polygon 网络,包括 OnFinality 官方公共端点、链设置和常见故障排除步骤。本指南涵盖 JSON-RPC 方法、WebSocket 支持,以及如何为您的 dApp 选择公共、共享和专用 RPC 基础设施。...

RPC 提供商选择Gnosis

如何检查 Gnosis 的正常运行时间,这对你的 dApp 意味着什么?

Gnosis Chain 在网络正常运行时间方面有着良好的记录,但 RPC 正常运行时间是另一个直接影响你的 dApp 可用性的指标。本文解释了如何监控 Gnosis 网络和 RPC 正常运行时间、在提供商状态页面中关注什么,以及如何为你的基础设施构建弹性。...

区块链基础设施

什么是节点即服务(Node-as-a-Service),何时应该使用它?

节点即服务(NaaS)让开发者无需运行自己的基础设施即可访问区块链节点。无需同步、维护和扩展节点,而是使用第三方提供的托管RPC端点。当你希望专注于构建dApp而非管理服务器时,这非常有用。然而,它引入了信任和中心化的权衡。本文解释了NaaS的工作原理、优缺点,以及如何判断它是否适合你的项目。...

永远不用担心基础设施

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

开始