3个版本 (破坏性更新)
0.3.0 | 2023年10月20日 |
---|---|
0.2.0 | 2023年9月14日 |
0.1.0 | 2023年5月31日 |
#19 in #gas
每月 91 次下载
在 10 crate 中使用
310KB
6K SLoC
sov-modules-api
《sov-modules-api》crate为模块系统提供必要的特性。以下是crate定义的关键特性
-
《Module》特性:定义如何初始化和更改模块的状态。这是模块开发者需要实现的主要特性。模块的作者必须指定
-
在汇总部署时的配置:这包括
genesis()
方法和Config
类型,它们确定模块最初如何设置。注意,模块的初始化逻辑与Genesis
特性(下面描述)相同。我们为所有Module
实现Genesis
,但将其保留为单独的特性,因为一些其他结构也需要实现它。 -
与用户消息的交互:模块必须定义
call
方法和CallMessage
类型,它们处理用户消息。这些消息通常会导致模块状态的变化。 -
气体配置:模块可以使用由
#[gas]
注解的GasConfig
类型,它将从常量清单配置中加载。
-
-
《ModuleInfo》特性:提供有关模块的附加信息。此特性是自动派生的。
-
《Spec》特性:它定义了模块泛型化的所有类型。这种分离允许模块逻辑独立于特定存储系统或用于签署汇总交易的签名方案等关注点。目前《Spec》接受的哈希应该适合32字节。
-
《Context》特质实现了《Spec》并引入了模块内部可访问的额外方法。目前,它包括返回事务发送者地址的《sender()`》方法。此特质将扩展其他有用方法,如《batch_hash()`》等。这个crate还定义了《Context》特质的默认实现。
-
《Genesis》特质:定义了在部署阶段如何初始化rollup。
-
《DispatchCall》特质:定义了如何将消息转发到适当的模块以及如何执行调用消息。此特质的实现可以通过宏自动生成。
-
《GasUnit》特质:定义了从工作集扣除标量气值的方法。这为《[u64; N]》实现,并可以被用户自定义。
依赖项
~7-25MB
~376K SLoC