mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-17 23:01:01 +00:00
Markdown linter (#1309)
* 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
This commit is contained in:
@@ -1,14 +1,12 @@
|
||||
# Paras Pallet
|
||||
|
||||
The Paras module is responsible for storing information on parachains. Registered
|
||||
parachains cannot change except at session boundaries and after at least a full
|
||||
session has passed. This is primarily to ensure that the number and meaning of bits required for the
|
||||
availability bitfields does not change except at session boundaries.
|
||||
The Paras module is responsible for storing information on parachains. Registered parachains cannot change except at
|
||||
session boundaries and after at least a full session has passed. This is primarily to ensure that the number and meaning
|
||||
of bits required for the availability bitfields does not change except at session boundaries.
|
||||
|
||||
It's also responsible for:
|
||||
|
||||
- managing parachain validation code upgrades as well as maintaining availability of old parachain
|
||||
code and its pruning.
|
||||
- managing parachain validation code upgrades as well as maintaining availability of old parachain code and its pruning.
|
||||
- vetting PVFs by means of the PVF pre-checking mechanism.
|
||||
|
||||
## Storage
|
||||
@@ -102,8 +100,8 @@ struct PvfCheckActiveVoteState {
|
||||
|
||||
#### Para Lifecycle
|
||||
|
||||
Because the state changes of parachains are delayed, we track the specific state of
|
||||
the para using the `ParaLifecycle` enum.
|
||||
Because the state changes of parachains are delayed, we track the specific state of the para using the `ParaLifecycle`
|
||||
enum.
|
||||
|
||||
```
|
||||
None Parathread (on-demand parachain) Parachain
|
||||
@@ -132,8 +130,8 @@ None Parathread (on-demand parachain) Parachain
|
||||
+ + +
|
||||
```
|
||||
|
||||
Note that if PVF pre-checking is enabled, onboarding of a para may potentially be delayed. This can
|
||||
happen due to PVF pre-checking voting concluding late.
|
||||
Note that if PVF pre-checking is enabled, onboarding of a para may potentially be delayed. This can happen due to PVF
|
||||
pre-checking voting concluding late.
|
||||
|
||||
During the transition period, the para object is still considered in its existing state.
|
||||
|
||||
@@ -210,7 +208,7 @@ UpcomingUpgrades: Vec<(ParaId, BlockNumberFor<T>)>;
|
||||
ActionsQueue: map SessionIndex => Vec<ParaId>;
|
||||
/// Upcoming paras instantiation arguments.
|
||||
///
|
||||
/// NOTE that after PVF pre-checking is enabled the para genesis arg will have it's code set
|
||||
/// NOTE that after PVF pre-checking is enabled the para genesis arg will have it's code set
|
||||
/// to empty. Instead, the code will be saved into the storage right away via `CodeByHash`.
|
||||
UpcomingParasGenesis: map ParaId => Option<ParaGenesisArgs>;
|
||||
/// The number of references on the validation code in `CodeByHash` storage.
|
||||
@@ -223,12 +221,13 @@ CodeByHash: map ValidationCodeHash => Option<ValidationCode>
|
||||
|
||||
1. Execute all queued actions for paralifecycle changes:
|
||||
1. Clean up outgoing paras.
|
||||
1. This means removing the entries under `Heads`, `CurrentCode`, `FutureCodeUpgrades`,
|
||||
`FutureCode` and `MostRecentContext`. An according entry should be added to `PastCode`, `PastCodeMeta`, and `PastCodePruning` using the outgoing `ParaId` and removed `CurrentCode` value. This is because any outdated validation code must remain available on-chain for a determined amount
|
||||
of blocks, and validation code outdated by de-registering the para is still subject to that
|
||||
invariant.
|
||||
1. Apply all incoming paras by initializing the `Heads` and `CurrentCode` using the genesis
|
||||
parameters as well as `MostRecentContext` to `0`.
|
||||
1. This means removing the entries under `Heads`, `CurrentCode`, `FutureCodeUpgrades`, `FutureCode` and
|
||||
`MostRecentContext`. An according entry should be added to `PastCode`, `PastCodeMeta`, and `PastCodePruning`
|
||||
using the outgoing `ParaId` and removed `CurrentCode` value. This is because any outdated validation code must
|
||||
remain available on-chain for a determined amount of blocks, and validation code outdated by de-registering the
|
||||
para is still subject to that invariant.
|
||||
1. Apply all incoming paras by initializing the `Heads` and `CurrentCode` using the genesis parameters as well as
|
||||
`MostRecentContext` to `0`.
|
||||
1. Amend the `Parachains` list and `ParaLifecycle` to reflect changes in registered parachains.
|
||||
1. Amend the `ParaLifecycle` set to reflect changes in registered on-demand parachains.
|
||||
1. Upgrade all on-demand parachains that should become lease holding parachains, updating the `Parachains` list and
|
||||
@@ -239,40 +238,50 @@ CodeByHash: map ValidationCodeHash => Option<ValidationCode>
|
||||
1. Go over all active PVF pre-checking votes:
|
||||
1. Increment `age` of the vote.
|
||||
1. If `age` reached `cfg.pvf_voting_ttl`, then enact PVF rejection and remove the vote from the active list.
|
||||
1. Otherwise, reinitialize the ballots.
|
||||
1. Resize the `votes_accept`/`votes_reject` to have the same length as the incoming validator set.
|
||||
1. Zero all the votes.
|
||||
1. Otherwise, reinitialize the ballots. 1. Resize the `votes_accept`/`votes_reject` to have the same length as the
|
||||
incoming validator set. 1. Zero all the votes.
|
||||
## Initialization
|
||||
|
||||
1. Do pruning based on all entries in `PastCodePruning` with `BlockNumber <= now`. Update the
|
||||
corresponding `PastCodeMeta` and `PastCode` accordingly.
|
||||
1. Do pruning based on all entries in `PastCodePruning` with `BlockNumber <= now`. Update the corresponding
|
||||
`PastCodeMeta` and `PastCode` accordingly.
|
||||
1. Toggle the upgrade related signals
|
||||
1. Collect all `(para_id, expected_at)` from `UpcomingUpgrades` where `expected_at <= now` and prune them. For each para pruned set `UpgradeGoAheadSignal` to `GoAhead`. Reserve weight for the state modification to upgrade each para pruned.
|
||||
1. Collect all `(para_id, next_possible_upgrade_at)` from `UpgradeCooldowns` where `next_possible_upgrade_at <= now`. For each para obtained this way reserve weight to remove its `UpgradeRestrictionSignal` on finalization.
|
||||
1. Collect all `(para_id, expected_at)` from `UpcomingUpgrades` where `expected_at <= now` and prune them. For each
|
||||
para pruned set `UpgradeGoAheadSignal` to `GoAhead`. Reserve weight for the state modification to upgrade each para
|
||||
pruned.
|
||||
1. Collect all `(para_id, next_possible_upgrade_at)` from `UpgradeCooldowns` where `next_possible_upgrade_at <= now`.
|
||||
For each para obtained this way reserve weight to remove its `UpgradeRestrictionSignal` on finalization.
|
||||
|
||||
## Routines
|
||||
|
||||
* `schedule_para_initialize(ParaId, ParaGenesisArgs)`: Schedule a para to be initialized at the next
|
||||
session. Noop if para is already registered in the system with some `ParaLifecycle`.
|
||||
* `schedule_para_cleanup(ParaId)`: Schedule a para to be cleaned up after the next full session.
|
||||
* `schedule_parathread_upgrade(ParaId)`: Schedule a parathread (on-demand parachain) to be upgraded to a parachain.
|
||||
* `schedule_parachain_downgrade(ParaId)`: Schedule a parachain to be downgraded from lease holding to on-demand.
|
||||
* `schedule_code_upgrade(ParaId, new_code, relay_parent: BlockNumber, HostConfiguration)`: Schedule a future code
|
||||
upgrade of the given parachain. In case the PVF pre-checking is disabled, or the new code is already present in the storage, the upgrade will be applied after inclusion of a block of the same parachain
|
||||
executed in the context of a relay-chain block with number >= `relay_parent + config.validation_upgrade_delay`. If the upgrade is scheduled `UpgradeRestrictionSignal` is set and it will remain set until `relay_parent + config.validation_upgrade_cooldown`.
|
||||
In case the PVF pre-checking is enabled, or the new code is not already present in the storage, then the PVF pre-checking run will be scheduled for that validation code. If the pre-checking concludes with rejection, then the upgrade is canceled. Otherwise, after pre-checking is concluded the upgrade will be scheduled and be enacted as described above.
|
||||
* `note_new_head(ParaId, HeadData, BlockNumber)`: note that a para has progressed to a new head,
|
||||
where the new head was executed in the context of a relay-chain block with given number, the latter value is inserted into the `MostRecentContext` mapping. This will apply pending code upgrades based on the block number provided. If an upgrade took place it will clear the `UpgradeGoAheadSignal`.
|
||||
* `lifecycle(ParaId) -> Option<ParaLifecycle>`: Return the `ParaLifecycle` of a para.
|
||||
* `is_parachain(ParaId) -> bool`: Returns true if the para ID references any live lease holding parachain,
|
||||
including those which may be transitioning to an on-demand parachain in the future.
|
||||
* `is_parathread(ParaId) -> bool`: Returns true if the para ID references any live parathread (on-demand parachain),
|
||||
- `schedule_para_initialize(ParaId, ParaGenesisArgs)`: Schedule a para to be initialized at the next session. Noop if
|
||||
para is already registered in the system with some `ParaLifecycle`.
|
||||
- `schedule_para_cleanup(ParaId)`: Schedule a para to be cleaned up after the next full session.
|
||||
- `schedule_parathread_upgrade(ParaId)`: Schedule a parathread (on-demand parachain) to be upgraded to a parachain.
|
||||
- `schedule_parachain_downgrade(ParaId)`: Schedule a parachain to be downgraded from lease holding to on-demand.
|
||||
- `schedule_code_upgrade(ParaId, new_code, relay_parent: BlockNumber, HostConfiguration)`: Schedule a future code
|
||||
upgrade of the given parachain. In case the PVF pre-checking is disabled, or the new code is already present in the
|
||||
storage, the upgrade will be applied after inclusion of a block of the same parachain executed in the context of a
|
||||
relay-chain block with number >= `relay_parent + config.validation_upgrade_delay`. If the upgrade is scheduled
|
||||
`UpgradeRestrictionSignal` is set and it will remain set until `relay_parent + config.validation_upgrade_cooldown`. In
|
||||
case the PVF pre-checking is enabled, or the new code is not already present in the storage, then the PVF pre-checking
|
||||
run will be scheduled for that validation code. If the pre-checking concludes with rejection, then the upgrade is
|
||||
canceled. Otherwise, after pre-checking is concluded the upgrade will be scheduled and be enacted as described above.
|
||||
- `note_new_head(ParaId, HeadData, BlockNumber)`: note that a para has progressed to a new head, where the new head was
|
||||
executed in the context of a relay-chain block with given number, the latter value is inserted into the
|
||||
`MostRecentContext` mapping. This will apply pending code upgrades based on the block number provided. If an upgrade
|
||||
took place it will clear the `UpgradeGoAheadSignal`.
|
||||
- `lifecycle(ParaId) -> Option<ParaLifecycle>`: Return the `ParaLifecycle` of a para.
|
||||
- `is_parachain(ParaId) -> bool`: Returns true if the para ID references any live lease holding parachain, including
|
||||
those which may be transitioning to an on-demand parachain in the future.
|
||||
- `is_parathread(ParaId) -> bool`: Returns true if the para ID references any live parathread (on-demand parachain),
|
||||
including those which may be transitioning to a lease holding parachain in the future.
|
||||
* `is_valid_para(ParaId) -> bool`: Returns true if the para ID references either a live on-demand parachain
|
||||
or live lease holding parachain.
|
||||
* `can_upgrade_validation_code(ParaId) -> bool`: Returns true if the given para can signal code upgrade right now.
|
||||
* `pvfs_require_prechecking() -> Vec<ValidationCodeHash>`: Returns the list of PVF validation code hashes that require PVF pre-checking votes.
|
||||
- `is_valid_para(ParaId) -> bool`: Returns true if the para ID references either a live on-demand parachain or live
|
||||
lease holding parachain.
|
||||
- `can_upgrade_validation_code(ParaId) -> bool`: Returns true if the given para can signal code upgrade right now.
|
||||
- `pvfs_require_prechecking() -> Vec<ValidationCodeHash>`: Returns the list of PVF validation code hashes that require
|
||||
PVF pre-checking votes.
|
||||
|
||||
## Finalization
|
||||
|
||||
Collect all `(para_id, next_possible_upgrade_at)` from `UpgradeCooldowns` where `next_possible_upgrade_at <= now` and prune them. For each para pruned remove its `UpgradeRestrictionSignal`.
|
||||
Collect all `(para_id, next_possible_upgrade_at)` from `UpgradeCooldowns` where `next_possible_upgrade_at <= now` and
|
||||
prune them. For each para pruned remove its `UpgradeRestrictionSignal`.
|
||||
|
||||
Reference in New Issue
Block a user