3 releases (breaking)
0.3.0 | Oct 20, 2023 |
---|---|
0.2.0 | Sep 14, 2023 |
0.1.0 | May 31, 2023 |
#40 in #state-transition
Used in sov-modules-rollup-templa…
300KB
6K
SLoC
sov-default-stf
AppTemplate
This crate contains an implementation of a StateTransitionFunction
called AppTemplate
that is specifically designed to work with the Module System. The AppTemplate
relies on a set of traits that, when combined, define the logic for transitioning the rollup state.
- The
DispatchCall
trait is responsible for decoding serialized messages and forwarding them to the appropriate module. - The
Genesis
trait handles the initialization process of the rollup. It sets up the initial state upon the rollup deployment. - The
TxHooks
&ApplyBlobHooks
traits that allow for the injection of custom logic into the transaction processing pipeline. They provide a mechanism to execute additional actions or perform specific operations during the transaction processing phase.
Runtime
Both the DispatchCall
and Genesis
traits can be automatically derived (see RT
in the above snippet) for any set of modules:
#[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
}
The Runtime
struct acts as the entry point where all the rollup modules are assembled together. The #[derive]
macro generates the necessary implementations for the Genesis and DispatchCall
traits from the sov-module-api
crate.
To obtain an instance of the StateTransitionFunction
, you can pass aRuntime
, to the AppTemplate::new(..)
method. This ensures that the implementation of the StateTransitionFunction
is straightforward and does not require manual integration or complex setup steps.
Dependencies
~8–25MB
~393K SLoC