正式快照
正式快照提供了一种机制,使节点能够在某个先前时间点恢复到规范状态(在纪元结束时,即完全修剪和压缩的节点状态),而无需执行自创世以来发生的所有交易。与现有的数据库快照不同,这些正式快照具有以下特性:
- 极简主义: 正式快照目前仅包含纪元结束时的活动对象集(即所有符合条件的对象版本,可用作未来交易的输入对象)。Sui 从链上同步所有其他关键链信息,或者从链上导出。因此,正式快照仅包含节点在纪元边界启动并参与网络所需的必要数据。
- 不可知性: 正式快照在本质上与底层数据库选择或协议实现无关。正如活动对象集是协议定义的,正式快照也是如此。
- 可验证性: 正式快照在核心 Sui 协议中得到了一流的支持。因此,它们必须由节点操作员在下载时进行无信任/可验证验证。为支持这一点,协议对在纪元结束时的活动对象状态进行了承诺的签名,正式快照在恢复时会根据此进行检查。如果此验证失败,则节点状态将被移回快照恢复尝试之前的状态。
由于这些快照不包含索引,它们对于验证器和状态同步全节点(SSFNs)最为有用。你可以将快照上传到像 S3、Google Cloud Storage、Azure Blob Storage 等远程对象存储中。这些服务通常在后台运行导出过程,因此你的完整节点性能不会受到影响。在云中存储快照,你可以更有效地从系统或硬件的灾难性故障中恢复。
启用正式快照
默认情况下,完整节点不会自动进行正式快照。要启用此功能:
- 如果节点正在运行,请停止节点。
- 打开 fullnode.yaml 配置文件。
- 在配置文件中添加
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: 5object-store
: 上传快照的远程对象存储。在示例中设置为 Google 的GCS
服务。bucket
: 存储快照的 GCS 存储桶名称。google-service-account
: 包含签名凭据的 GCS 服务帐户 JSON 文件的路径。aws-region
: 存储桶所在的地区。object-store-connection-limit
: 与对象存储的同时连接数。
- 保存 sui-node.yaml 文件并重新启动节点。
从正式快照恢复
从正式快照下载、验证和恢复的整个过程由 sui-tool
中的单个命令处理。运行快照恢复工具后,本地节点状态将反映出你恢复到的纪元结束时的规范状态,然后你可以正常启动节点。要从快照中恢复:
下载适用于你操作系统的
sui
的latest
版本。运行
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确保更新已下载目录的所有权给 sui 用户(即你运行
sui-node
的 Linux 用户)sudo chown -R sui:sui /opt/sui/db/authorities_db/full_node_db/live
。启动 Sui 节点。
当从快照还原完整节点时,请将其写入路径 /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/