5dc5be1e58
* Better logging when backfilling ancient blocks fail Print total blocks imported, closes #10792 * `finalize()` doesn't need Engine Pull out call to migrated_blocks() from replace_client_db() * More logs * Clarify that the percentage may be misleading * Remove replace_client_db() and replace with a straight call to restore_db() * Include the parent_hash in UnlinkedAncientBlockChain errors * Add a new RestorationStatus varian: Finalizing (as it can take a loooong while) Call abort_restore() when restoration fails * Add missing cases for new variant * typos * Typo and derive Debug * Do not attempt to salvage existing blocks unless they form a complete chain back to genesis * Fix test * Revert "Fix test" This reverts commit f027d4b4cb7b6c23fceec528c1711886ba9cfe4e. * Fix test again * Update comment * Be careful about locks * fix test failure * Do not defer returning an error when the chain is broken * Review feedback * no hex formatting for Option
46 lines
1.6 KiB
Rust
46 lines
1.6 KiB
Rust
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
|
|
// This file is part of Parity Ethereum.
|
|
|
|
// Parity Ethereum is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
|
|
// Parity Ethereum is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
use ethereum_types::{H256, U256};
|
|
|
|
use common_types::{encoded, BlockNumber};
|
|
use common_types::header::Header;
|
|
|
|
/// Contains information on a best block that is specific to the consensus engine.
|
|
///
|
|
/// For GHOST fork-choice rule it would typically describe the block with highest
|
|
/// combined difficulty (usually the block with the highest block number).
|
|
///
|
|
/// Sometimes referred as 'latest block'.
|
|
#[derive(Debug)]
|
|
pub struct BestBlock {
|
|
/// Best block decoded header.
|
|
pub header: Header,
|
|
/// Best block uncompressed bytes.
|
|
pub block: encoded::Block,
|
|
/// Best block total difficulty.
|
|
pub total_difficulty: U256,
|
|
}
|
|
|
|
/// Best ancient block info. If the blockchain has a gap this keeps track of where it starts.
|
|
#[derive(Debug, Default)]
|
|
pub struct BestAncientBlock {
|
|
/// Best block hash.
|
|
pub hash: H256,
|
|
/// Best block number.
|
|
pub number: BlockNumber,
|
|
}
|