-
Notifications
You must be signed in to change notification settings - Fork 112
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feat: add sov-modules-core This commit introduces `sov-modules-core`, a new workspace member that will contain the required declarations for `no-std` `DispatchCall` runtime message declarations. The new module is re-exported via `sov-state` and `sov-modules-api` to minimize breaking changes downstream. Finally, it introduces a `RefCount` in `sov-rollup-interface` that will contain atomic synchronization, if the compile target contains atomic pointers. It safely fallback to `Rc`, that is a reference count without atomic synchronization, but equivalent API, that will be the used type on targets without synchronization. This can replace all the `Arc` instances in the future, but for now, it is required only for the previously `sov-state` storage/cache keys and values, so the `Storage` trait can be properly defined. * fix broken docs * fix alloc vec * move ModuleInfo & Genesis to sov-modules-core * add sov-modules-core readme * add mandatory documentation for core * uniform style for sov-state borsh * mod hierarchy for sov-core * add docs for jmt version on core
- Loading branch information
Showing
76 changed files
with
2,657 additions
and
2,355 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
30 changes: 21 additions & 9 deletions
30
examples/demo-rollup/provers/risc0/guest-celestia/Cargo.lock
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,4 @@ | ||
# `sov-modules-api` | ||
|
||
The `sov-modules-api` crate provides essential traits for the Module System. Here are the key traits defined by the | ||
crate: | ||
|
||
1. The `Module` trait: Defines how to initialize and change the state of a module. This is the main trait that module | ||
developers need to implement. The author of a module must specify: | ||
|
||
- Configuration upon rollup deployment: This includes the `genesis()` method and the `Config` type, which determine | ||
how the module is set up initially. Note that the initialization for logic for modules is identical to | ||
the `Genesis` trait (described below). We blanket implement `Genesis` | ||
for all `Module`s, but keep it as a separate trait since some other structs need to implement it as well. | ||
|
||
- Interaction with user messages: The module must define the `call` method and the `CallMessage` type, which handle | ||
user messages. These messages typically result in changes to the module's state. | ||
|
||
- Gas configuration: The module may use a `GasConfig` type, annotated by `#[gas]`, that will be loaded from the | ||
constants manifest configuration. | ||
|
||
1. The `ModuleInfo` trait: Provides additional information related to a module. This trait is automatically derived. | ||
|
||
1. The `Spec` trait: It defines all the types that modules are generic over. This separation allows the module logic to | ||
be independent of concerns such as the specific storage system or concrete signature schemes used for signing rollup | ||
transactions. Currently acceptable hashes for `Spec` should fit into 32 bytes. | ||
|
||
1. The `Context` trait implements the `Spec` and introduces additional methods accessible within modules. Currently, it | ||
includes the `sender()` method, which returns the address of the transaction sender. This trait will be further | ||
extended with other useful methods, such as `batch_hash()`, and more. This crate defines also the default | ||
implementation for the `Context` trait. | ||
|
||
1. The `Genesis` trait: Defines how the rollup is initialized during deployment phase. | ||
|
||
1. The `DispatchCall` trait: Defines how messages are forwarded to the appropriate module and how the call message is | ||
executed. The implementation of this trait can be generated automatically using a macro. | ||
|
||
1. The `GasUnit` trait: Defines how the scalar gas value is deducted from the working set. This is implemented for | ||
`[u64; N]`, and can be customized by the user. | ||
The `sov-modules-api` crate provides concrete implementations from the essential traits defined under | ||
`sov-modules-core`. |
Oops, something went wrong.