#snapshot #solana #account #file #tar #load #slot

bin+lib solana-snapshot-etl

高效解包 Solana 快照

3 个版本 (重大更改)

0.3.0 2022 年 7 月 7 日
0.2.0 2022 年 7 月 4 日
0.1.0 2022 年 6 月 30 日

#46 in #slot

Apache-2.0

78KB
2K SLoC

Solana 快照 ETL 📸

crates.io docs.rs license

solana-snapshot-etl 高效提取快照中的所有账户,以便加载到外部系统中。

动机

Solana 节点定期将账户数据库备份到 .tar.zst "快照" 流。如果您自己运行节点,您可能已经看到了这样的快照文件

snapshot-139240745-D17vR2iksG5RoLMfTX7i5NwSsr4VpbybuX1eqzesQfu2.tar.zst

完整的快照文件包含特定槽状态(本例中为槽 139240745)的所有账户的副本。

历史账户数据对区块链分析用例和事件跟踪相关。尽管存档已经可用,但生态系统仍然缺少一个易于使用的工具来访问快照数据。

构建

cargo install --git https://github.com/terorie/solana-snapshot-etl --features=standalone --bins

使用方法

ETL 工具可以从各种流源提取快照,并将它们加载到支持的存储后端之一。

基本命令行用法如下

USAGE:
    solana-snapshot-etl [OPTIONS] <LOAD_FLAGS> <SOURCE>

从本地快照文件提取

solana-snapshot-etl /path/to/snapshot-*.tar.zst ...

从解包的快照提取

# Example unarchive command
tar -I zstd -xvf snapshot-*.tar.zst ./unpacked_snapshot/

solana-snapshot-etl ./unpacked_snapshot/

从 HTTP 源或 S3 存储桶流式传输快照

solana-snapshot-etl 'https://my-solana-node.bdnodes.net/snapshot.tar.zst?auth=xxx' ...

目标

访问快照数据最快的方式是使用 SQLite3 加载机制。

生成的 SQLite 数据库文件可以使用任何 SQLite 客户端库加载。

solana-snapshot-etl snapshot-139240745-*.tar.zst --sqlite-out snapshot.db

生成的 SQLite 数据库包含以下表。

  • 账户
  • token_account(SPL 代币程序)
  • token_mint(SPL 代币程序)
  • token_multisig(SPL 代币程序)
  • token_metadata(MPL 元数据程序)

CSV

即将推出!

Geysir 插件

solana-validator 类似,此工具可以将账户更新写入 Geysir 插件。

solana-snapshot-etl snapshot-139240745-*.tar.zst --geyser plugin-config.json

有关更多信息,请参阅 Solana 文档:https://docs.solana.com/developing/plugins/geyser-plugins

依赖关系

~43–67MB
~1M SLoC