3 个版本 (重大更改)
0.3.0 | 2022 年 7 月 7 日 |
---|---|
0.2.0 | 2022 年 7 月 4 日 |
0.1.0 | 2022 年 6 月 30 日 |
#46 in #slot
78KB
2K SLoC
Solana 快照 ETL 📸
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(推荐)
访问快照数据最快的方式是使用 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