mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-12 01:45:45 +00:00
A more comprehensive model for PoV-Blocks and Candidate receipts (#843)
* encode the candidate statement as only the hash * refactor CandidateReceipt and CollationInfo * introduce an abridged candidate receipt type * erasure coding stores candidate receipt * store omitted data instead and introduce AvailableData type * refactor availability-store schema * tweak schema and APIs a bit more * get availability-store tests passing * accept AbridgedCandidateReceipt in `set_heads` * change statement type in primitives to be hash-only * fix parachains runtime tests * fix bad merge * rewrite validation pipeline * remove evaluation module * use abridged candidate hash as canonical * statement table uses abridged candidate receipts * kill availability_store::Data struct * port shared table to new validation pipelines * extract full validation pipeline to helper * remove old validation pipeline from collation module * polkadot-validation compiles * polkadot-validation tests compile * make local collation available in validation service * port legacy network code * polkadot-network fully ported * network: ensure fresh statement is propagated * remove pov_block_hash from LocalValidationData * remove candidate_hash field from AttestedCandidate and update runtime * port runtimes to new ParachainHost definition * port over polkadot-collator * fix test compilation * better fix * remove unrelated validation work dispatch fix * address grumbles * fix equality check
This commit is contained in:
committed by
GitHub
parent
1f9d2af08e
commit
b7d30aa379
@@ -16,7 +16,7 @@
|
||||
|
||||
//! Errors that can occur during the validation process.
|
||||
|
||||
use polkadot_primitives::parachain::ValidatorId;
|
||||
use polkadot_primitives::{parachain::ValidatorId, Hash};
|
||||
|
||||
/// Error type for validation
|
||||
#[derive(Debug, derive_more::Display, derive_more::From)]
|
||||
@@ -25,6 +25,12 @@ pub enum Error {
|
||||
Client(sp_blockchain::Error),
|
||||
/// Consensus error
|
||||
Consensus(consensus::error::Error),
|
||||
/// A wasm-validation error.
|
||||
WasmValidation(parachain::wasm_executor::Error),
|
||||
/// An I/O error.
|
||||
Io(std::io::Error),
|
||||
/// An error in the availability erasure-coding.
|
||||
ErasureCoding(polkadot_erasure_coding::Error),
|
||||
#[display(fmt = "Invalid duty roster length: expected {}, got {}", expected, got)]
|
||||
InvalidDutyRosterLength {
|
||||
/// Expected roster length
|
||||
@@ -48,6 +54,30 @@ pub enum Error {
|
||||
DeadlineComputeFailure(std::time::Duration),
|
||||
#[display(fmt = "Validation service is down.")]
|
||||
ValidationServiceDown,
|
||||
/// PoV-block in collation doesn't match provided.
|
||||
#[display(fmt = "PoV hash mismatch. Expected {:?}, got {:?}", _0, _1)]
|
||||
PoVHashMismatch(Hash, Hash),
|
||||
/// Collator signature is invalid.
|
||||
#[display(fmt = "Invalid collator signature on collation")]
|
||||
InvalidCollatorSignature,
|
||||
/// Head-data too large.
|
||||
#[display(fmt = "Head data size of {} exceeded maximum of {}", _0, _1)]
|
||||
HeadDataTooLarge(usize, usize),
|
||||
/// Head-data mismatch after validation.
|
||||
#[display(fmt = "Validation produced a different parachain header")]
|
||||
HeadDataMismatch,
|
||||
/// Relay parent of candidate not allowed.
|
||||
#[display(fmt = "Relay parent {} of candidate not allowed in this context.", _0)]
|
||||
DisallowedRelayParent(Hash),
|
||||
/// Commitments in candidate match commitments produced by validation.
|
||||
#[display(fmt = "Commitments in candidate receipt do not match those produced by validation")]
|
||||
CommitmentsMismatch,
|
||||
/// The parachain for which validation work is being done is not active.
|
||||
#[display(fmt = "Parachain {:?} is not active", _0)]
|
||||
InactiveParachain(polkadot_primitives::parachain::Id),
|
||||
/// Block data is too big
|
||||
#[display(fmt = "Block data is too big (maximum allowed size: {}, actual size: {})", size, max_size)]
|
||||
BlockDataTooBig { size: u64, max_size: u64 },
|
||||
Join(tokio::task::JoinError)
|
||||
}
|
||||
|
||||
@@ -56,6 +86,9 @@ impl std::error::Error for Error {
|
||||
match self {
|
||||
Error::Client(ref err) => Some(err),
|
||||
Error::Consensus(ref err) => Some(err),
|
||||
Error::WasmValidation(ref err) => Some(err),
|
||||
Error::ErasureCoding(ref err) => Some(err),
|
||||
Error::Io(ref err) => Some(err),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user