mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-30 16:35:47 +00:00
a30092ab42
* Add markdown linting - add linter default rules - adapt rules to current code - fix the code for linting to pass - add CI check fix #1243 * Fix markdown for Substrate * Fix tooling install * Fix workflow * Add documentation * Remove trailing spaces * Update .github/.markdownlint.yaml Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Fix mangled markdown/lists * Fix captalization issues on known words
57 lines
2.1 KiB
Markdown
57 lines
2.1 KiB
Markdown
# Initializer Pallet
|
|
|
|
This module is responsible for initializing the other modules in a deterministic order. It also has one other purpose as
|
|
described in the overview of the runtime: accepting and forwarding session change notifications.
|
|
|
|
## Storage
|
|
|
|
```rust
|
|
HasInitialized: bool;
|
|
// buffered session changes along with the block number at which they should be applied.
|
|
//
|
|
// typically this will be empty or one element long. ordered ascending by BlockNumber and insertion
|
|
// order.
|
|
BufferedSessionChanges: Vec<(BlockNumber, ValidatorSet, ValidatorSet)>;
|
|
```
|
|
|
|
## Initialization
|
|
|
|
Before initializing modules, remove all changes from the `BufferedSessionChanges` with number less than or equal to the
|
|
current block number, and apply the last one. The session change is applied to all modules in the same order as
|
|
initialization.
|
|
|
|
The other parachains modules are initialized in this order:
|
|
|
|
1. Configuration
|
|
1. Shared
|
|
1. Paras
|
|
1. Scheduler
|
|
1. Inclusion
|
|
1. SessionInfo
|
|
1. Disputes
|
|
1. DMP
|
|
1. UMP
|
|
1. HRMP
|
|
|
|
The [Configuration Module](configuration.md) is first, since all other modules need to operate under the same
|
|
configuration as each other. Then the [Shared](shared.md) module is invoked, which determines the set of active
|
|
validators. It would lead to inconsistency if, for example, the scheduler ran first and then the configuration was
|
|
updated before the Inclusion module.
|
|
|
|
Set `HasInitialized` to true.
|
|
|
|
## Session Change
|
|
|
|
Store the session change information in `BufferedSessionChange` along with the block number at which it was submitted,
|
|
plus one. Although the expected operational parameters of the block authorship system should prevent more than one
|
|
change from being buffered at any time, it may occur. Regardless, we always need to track the block number at which the
|
|
session change can be applied so as to remain flexible over session change notifications being issued before or after
|
|
initialization of the current block.
|
|
|
|
## Finalization
|
|
|
|
Finalization order is less important in this case than initialization order, so we finalize the modules in the reverse
|
|
order from initialization.
|
|
|
|
Set `HasInitialized` to false.
|