2 个版本

0.1.1 2023 年 8 月 10 日
0.1.0 2023 年 8 月 10 日

#6#estimator

MIT 许可证

31KB
482 代码行

snipe

Snipe 是一个用 Rust 编写的 Ethereum 区块时间估算器。友情提示,我刚开始学习 Rust,所以请随意批评和拆解代码。

设计

项目实现为一个二进制 crate CLI 工具,它调用一个库 crate。CLI 实现了所有公共方法。

CLI

CLI 提供了一些功能。

  • 块到时间

给定一个区块号,此函数将返回该区块发生的时间,或者如果没有达到该区块号,则返回预计发生该区块的时间。时间估算假设没有跳过任何插槽。

  • 时间到块

给定一个时间戳,返回在该时间戳之后发生的第一个区块。如果用户指定 2016 年,则返回 2016 年 1 月 1 日发生的第一个区块号。此函数乐观地假设用户意味着在创世块之后发生的区块。这意味着如果用户仅指定 2015 年,则函数将返回创世块。但是,如果用户指定的时间戳不能转换为在创世块或之前发生的区块,则程序将出错。

  • 时区

列出用户可用的所有时区

潜在改进

更好的错误处理

目前,我正在使用 unwraps 在选项上,并使用 anyway 作为结果。如果有足够的公众兴趣,我会努力将库代码转换为使用 thiserror。

搜索优化

目前,搜索算法是简单的二分搜索。我可能在将来添加检查点,以使搜索距离显著缩短。

倒计时

在终端中添加实时更新的下一个区块倒计时

交易狙击

实现允许人们通过 snipe 提交交易的功能,并将尝试将该交易放入指定的区块或尽可能接近指定的时间。

依赖关系

~28–45MB
~823K SLoC