|
|
@ -238,7 +238,7 @@ void BlockChain::rebuild(std::string const& _path, std::function<void(unsigned, |
|
|
|
return; |
|
|
|
} |
|
|
|
lastHash = bi.hash(); |
|
|
|
import(b, s.db(), Aversion::ImportOldBlocks); |
|
|
|
import(b, s.db(), ImportRequirements::Default); |
|
|
|
} |
|
|
|
catch (...) |
|
|
|
{ |
|
|
@ -326,11 +326,11 @@ tuple<h256s, h256s, bool> BlockChain::sync(BlockQueue& _bq, OverlayDB const& _st |
|
|
|
return make_tuple(fresh, dead, _bq.doneDrain(badBlocks)); |
|
|
|
} |
|
|
|
|
|
|
|
ImportRoute BlockChain::attemptImport(bytes const& _block, OverlayDB const& _stateDB, Aversion _force) noexcept |
|
|
|
ImportRoute BlockChain::attemptImport(bytes const& _block, OverlayDB const& _stateDB, ImportRequirements::value _ir) noexcept |
|
|
|
{ |
|
|
|
try |
|
|
|
{ |
|
|
|
return import(_block, _stateDB, _force); |
|
|
|
return import(_block, _stateDB, _ir); |
|
|
|
} |
|
|
|
catch (...) |
|
|
|
{ |
|
|
@ -339,7 +339,7 @@ ImportRoute BlockChain::attemptImport(bytes const& _block, OverlayDB const& _sta |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
ImportRoute BlockChain::import(bytes const& _block, OverlayDB const& _db, Aversion _force) |
|
|
|
ImportRoute BlockChain::import(bytes const& _block, OverlayDB const& _db, ImportRequirements::value _ir) |
|
|
|
{ |
|
|
|
//@tidy This is a behemoth of a method - could do to be split into a few smaller ones.
|
|
|
|
|
|
|
@ -378,7 +378,7 @@ ImportRoute BlockChain::import(bytes const& _block, OverlayDB const& _db, Aversi |
|
|
|
#endif |
|
|
|
|
|
|
|
// Check block doesn't already exist first!
|
|
|
|
if (isKnown(bi.hash()) && _force == Aversion::AvoidOldBlocks) |
|
|
|
if (isKnown(bi.hash()) && (_ir & ImportRequirements::DontHave)) |
|
|
|
{ |
|
|
|
clog(BlockChainNote) << bi.hash() << ": Not new."; |
|
|
|
BOOST_THROW_EXCEPTION(AlreadyHaveBlock()); |
|
|
@ -424,7 +424,7 @@ ImportRoute BlockChain::import(bytes const& _block, OverlayDB const& _db, Aversi |
|
|
|
// Check transactions are valid and that they result in a state equivalent to our state_root.
|
|
|
|
// Get total difficulty increase and update state, checking it.
|
|
|
|
State s(_db); //, bi.coinbaseAddress
|
|
|
|
auto tdIncrease = s.enactOn(&_block, bi, *this); |
|
|
|
auto tdIncrease = s.enactOn(&_block, bi, *this, _ir); |
|
|
|
|
|
|
|
BlockLogBlooms blb; |
|
|
|
BlockReceipts br; |
|
|
|