Logo
RPC Assistant

什么是 Avalanche 归档节点,何时应该使用?

摘要

Avalanche 归档节点存储 C 链、X 链和 P 链的完整历史状态,能够回答修剪节点无法回答的查询。本文解释了归档节点、修剪节点和状态同步节点之间的区别,并帮助您决定是自己运行节点还是使用托管的 RPC 提供商。

快速建议:归档 vs 修剪 vs 托管

在配置硬件或注册服务之前,请确定您的工作负载实际需要哪种数据保留模式。AvalancheGo 支持三种模式:归档、修剪和状态同步。下表总结了各自的权衡。

模式保留的数据最适合典型磁盘占用
归档完整的历史状态和区块审计、分析、回测、完整重放非常大(TB 级)
修剪最近的状态和区块验证者、轻量 dApp、当前余额查询中等(数百 GB)
状态同步仅最新状态新节点快速追赶小(数十 GB)

如果您只需要当前余额、交易收据或最近几天的日志,修剪节点或状态同步节点就足够了。如果您需要查询任意过去区块的历史状态,或为了分析而重放交易,则需要归档节点。

自己运行归档节点意味着管理多 TB 的存储、持续同步和备份。对于许多团队来说,提供 Avalanche 归档端点的托管 RPC 提供商是更快的路径。OnFinality 提供对 Avalanche 网络的专用和共享 RPC 访问;请查看支持的 RPC 网络页面以了解当前的可用性。

什么是 Avalanche 归档节点?

Avalanche 归档节点是配置为保留其跟踪链的完整历史的 AvalancheGo 节点。与丢弃旧状态以节省磁盘空间的修剪节点不同,归档节点保留每个历史状态,允许您查询任何地址或合约在任何时间点的状态。

Avalanche 主网由三个内置区块链组成:C 链(兼容以太坊)、X 链(资产转移)和 P 链(平台和验证者)。每条链可以有自己的数据保留模式。例如,您可能以归档模式运行 C 链以进行历史以太坊风格查询,同时保持 X 链和 P 链为修剪模式。

归档节点对于以下场景至关重要:

  • 审计和合规:证明账户或合约在过去区块的状态。
  • 分析和索引:为仪表板、DeFi 分析或 The Graph 子图构建历史数据集。
  • 回测交易策略:重放历史市场条件。
  • 调试:追踪交易的完整执行路径。

Avalanche 归档节点与修剪节点和状态同步节点的区别

AvalancheGo 的数据保留是按链配置的。三种模式是:

  • 归档:保留所有历史状态和区块。支持如 eth_getBalance 在旧区块号查询,或 eth_getLogs 在广泛的历史范围内查询。
  • 修剪:仅保留最近的状态和区块。旧状态在一段时间后被删除。这减少了磁盘使用,但限制了历史查询。
  • 状态同步:下载状态摘要并仅同步最新状态,跳过历史区块。这是让节点运行的最快方式,但提供的历史数据最少。

您可以跨链混合模式。例如,一个节点可能对 P 链和 X 链使用状态同步,但对 C 链使用归档。

何时运行自己的 Avalanche 归档节点

运行自己的归档节点让您完全控制数据、访问和成本——如果您有运营能力。考虑此路径如果:

  • 您需要频繁查询历史状态,并且工作负载可预测且高容量。
  • 您需要数据主权或希望避免第三方依赖。
  • 您拥有管理多 TB 数据库、处理备份和监控同步健康的基础设施专业知识。

关键运营考虑因素:

  • 存储:归档节点需要大量磁盘。规划 TB 级存储,并为数据库使用快速 SSD。
  • 同步时间:初始同步可能需要数天或数周,具体取决于网络速度和硬件。状态同步可以加快追赶,但您需要从一开始就启用归档模式以保留历史。
  • 备份:定期备份至关重要。AvalancheGo 的备份和恢复文档涵盖了备份节点 ID 和数据库。
  • 监控:跟踪同步状态、磁盘使用和 API 响应时间。设置异常警报。

何时使用托管的 Avalanche 归档 RPC 提供商

大多数团队不需要运行自己的归档节点。托管的 RPC 提供商处理基础设施、扩展和维护,让您专注于构建。考虑托管服务如果:

  • 您希望快速开始查询历史数据,而无需等待多日同步。
  • 您需要高可用性和故障转移,而无需管理自己的集群。
  • 您更喜欢可预测的定价,而不是硬件和运营成本。

OnFinality 为 Avalanche 和许多其他网络提供 RPC 服务。您可以获取 API 密钥并在几分钟内开始发出请求。有关计划详情,请参阅 RPC 定价支持的网络 页面以了解 Avalanche 端点可用性。

如何配置 Avalanche 归档节点

如果您决定运行自己的节点,这里是一个高级配置方法。AvalancheGo 使用每个链的 JSON 配置文件。对于 C 链,在 configs/chains/C/config.json 创建配置文件,内容如下:

{
  "pruning-enabled": false
}

pruning-enabled 设置为 false 会禁用修剪并保留完整的归档数据。对于 X 链和 P 链,如果您也想为这些链启用归档模式,可以创建类似的配置文件。

启动 AvalancheGo 时,使用 --chain-config-dir 标志指向您的配置目录。一个最小的 systemd 服务文件可能如下所示:

[Unit]
Description=Avalanche Node
After=network.target

[Service]
User=avalanche
WorkingDirectory=/opt/avalanche
ExecStart=/opt/avalanche/build/avalanchego \
  --chain-config-dir=/opt/avalanche/configs/chains \
  --db-dir=/var/lib/avalanche/db \
  --http-host=0.0.0.0 \
  --http-port=9650 \
  --network-id=mainnet
