Skip to content
Snippets Groups Projects
Commit 04097c88 authored by Peter Goodspeed-Niklaus's avatar Peter Goodspeed-Niklaus Committed by GitHub
Browse files

Update guide candidate validation module (#1264)

* first pass updating candidate validation module in the guide

* expand candidate validation functionality section

* add candidate fetch; validation requires PoV to be provided

* remove candidate fetch
parent c3ed40fb
Branches
No related merge requests found
......@@ -2,12 +2,22 @@
This subsystem is responsible for handling candidate validation requests. It is a simple request/response server.
A variety of subsystems want to know if a parachain block candidate is valid. None of them care about the detailed mechanics of how a candidate gets validated, just the results. This subsystem handles those details.
## Protocol
Input:
Input: [`CandidateValidationMessage`](../../type-definitions.html#validation-request-type)
- [`CandidateValidationMessage`](../../type-definitions.html#validation-request-type)
Output: [`Statement`](../../type-definitions.html#statement-type) via the provided `Sender<Statement>`.
## Functionality
Given a candidate, its validation code, and its PoV, determine whether the candidate is valid. There are a few different situations this code will be called in, and this will lead to variance in where the parameters originate. Determining the parameters is beyond the scope of this subsystem.
Given the hashes of a relay parent and a parachain candidate block, and either its PoV or the information with which to retrieve the PoV from the network, spawn a short-lived async job to determine whether the candidate is valid.
Each job follows this process:
- Get the full candidate from the current relay chain state
- Check the candidate's proof
> TODO: that's extremely hand-wavey. What does that actually entail?
- Generate either `Statement::Valid` or `Statement::Invalid`. Note that this never generates `Statement::Seconded`; Candidate Backing is the only subsystem which upgrades valid to seconded.
- Return the statement on the provided channel.
......@@ -91,16 +91,9 @@ enum CandidateBackingMessage {
Various modules request that the [Candidate Validation subsystem](node/utility/candidate-validation.html) validate a block with this message
```rust
enum PoVOrigin {
/// The proof of validity is available here.
Included(PoV),
/// We need to fetch proof of validity from some peer on the network.
Network(CandidateReceipt),
}
enum CandidateValidationMessage {
/// Validate a candidate and issue a Statement
Validate(CandidateHash, RelayHash, PoVOrigin),
Validate(CandidateHash, RelayHash, PoV, Sender<Statement>),
}
```
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment