13 个版本 (6 个重大更新)
新版本 0.7.0 | 2024 年 8 月 21 日 |
---|---|
0.6.1 | 2024 年 8 月 15 日 |
0.5.3 | 2024 年 8 月 14 日 |
0.4.0 | 2024 年 8 月 5 日 |
0.1.1 | 2024 年 7 月 26 日 |
#339 in 魔法豆
每月下载量:1,573
570KB
3K SLoC
Trevm
⚠️ Trevm 是 实验性 软件,不建议用于生产环境。⚠️
Trevm 是 类型状态 API 包装器,用于 revm。它提供了一种便于与 revm API 交互的方式,为常见任务提供了快捷方式,并简化了 API 扩展。Trevm 并不试图提供低级别的 EVM 管理,而是简化常见任务,如模拟交易。
Trevm 不会替代 revm。它是 revm API 的包装器。它不是即插即用的升级,将 trevm 集成到您的项目中需要更改代码。
有关使用方法的更多信息,请参阅 docs.rs 上的文档。
为什么使用 Trevm?
Trevm 用于在低级别的 revm API 上构建复杂的高级流程。它提供了一个状态机,确保您只能执行当前状态下有效的操作。这使得推理 EVM 实例的状态变得更容易,并确保您不会犯错误。
Trevm 对以下用途很有用:
- 全节点实现
- 区块构建器
- 搜索器
- 其他任何交易模拟用例
限制
Trevm 仍在开发中,功能尚未完善。特别是,Trevm 目前没有上海之前的区块的生命周期支持。这意味着它无法为上海之前的区块生成正确的块后状态。
Trevm 状态机
Тревм предоставляет автоматическую машину состояний, которая представляет внутреннее состояние экземпляра EVM revm. Это гарантирует, что на каждом шаге вы можете выполнять только действия, допустимые в текущем состоянии. Это достигается с использованием шаблона typestate.
По мере продвижения между состояниями API изменяется, чтобы отражать доступные операции. Например, вы не можете вызывать open_block()
в состоянии EvmNeedsTx
, так как блок уже открыт. Вы не можете вызывать close_block()
в состоянии EvmReady
, без явно очистки или выполнения готовой транзакции.
Зависимости
~43MB
~793K SLoC