Restart=on-failure
LimitNOFILE=1000000

[Install]
WantedBy=multi-user.target

启动节点后,您可以通过 JSON-RPC 查询它。例如,要获取 C 链上的最新区块号:

curl -X POST http://localhost:9650/ext/bc/C/rpc \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

运行归档节点时的常见陷阱

  • 低估磁盘空间:归档节点增长迅速。监控磁盘使用并规划扩展。
  • 配置路径错误:确保正确指定链配置目录。一个常见错误是将配置文件放在错误的位置。
  • 忘记备份:丢失归档节点意味着丢失历史数据。设置自动备份。
  • 不监控同步健康:落后的节点可能提供过时数据。使用指标和警报。
  • 忽略网络要求:归档节点需要稳定、高带宽的连接。检查防火墙和带宽。

如何在 Avalanche 归档节点上查询历史数据

使用归档节点,您可以在 C 链上使用标准的以太坊 JSON-RPC 方法查询历史状态。例如,要获取特定区块的地址余额:

curl -X POST https://your-endpoint \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x...", "0x123456"],"id":1}'

第二个参数是十六进制区块号。您还可以使用 eth_getLogs 查询区块范围内的历史事件日志。

对于使用 ethers.js 的 JavaScript 开发者:

const { ethers } = require("ethers");

const provider = new ethers.JsonRpcProvider("https://your-endpoint");

async function getHistoricalBalance(address, blockNumber) {
  const balance = await provider.getBalance(address, blockNumber);
  console.log(`Balance at block ${blockNumber}: ${ethers.formatEther(balance)} AVAX`);
}

关键要点

  • Avalanche 归档节点存储完整的历史状态,能够回答修剪节点无法回答的查询。
  • 仅在需要历史数据时选择归档模式;否则,修剪或状态同步更具成本效益。
  • 运行自己的归档节点需要大量的存储、同步时间和运营工作。
  • 像 OnFinality 这样的托管 RPC 提供商提供 Avalanche 归档端点,减少基础设施开销。
  • 始终监控磁盘使用、同步健康和备份,以避免数据丢失。

常见问题

Avalanche 上的归档节点和修剪节点有什么区别?

归档节点保留所有历史状态和区块,而修剪节点删除旧数据以节省磁盘空间。归档节点允许在任何过去的区块进行查询,而修剪节点仅提供最近的数据。

Avalanche 归档节点需要多少存储空间?

存储要求因链和网络活动而异。C 链归档可能需要数 TB。规划大型快速 SSD 并监控增长。

我可以仅为 C 链运行归档节点吗?

可以。AvalancheGo 允许按链配置。您可以将 C 链的 pruning-enabled 设置为 false,同时保持其他链为修剪模式。

运行自己的归档节点还是使用托管提供商更便宜?

这取决于您的工作负载。运行自己的节点涉及硬件、电力和维护。托管提供商提供可预测的定价和较低的前期工作。根据您的查询量比较成本。

OnFinality 是否提供 Avalanche 归档节点?

OnFinality 为 Avalanche 网络提供 RPC 服务。请查看支持的网络页面以了解当前的归档端点可用性,以及定价页面了解计划详情。

RPC 知识库

相关 RPC 内容

Network Rpc

什么是 Solana RPC API,如何使用它?

# Solana RPC API:开发者指南 Solana RPC API 是与 Solana 区块链交互的主要接口。它提供了一组 JSON-RPC 方法,允许开发者读取网络状态、发送交易、模拟执行以及订阅实时更新。无论你是在构建 DeFi 应用、钱包还是 NFT 市场,RPC API 都是你通往 ...

Testnet Rpc

如何获取 ZenChain 测试网 ZTC 代币:水龙头指南与 RPC 配置

# 如何获取 ZenChain 测试网 ZTC 代币:水龙头指南与 RPC 配置 ZenChain 是一个与比特币对齐的 Layer 1 区块链,结合了比特币的安全性与以太坊兼容的可编程性。要在 ZenChain 测试网上构建和测试 dApp,你需要测试网 ZTC 代币作为 gas 费用。本指南涵盖...

Network Rpc

Kava API 端点:开发者需要了解的内容

Kava 结合了 Cosmos SDK 和以太坊虚拟机 (EVM) 兼容性,提供多种 API 接口:Tendermint RPC、EVM JSON-RPC、REST API 和 WebSocket 端点。本文解释了可用的端点类型、如何连接以及为生产环境 dApp 选择 Kava API 提供者时需评...

Network Rpc

Abstract RPC Endpoint: What You Need to Connect to Abstract

Abstract is an Ethereum Layer 2 network built with zkSync technology. To connect your dApp or wallet to Abstract, you need an RPC endpoint address. Th...

Rpc Provider Selection

Best Crypto Bridge API: What Should Developers Evaluate Before Integrating?

A crypto bridge API provides a programmatic interface for moving assets or data across blockchains. While many services offer bridge APIs, their perfo...

Network Rpc

Mantle RPC:链设置、端点和如何选择提供商

Mantle 是一个兼容 EVM 的第 2 层 rollup,采用模块化架构,利用以太坊保证安全性,并使用自己的数据可用性层。要连接钱包和 dApp,您需要正确的 Mantle RPC 端点、链 ID 和网络设置。本页涵盖必要的链设置、公共和私有端点选项,以及如何为生产工作负载评估 RPC 提供商。...

永远不用担心基础设施

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

开始