mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-13 03:25:50 +00:00
Erasure encoding availability (#345)
* Erasure encoding availability initial commit * Modifications to availability store to keep chunks as well as reconstructed blocks and extrinsics. * Gossip messages containig signed erasure chunks. * Requesting eraure chunks with polkadot-specific messages. * Validation of erasure chunk messages. * Apply suggestions from code review Co-Authored-By: Luke Schoen <ltfschoen@users.noreply.github.com> * Fix build after a merge * Gossip erasure chunk messages under their own topic * erasure_chunks should use the appropriate topic * Updates Cargo.lock * Fixes after merge * Removes a couple of leftover pieces of code * Fixes simple stuff from review * Updates erasure and storage for more flexible logic * Changes validation and candidate receipt production. * Adds add_erasure_chunks method * Fixes most of the nits * Better validate_collation and validate_receipt functions * Fixes the tests * Apply suggestions from code review Co-Authored-By: Robert Habermeier <rphmeier@gmail.com> * Removes unwrap() calls * Removes ErasureChunks primitive * Removes redundant fields from ErasureChunk struct * AvailabilityStore should store CandidateReceipt * Changes the way chunk messages are imported and validated. * Availability store now stores a validator_index and n_validators for each relay_parent. * Availability store now also stores candidate receipts. * Removes importing chunks in the table and moves it into network gossip validation. * Validation of erasure messages id done against receipts that are stored in the availability store. * Correctly compute topics for erasure messages * Removes an unused parameter * Refactors availability db querying into a helper * Adds the apis described in the writeup * Adds a runtime api to extract erasure roots form raw extrinsics. * Adds a barebone BlockImport impl for avalability store * Adds the implementation of the availability worker * Fix build after the merge with master. * Make availability store API async * Bring back the default wasmtime feature * Lines width * Bump runtime version * Formatting and dead code elimination * some style nits (#1) * More nits and api cleanup * Disable wasm CI for availability-store * Another nit * Formatting
This commit is contained in:
committed by
Robert Habermeier
parent
ec54d5b1e4
commit
99d164b5e7
@@ -184,7 +184,7 @@ impl CollatorPool {
|
||||
/// The collation should have been checked for integrity of signature before passing to this function.
|
||||
pub fn on_collation(&mut self, collator_id: CollatorId, relay_parent: Hash, collation: Collation) {
|
||||
if let Some((para_id, _)) = self.collators.get(&collator_id) {
|
||||
debug_assert_eq!(para_id, &collation.receipt.parachain_index);
|
||||
debug_assert_eq!(para_id, &collation.info.parachain_index);
|
||||
|
||||
// TODO: punish if not primary? (https://github.com/paritytech/polkadot/issues/213)
|
||||
|
||||
@@ -279,7 +279,7 @@ mod tests {
|
||||
pool.await_collation(relay_parent, para_id, tx1);
|
||||
pool.await_collation(relay_parent, para_id, tx2);
|
||||
pool.on_collation(primary.clone(), relay_parent, Collation {
|
||||
receipt: CandidateReceipt {
|
||||
info: CandidateReceipt {
|
||||
parachain_index: para_id,
|
||||
collator: primary.clone().into(),
|
||||
signature: Default::default(),
|
||||
@@ -288,7 +288,8 @@ mod tests {
|
||||
fees: 0,
|
||||
block_data_hash: [3; 32].into(),
|
||||
upward_messages: Vec::new(),
|
||||
},
|
||||
erasure_root: [1u8; 32].into(),
|
||||
}.into(),
|
||||
pov: make_pov(vec![4, 5, 6]),
|
||||
});
|
||||
|
||||
@@ -307,7 +308,7 @@ mod tests {
|
||||
assert_eq!(pool.on_new_collator(primary.clone(), para_id.clone(), PeerId::random()), Role::Primary);
|
||||
|
||||
pool.on_collation(primary.clone(), relay_parent, Collation {
|
||||
receipt: CandidateReceipt {
|
||||
info: CandidateReceipt {
|
||||
parachain_index: para_id,
|
||||
collator: primary,
|
||||
signature: Default::default(),
|
||||
@@ -316,7 +317,8 @@ mod tests {
|
||||
fees: 0,
|
||||
block_data_hash: [3; 32].into(),
|
||||
upward_messages: Vec::new(),
|
||||
},
|
||||
erasure_root: [1u8; 32].into(),
|
||||
}.into(),
|
||||
pov: make_pov(vec![4, 5, 6]),
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user