Skip to main content

正式快照

正式快照提供了一种机制,使节点能够在某个先前时间点恢复到规范状态(在纪元结束时,即完全修剪和压缩的节点状态),而无需执行自创世以来发生的所有交易。与现有的数据库快照不同,这些正式快照具有以下特性:

  1. 极简主义: 正式快照目前仅包含纪元结束时的活动对象集(即所有符合条件的对象版本,可用作未来交易的输入对象)。Sui 从链上同步所有其他关键链信息,或者从链上导出。因此,正式快照仅包含节点在纪元边界启动并参与网络所需的必要数据。
  2. 不可知性: 正式快照在本质上与底层数据库选择或协议实现无关。正如活动对象集是协议定义的,正式快照也是如此。
  3. 可验证性: 正式快照在核心 Sui 协议中得到了一流的支持。因此,它们必须由节点操作员在下载时进行无信任/可验证验证。为支持这一点,协议对在纪元结束时的活动对象状态进行了承诺的签名,正式快照在恢复时会根据此进行检查。如果此验证失败,则节点状态将被移回快照恢复尝试之前的状态。

由于这些快照不包含索引,它们对于验证器和状态同步全节点(SSFNs)最为有用。你可以将快照上传到像 S3、Google Cloud Storage、Azure Blob Storage 等远程对象存储中。这些服务通常在后台运行导出过程,因此你的完整节点性能不会受到影响。在云中存储快照,你可以更有效地从系统或硬件的灾难性故障中恢复。

启用正式快照

默认情况下,完整节点不会自动进行正式快照。要启用此功能:

  1. 如果节点正在运行,请停止节点。
  2. 打开 fullnode.yaml 配置文件。
  3. 在配置文件中添加 state-snapshot-write-config 的条目。以 Google 的 GCS 服务为例:
    state-snapshot-write-config:
    object-store-config:
    object-store: "GCS"
    bucket: "<BUCKET-NAME>"
    google-service-account: "<SERVICE-ACCOUNT-FILEPATH>"
    object-store-connection-limit: 20
    concurrency: 5
    • object-store: 上传快照的远程对象存储。在示例中设置为 Google 的 GCS 服务。
    • bucket: 存储快照的 GCS 存储桶名称。
    • google-service-account: 包含签名凭据的 GCS 服务帐户 JSON 文件的路径。
    • aws-region: 存储桶所在的地区。
    • object-store-connection-limit: 与对象存储的同时连接数。
  4. 保存 sui-node.yaml 文件并重新启动节点。

从正式快照恢复

从正式快照下载、验证和恢复的整个过程由 sui-tool 中的单个命令处理。运行快照恢复工具后,本地节点状态将反映出你恢复到的纪元结束时的规范状态,然后你可以正常启动节点。要从快照中恢复:

  1. 下载适用于你操作系统的 suilatest 版本。

  2. 运行 sui-tool download-db-snapshot --formal,将桶名称和身份验证凭据作为环境变量传递,并提供桶名称、桶类型、要恢复到的纪元和创世块。

       GCS_SNAPSHOT_SERVICE_ACCOUNT_FILE_PATH=<PATH-TO-SERVICE-ACCOUNT-JSON> AWS_ARCHIVE_ACCESS_KEY_ID=<YOUR-AWS-ACCESS-KEY> AWS_ARCHIVE_SECRET_ACCESS_KEY=<YOUR-AWS-SECRET-ACCESS-KEY> AWS_ARCHIVE_REGION=us-west-2 \
    sui-tool download-db-snapshot --formal --epoch 200 --genesis <PATH-TO-GENESIS-BLOB> --snapshot-bucket mysten-mainnet-formal --snapshot-bucket-type gcs --path <DB-PATH> --num-parallel-downloads 50
  3. 确保更新已下载目录的所有权给 sui 用户(即你运行 sui-node 的 Linux 用户) sudo chown -R sui:sui /opt/sui/db/authorities_db/full_node_db/live

  4. 启动 Sui 节点。

info

当从快照还原完整节点时,请将其写入路径 /opt/sui/db/authorities_db/full_node_db。要还原验证器节点,请使用路径 /opt/sui/db/authorities_db

每个环境使用的 GCS 存储桶

Mysten 经营的存储桶。要访问 Mysten 经营的存储桶,你仍然需要提供有效的凭据,以进行对 GCS(快照桶托管)和 AWS(归档托管)的签名访问。

  • Testnet: s3://mysten-testnet-formal/
  • Mainnet: s3://mysten-mainnet-formal/