#状态转换 #rollup #模块 #系统 #主权 #区块链 #分布式系统

sov-modules-stf-template

定义了一个用于 Sovereign SDK 模块系统的通用状态转换函数

3 个版本 (重大更改)

0.3.0 2023年10月20日
0.2.0 2023年9月14日
0.1.0 2023年5月31日

#27 in #rollup


用于 sov-modules-rollup-template

MIT/Apache

300KB
6K SLoC

sov-default-stf

AppTemplate

此crate包含一个名为 StateTransitionFunctionAppTemplate 实现,专门设计用于与模块系统一起工作。 AppTemplate 依赖于一组特质,这些特质结合在一起定义了转换rollup状态的逻辑。

  1. DispatchCall 特质负责解码序列化消息并将它们转发到适当的模块。
  2. Genesis 特质处理rollup的初始化过程。它在rollup部署时设置初始状态。
  3. TxHooksApplyBlobHooks 特质允许在事务处理管道中注入自定义逻辑。它们提供了一种在事务处理阶段执行附加操作或执行特定操作的方法。

运行时

DispatchCallGenesis 特质可以自动推导(参见上面的片段中的 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