摘要
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 服务。请查看支持的网络页面以了解当前的归档端点可用性,以及定价页面了解计划详情。