block cleanup (#9117)
* blockchain insert expects owned block instead of block reference * reduce a number of times a block is deserialized * removed cached uncle_bytes from block * removed is_finalized from OpenBlock * removed unused parity_machine::WithMetadata trait * removed commented out code * remove unused metadata from block * remove unused metadata from block * BlockDetails extras may have at most 5 elements
This commit is contained in:
committed by
André Silva
parent
a809621f63
commit
c54beba932
@@ -37,6 +37,7 @@ use rlp::{RlpStream, Rlp};
|
||||
use ethereum_types::{H256, U256};
|
||||
use kvdb::KeyValueDB;
|
||||
use bytes::Bytes;
|
||||
use encoded;
|
||||
|
||||
|
||||
/// Snapshot creation and restoration for PoA chains.
|
||||
@@ -339,7 +340,7 @@ impl Rebuilder for ChunkRebuilder {
|
||||
let parent_td: U256 = last_rlp.val_at(4)?;
|
||||
|
||||
let mut batch = self.db.transaction();
|
||||
self.chain.insert_unordered_block(&mut batch, &block_data, receipts, Some(parent_td), true, false);
|
||||
self.chain.insert_unordered_block(&mut batch, encoded::Block::new(block_data), receipts, Some(parent_td), true, false);
|
||||
self.db.write_buffered(batch);
|
||||
|
||||
self.warp_target = Some(block.header);
|
||||
|
||||
@@ -35,6 +35,7 @@ use kvdb::KeyValueDB;
|
||||
use bytes::Bytes;
|
||||
use rlp::{RlpStream, Rlp};
|
||||
use rand::OsRng;
|
||||
use encoded;
|
||||
|
||||
/// Snapshot creation and restoration for PoW chains.
|
||||
/// This includes blocks from the head of the chain as a
|
||||
@@ -220,7 +221,6 @@ impl Rebuilder for PowRebuilder {
|
||||
/// Feed the rebuilder an uncompressed block chunk.
|
||||
/// Returns the number of blocks fed or any errors.
|
||||
fn feed(&mut self, chunk: &[u8], engine: &EthEngine, abort_flag: &AtomicBool) -> Result<(), ::error::Error> {
|
||||
use views::BlockView;
|
||||
use snapshot::verify_old_block;
|
||||
use ethereum_types::U256;
|
||||
use triehash::ordered_trie_root;
|
||||
@@ -250,7 +250,7 @@ impl Rebuilder for PowRebuilder {
|
||||
let receipts_root = ordered_trie_root(pair.at(1)?.iter().map(|r| r.as_raw()));
|
||||
|
||||
let block = abridged_block.to_block(parent_hash, cur_number, receipts_root)?;
|
||||
let block_bytes = block.rlp_bytes();
|
||||
let block_bytes = encoded::Block::new(block.rlp_bytes());
|
||||
let is_best = cur_number == self.best_number;
|
||||
|
||||
if is_best {
|
||||
@@ -275,16 +275,16 @@ impl Rebuilder for PowRebuilder {
|
||||
|
||||
// special-case the first block in each chunk.
|
||||
if idx == 3 {
|
||||
if self.chain.insert_unordered_block(&mut batch, &block_bytes, receipts, Some(parent_total_difficulty), is_best, false) {
|
||||
if self.chain.insert_unordered_block(&mut batch, block_bytes, receipts, Some(parent_total_difficulty), is_best, false) {
|
||||
self.disconnected.push((cur_number, block.header.hash()));
|
||||
}
|
||||
} else {
|
||||
self.chain.insert_unordered_block(&mut batch, &block_bytes, receipts, None, is_best, false);
|
||||
self.chain.insert_unordered_block(&mut batch, block_bytes, receipts, None, is_best, false);
|
||||
}
|
||||
self.db.write_buffered(batch);
|
||||
self.chain.commit();
|
||||
|
||||
parent_hash = view!(BlockView, &block_bytes).hash();
|
||||
parent_hash = block.header.hash();
|
||||
cur_number += 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -43,15 +43,14 @@ fn chunk_and_restore(amount: u64) {
|
||||
let snapshot_path = tempdir.path().join("SNAP");
|
||||
|
||||
let old_db = test_helpers::new_db();
|
||||
let bc = BlockChain::new(Default::default(), &genesis.encoded(), old_db.clone());
|
||||
let bc = BlockChain::new(Default::default(), genesis.encoded().raw(), old_db.clone());
|
||||
|
||||
// build the blockchain.
|
||||
let mut batch = DBTransaction::new();
|
||||
for block in generator {
|
||||
bc.insert_block(&mut batch, &block.encoded(), vec![], ExtrasInsert {
|
||||
bc.insert_block(&mut batch, block.encoded(), vec![], ExtrasInsert {
|
||||
fork_choice: ::engines::ForkChoice::New,
|
||||
is_finalized: false,
|
||||
metadata: None,
|
||||
});
|
||||
bc.commit();
|
||||
}
|
||||
@@ -83,7 +82,7 @@ fn chunk_and_restore(amount: u64) {
|
||||
|
||||
// restore it.
|
||||
let new_db = test_helpers::new_db();
|
||||
let new_chain = BlockChain::new(Default::default(), &genesis.encoded(), new_db.clone());
|
||||
let new_chain = BlockChain::new(Default::default(), genesis.encoded().raw(), new_db.clone());
|
||||
let mut rebuilder = SNAPSHOT_MODE.rebuilder(new_chain, new_db.clone(), &manifest).unwrap();
|
||||
|
||||
let reader = PackedReader::new(&snapshot_path).unwrap().unwrap();
|
||||
@@ -98,7 +97,7 @@ fn chunk_and_restore(amount: u64) {
|
||||
drop(rebuilder);
|
||||
|
||||
// and test it.
|
||||
let new_chain = BlockChain::new(Default::default(), &genesis.encoded(), new_db);
|
||||
let new_chain = BlockChain::new(Default::default(), genesis.encoded().raw(), new_db);
|
||||
assert_eq!(new_chain.best_block_hash(), best_hash);
|
||||
}
|
||||
|
||||
@@ -130,7 +129,7 @@ fn checks_flag() {
|
||||
|
||||
let db = test_helpers::new_db();
|
||||
let engine = ::spec::Spec::new_test().engine;
|
||||
let chain = BlockChain::new(Default::default(), &genesis.last().encoded(), db.clone());
|
||||
let chain = BlockChain::new(Default::default(), genesis.last().encoded().raw(), db.clone());
|
||||
|
||||
let manifest = ::snapshot::ManifestData {
|
||||
version: 2,
|
||||
|
||||
Reference in New Issue
Block a user