3 个版本 (重大更改)
| 0.3.0 | 2023年10月20日 |
|---|---|
| 0.2.0 | 2023年9月14日 |
| 0.1.0 | 2023年5月31日 |
#27 in #rollup
300KB
6K SLoC
sov-default-stf
AppTemplate
此crate包含一个名为 StateTransitionFunction 的 AppTemplate 实现,专门设计用于与模块系统一起工作。 AppTemplate 依赖于一组特质,这些特质结合在一起定义了转换rollup状态的逻辑。
DispatchCall特质负责解码序列化消息并将它们转发到适当的模块。Genesis特质处理rollup的初始化过程。它在rollup部署时设置初始状态。TxHooks和ApplyBlobHooks特质允许在事务处理管道中注入自定义逻辑。它们提供了一种在事务处理阶段执行附加操作或执行特定操作的方法。
运行时
DispatchCall 和 Genesis 特质可以自动推导(参见上面的片段中的 RT)任何一组模块
#[derive(Genesis, DispatchCall, MessageCodec)]
#[serialization(borsh::BorshDeserialize, borsh::BorshSerialize)]
pub struct Runtime<C: Context> {
accounts: accounts::Accounts<C>,
bank: sov_bank::Bank<C>,
sequencer: sequencer::Sequencer<C>,
...
some other modules
}
Runtime 结构充当所有rollup模块组装的入口点。 #[derive] 宏从 sov-module-api crate生成了必要的 Genesis 和 DispatchCall 特质实现。
要获取 StateTransitionFunction 的实例,可以将 Runtime 传递给 AppTemplate::new(..) 方法。这确保了 StateTransitionFunction 的实现简单,不需要手动集成或复杂的设置步骤。
依赖项
~7–24MB
~370K SLoC