mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-15 12:41:07 +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
@@ -19,18 +19,28 @@ pub mod generic;
|
||||
pub use generic::Table;
|
||||
|
||||
use primitives::parachain::{
|
||||
Id, CandidateReceipt, Statement as PrimitiveStatement, ValidatorSignature, ValidatorIndex,
|
||||
Id, AbridgedCandidateReceipt, Statement as PrimitiveStatement, ValidatorSignature, ValidatorIndex,
|
||||
};
|
||||
use primitives::Hash;
|
||||
|
||||
/// Statements about candidates on the network.
|
||||
pub type Statement = generic::Statement<CandidateReceipt, Hash>;
|
||||
pub type Statement = generic::Statement<AbridgedCandidateReceipt, Hash>;
|
||||
|
||||
/// Signed statements about candidates.
|
||||
pub type SignedStatement = generic::SignedStatement<CandidateReceipt, Hash, ValidatorIndex, ValidatorSignature>;
|
||||
pub type SignedStatement = generic::SignedStatement<
|
||||
AbridgedCandidateReceipt,
|
||||
Hash,
|
||||
ValidatorIndex,
|
||||
ValidatorSignature,
|
||||
>;
|
||||
|
||||
/// Kinds of misbehavior, along with proof.
|
||||
pub type Misbehavior = generic::Misbehavior<CandidateReceipt, Hash, ValidatorIndex, ValidatorSignature>;
|
||||
pub type Misbehavior = generic::Misbehavior<
|
||||
AbridgedCandidateReceipt,
|
||||
Hash,
|
||||
ValidatorIndex,
|
||||
ValidatorSignature,
|
||||
>;
|
||||
|
||||
/// A summary of import of a statement.
|
||||
pub type Summary = generic::Summary<Hash, Id>;
|
||||
@@ -50,13 +60,13 @@ impl<C: Context> generic::Context for C {
|
||||
type Digest = Hash;
|
||||
type GroupId = Id;
|
||||
type Signature = ValidatorSignature;
|
||||
type Candidate = CandidateReceipt;
|
||||
type Candidate = AbridgedCandidateReceipt;
|
||||
|
||||
fn candidate_digest(candidate: &CandidateReceipt) -> Hash {
|
||||
fn candidate_digest(candidate: &AbridgedCandidateReceipt) -> Hash {
|
||||
candidate.hash()
|
||||
}
|
||||
|
||||
fn candidate_group(candidate: &CandidateReceipt) -> Id {
|
||||
fn candidate_group(candidate: &AbridgedCandidateReceipt) -> Id {
|
||||
candidate.parachain_index.clone()
|
||||
}
|
||||
|
||||
@@ -69,12 +79,12 @@ impl<C: Context> generic::Context for C {
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Statement> for PrimitiveStatement {
|
||||
fn from(s: Statement) -> PrimitiveStatement {
|
||||
match s {
|
||||
impl<'a> From<&'a Statement> for PrimitiveStatement {
|
||||
fn from(s: &'a Statement) -> PrimitiveStatement {
|
||||
match *s {
|
||||
generic::Statement::Valid(s) => PrimitiveStatement::Valid(s),
|
||||
generic::Statement::Invalid(s) => PrimitiveStatement::Invalid(s),
|
||||
generic::Statement::Candidate(s) => PrimitiveStatement::Candidate(s),
|
||||
generic::Statement::Candidate(ref s) => PrimitiveStatement::Candidate(s.hash()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user