Collation Generation
The collation generation subsystem is executed on collator nodes and produces candidates to be distributed to validators. If configured to produce collations for a para, it produces collations and then feeds them to the Collator Protocol subsystem, which handles the networking.
Protocol
Collation generation for Parachains currently works in the following way:
- A new relay chain block is imported.
- The collation generation subsystem checks if the core associated to the parachain is free and if yes, continues.
- Collation generation calls our collator callback, if present, to generate a PoV. If none exists, do nothing.
- Authoring logic determines if the current node should build a PoV.
- Build new PoV and give it back to collation generation.
Messages
Incoming
ActiveLeaves
- Notification of a change in the set of active leaves.
- Triggers collation generation procedure outlined in "Protocol" section.
CollationGenerationMessage::Initialize
- Initializes the subsystem. Carries a config.
- No more than one initialization message should ever be sent to the collation generation subsystem.
- Sent by a collator to initialize this subsystem.
CollationGenerationMessage::SubmitCollation
- If the subsystem isn't initialized or the relay-parent is too old to be relevant, ignore the message.
- Otherwise, use the provided parameters to generate a [
CommittedCandidateReceipt
] - Submit the collation to the collator-protocol with
CollatorProtocolMessage::DistributeCollation
.
Outgoing
CollatorProtocolMessage::DistributeCollation
- Provides a generated collation to distribute to validators.
Functionality
The process of generating a collation for a parachain is very parachain-specific. As such, the details of how to do so are left beyond the scope of this description. The subsystem should be implemented as an abstract wrapper, which is aware of this configuration:
The configuration should be optional, to allow for the case where the node is not run with the capability to collate.
Summary in plain English
-
Collation (output of a collator)
- Contains the PoV (proof to verify the state transition of the parachain) and other data.
-
Collation result
- Contains the collation, and an optional result sender for a collation-seconded signal.
-
Collation seconded signal
- The signal that is returned when a collation was seconded by a validator.
-
Collation function
- Called with the relay chain block the parablock will be built on top of.
- Called with the validation data.
- Provides information about the state of the parachain on the relay chain.
-
Collation generation config
- Contains collator's authentication key, optional collator function, and parachain ID.