2 个版本
0.1.1 | 2023 年 8 月 10 日 |
---|---|
0.1.0 | 2023 年 8 月 10 日 |
#6 在 #estimator
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