Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
9d58b46
GrandpaLightBlockImport
svyatonik Jan 28, 2019
0b3443b
extract authorities in AuraVerifier
svyatonik Jan 28, 2019
31b183d
Merge branch 'master' into light_grandpa_importer2
svyatonik Jan 29, 2019
da6c11e
post-merge fix
svyatonik Jan 29, 2019
2d8a084
Merge branch 'master' into light_grandpa_importer2
svyatonik Feb 1, 2019
d42315b
restore authorities cache
svyatonik Feb 1, 2019
4cbefb6
license
svyatonik Feb 4, 2019
5344c61
new finality proof draft
svyatonik Feb 8, 2019
c3a8125
generalized PendingJustifications
svyatonik Feb 8, 2019
2c4ae73
finality proof messages
svyatonik Feb 11, 2019
fbf49c6
fixed compilation
svyatonik Feb 11, 2019
ac72a40
pass verifier to import_finality_proof
svyatonik Feb 11, 2019
d4becc1
do not fetch remote proof from light import directly
svyatonik Feb 11, 2019
41c4376
FinalityProofProvider
svyatonik Feb 12, 2019
41a1dba
fixed authorities cache test
svyatonik Feb 12, 2019
2c02eff
restored finality proof tests
svyatonik Feb 12, 2019
527596d
finality_proof docs
svyatonik Feb 12, 2019
7c4c71f
Merge branch 'master' into light_grandpa_importer2
svyatonik Feb 13, 2019
f94d5be
use DB backend in test client
svyatonik Feb 13, 2019
ac63880
justification_is_fetched_by_light_client_when_consensus_data_changes
svyatonik Feb 15, 2019
410d02c
Merge branch 'master' into light_grandpa_importer2
svyatonik Mar 7, 2019
8577c87
restore justification_is_fetched_by_light_client_when_consensus_data_…
svyatonik Mar 7, 2019
8a3ba3d
some more tests
svyatonik Mar 11, 2019
b362518
added authorities-related TODO
svyatonik Mar 11, 2019
4c69880
removed unneeded clear_finality_proof_requests field
svyatonik Mar 11, 2019
0db08a0
truncated some long lines
svyatonik Mar 11, 2019
1315130
more granular light import tests
svyatonik Mar 12, 2019
9e5aabe
only provide finality proof if it is generated by the requested set
svyatonik Mar 14, 2019
a746448
Merge branch 'master' into light_grandpa_importer2
svyatonik Mar 14, 2019
f22ebf1
post-merge fix
svyatonik Mar 14, 2019
c6c128b
finality_proof_is_none_if_first_justification_is_generated_by_unknown…
svyatonik Mar 14, 2019
188ab5a
make light+grandpa test rely on finality proofs (instead of simple ju…
svyatonik Mar 15, 2019
6d3ba01
empty_finality_proof_is_returned_to_light_client_when_authority_set_i…
svyatonik Mar 15, 2019
b99f39d
missing trait method impl
svyatonik Mar 19, 2019
5516ece
Merge branch 'master' into light_grandpa_importer2
svyatonik Mar 19, 2019
d6f01fa
fixed proof-of-finality docs
svyatonik Mar 20, 2019
957139f
one more doc fix
svyatonik Mar 20, 2019
262cdfa
fix docs
svyatonik Mar 20, 2019
7e6e837
Merge branch 'master' into light_grandpa_importer2
svyatonik Mar 22, 2019
271655d
Merge branch 'master' into light_grandpa_importer2
svyatonik Apr 1, 2019
63cde59
initialize authorities cache (post-merge fix)
svyatonik Apr 2, 2019
b8c71b5
fixed cache initialization (post-merge fix)
svyatonik Apr 16, 2019
63b5056
Merge branch 'master' into light_grandpa_importer2
svyatonik Apr 16, 2019
100f4c8
post-fix merge: fix light + GRANDPA tests (bad way)
svyatonik Apr 16, 2019
44d7714
proper fix of empty_finality_proof_is_returned_to_light_client_when_a…
svyatonik Apr 16, 2019
70c8b39
fixed easy grumbles
svyatonik Apr 18, 2019
ff3ceeb
import finality proofs in BlockImportWorker thread
svyatonik Apr 18, 2019
e108f63
allow import of finality proofs for non-requested blocks
svyatonik Apr 18, 2019
e2b5458
limit number of fragments in finality proof
svyatonik Apr 18, 2019
366cb2e
Merge branch 'master' into light_grandpa_importer2
svyatonik Apr 18, 2019
bf1706b
Merge branch 'master' into light_grandpa_importer2
svyatonik Apr 30, 2019
0a5513f
Merge branch 'master' into light_grandpa_importer2
svyatonik May 3, 2019
33d195c
GRANDPA post-merge fix
svyatonik May 3, 2019
d6cbbf3
BABE: pos-merge fix
svyatonik May 3, 2019
b7f2dbc
Merge branch 'master' into light_grandpa_importer2
svyatonik May 7, 2019
d42e730
Merge branch 'master' into light_grandpa_importer2
svyatonik May 10, 2019
fa0e328
Merge branch 'master' into light_grandpa_importer2
svyatonik May 10, 2019
6c80a6e
Merge branch 'master' into light_grandpa_importer2
svyatonik May 13, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Merge branch 'master' into light_grandpa_importer2
  • Loading branch information
svyatonik committed Mar 7, 2019
commit 410d02cbd86c4cfae0a120236a80f77ed1dfd95b
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 8 additions & 2 deletions core/client/db/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -473,7 +473,7 @@ impl<Block: BlockT> state_machine::ChangesTrieRootsStorage<Blake2Hasher> for DbC
fn root(&self, anchor: &state_machine::ChangesTrieAnchorBlockId<H256>, block: u64) -> Result<Option<H256>, String> {
// check API requirement: we can't get NEXT block(s) based on anchor
if block > anchor.number {
return Err(format!("Can't get CT root at {} using anchor at {}", block, anchor.number));
return Err(format!("Can't get changes trie root at {} using anchor at {}", block, anchor.number));
}

// we need to get hash of the block to resolve changes trie root
Expand Down Expand Up @@ -780,6 +780,7 @@ impl<Block: BlockT<Hash=H256>> Backend<Block> {

let mut meta_updates = Vec::new();
let mut last_finalized_hash = self.blockchain.meta.read().finalized_hash;

if !operation.finalized_blocks.is_empty() {
for (block, justification) in operation.finalized_blocks {
let block_hash = self.blockchain.expect_block_hash_from_id(&block)?;
Expand Down Expand Up @@ -856,7 +857,12 @@ impl<Block: BlockT<Hash=H256>> Backend<Block> {
if finalized {
// TODO: ensure best chain contains this block.
self.ensure_sequential_finalization(header, Some(last_finalized_hash))?;
self.note_finalized(&mut transaction, header, hash)?;
self.note_finalized(
&mut transaction,
header,
hash,
&mut finalization_displaced_leaves,
)?;
} else {
// canonicalize blocks which are old enough, regardless of finality.
self.force_delayed_canonicalize(&mut transaction, hash, *header.number())?
Expand Down
6 changes: 2 additions & 4 deletions core/consensus/aura/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -735,14 +735,12 @@ mod tests {
const TEST_ROUTING_INTERVAL: Duration = Duration::from_millis(50);

pub struct AuraTestNet {
peers: Vec<Arc<Peer<AuraVerifier<
PeersFullClient,
NothingExtra,
>, ()>>>,
peers: Vec<Arc<Peer<(), DummySpecialization>>>,
started: bool,
}

impl TestNetFactory for AuraTestNet {
type Specialization = DummySpecialization;
type Verifier = AuraVerifier<PeersFullClient, NothingExtra>;
type PeerData = ();

Expand Down
38 changes: 32 additions & 6 deletions core/consensus/common/src/block_import.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,38 @@ pub enum ImportResult {
KnownBad,
/// Block parent is not in the chain.
UnknownParent,
/// Added to the import queue but must be justified
/// (usually required to safely enact consensus changes).
NeedsJustification,
/// Added to the import queue but finality proof is required
/// (usually required to safely enact consensus changes).
NeedsFinalityProof,
}

/// Auxiliary data associated with an imported block result.
#[derive(Debug, PartialEq, Eq)]
pub struct ImportedAux {
/// Clear all pending justification requests.
pub clear_justification_requests: bool,
/// Request a justification for the given block.
pub needs_justification: bool,
/// Clear all pending finality proof requests. TODO: do we need this??????????????????????!!!!!!!!!!!!!!!!!!!!!!!!!
pub clear_finality_proof_requests: bool,
/// Request a finality proof for the given block.
pub needs_finality_proof: bool,
}

impl Default for ImportedAux {
fn default() -> ImportedAux {
ImportedAux {
clear_justification_requests: false,
needs_justification: false,
clear_finality_proof_requests: false,
needs_finality_proof: false,
}
}
}

impl ImportResult {
/// Returns default value for `ImportResult::Imported` with both
/// `clear_justification_requests` and `needs_justification` set to false.
pub fn imported() -> ImportResult {
ImportResult::Imported(ImportedAux::default())
}
}

/// Block data origin.
Expand Down
Loading
You are viewing a condensed version of this merge commit. You can view the full changes here.