#速率限制 #区块 #区块 #solana #缓存 #命令行工具 #命令行界面

应用 solana-block-cacher

Solana Block Cacher 是一个基于 Rust 的高性能、命令行界面(CLI)工具。它旨在高效地从 Solana 区块链中拉取区块,同时遵守指定的速率限制。此工具智能地测量用户的连接速度和速率限制,以计算抓取区块的最优线程数量。区块以50个批次处理,并以高效的方式写入 JSON 文件。

10 个稳定版本

1.0.10 2024年1月13日
1.0.9 2024年1月8日
1.0.7 2024年1月5日
1.0.4 2024年1月4日

#554 in 魔法豆

Download history 9/week @ 2024-07-04 50/week @ 2024-07-25

每月下载量:59

MIT 许可证

78KB
1.5K SLoC

Solana Block Cacher

Crates.io Version Crates.io Total Downloads Coverage, Versioning, Deployment codecov License: MIT

概述

Solana Block Cacher 是一个基于 Rust 的高性能、命令行界面(CLI)工具。它旨在高效地从 Solana 区块链中拉取区块,同时遵守指定的速率限制。此工具智能地测量用户的连接速度和速率限制,以计算抓取区块的最优线程数量。区块以50个批次处理,并以高效的方式写入 JSON 文件。

特性

  • 快速区块抓取:利用 Rust 的速度,在速率限制允许的范围内尽可能快地抓取区块。
  • 连接速度优化:根据用户的连接速度和速率限制自动调整线程数量。
  • 可定制区块范围:用户可以指定要缓存的起始和结束 Solana 插槽号。
  • 高效批量处理:以50个批次处理区块,以实现高效的处理。
  • 详细日志:启用详细调试日志的选项。

安装

在安装 Solana Block Cacher 之前,请确保您的系统上已安装 Cargo。如果没有,您可以按照官方 Cargo 网站上的说明进行安装。

要安装 Solana Block Cacher,请使用以下命令

cargo install solana-block-cacher

用法

要使用 Solana 块缓存器,请使用所需的参数运行命令。以下是可用选项:

solana-block-cacher [OPTIONS]

获取 RPC URL

您可以通过 QuickNode 获取 Solana RPC URL。我个人使用 QuickNode Pro 解决方案,它允许我每月检索数百万个块进行回测。

选项

  • -v, --verbose:启用详细日志记录(默认:false)。
  • -l, --log_output_file <LOG_OUTPUT_FILE>:日志输出文件的路径(默认:"output.log")。
  • -f, --from_slot <FROM_SLOT>:开始缓存块的 Solana 插槽号。
  • -t, --to_slot <TO_SLOT>:缓存块的 Solana 插槽号。
  • -r, --rpc_url <RPC_URL>:连接到 Solana 主网的 HTTP RPC URL。
  • -o, --output_file <OUTPUT_FILE>:写入块的文件(默认:"blocks.json")。
  • --rate_limit <RATE_LIMIT>:缓存器的速率限制(默认:50(QuickNode Pro 默认))。
  • -w, --window <WINDOW>:速率限制的时间窗口(默认:1(QuickNode Pro 默认))。

示例

solana-block-cacher --from_slot 12345 --to_slot 54321 --rpc_url https://crimson-chaotic-bird.solana-mainnet.quiknode.pro/*** --output_file my_blocks.json

线程数最优计算

给定以下输入

  • $R_l$(速率限制):每个时间窗口允许的最大请求数。
  • $W$(时间窗口):时间窗口的持续时间(毫秒)。
  • $T$(每个请求的平均时间):从网络拉取块的平均时间(毫秒)。

最优线程数($O_n$)可以使用以下公式计算

$$ O_n = \frac{R_l}{\min\left(\frac{W}{T}, R_l\right)} $$

其中

  • $\frac{R_l}{\frac{W}{T}}$ 计算了在时间窗口 $W$ 内单个线程可以处理的有效请求数。
  • $\min\left(\frac{W}{T}, R_l\right)$ 确保每个线程的有效请求数不超过速率限制。
  • $O_n$ 四舍五入到最接近的整数,因为线程数必须是整数。

贡献

欢迎贡献!请随时提交拉取请求或打开问题以进行改进和建议。

在贡献之前,请确保您已阅读 CONTRIBUTING.md

许可

本项目为开源项目,可在 MIT 许可下获得。

快乐编码!🚀🦀

依赖关系

~59–97MB
~1.5M SLoC