Browse Source

sha3Uncles is empty when uncles is empty.

cl-refactor
Gav Wood 10 years ago
parent
commit
07fb73bf58
  1. 7
      libethcore/BlockInfo.cpp
  2. 2
      libethcore/CommonEth.cpp
  3. 2
      libethereum/State.cpp

7
libethcore/BlockInfo.cpp

@ -78,7 +78,7 @@ void BlockInfo::populateFromHeader(RLP const& _header, bool _checkNonce)
try
{
parentHash = _header[field = 0].toHash<h256>();
sha3Uncles = _header[field = 1].toHash<h256>();
sha3Uncles = _header[field = 1].isEmpty() ? h256() : _header[field = 1].toHash<h256>();
coinbaseAddress = _header[field = 2].toHash<Address>();
stateRoot = _header[field = 3].toHash<h256>();
transactionsRoot = _header[field = 4].toHash<h256>();
@ -148,7 +148,7 @@ void BlockInfo::verifyInternals(bytesConstRef _block) const
if (minGasPrice > mgp)
BOOST_THROW_EXCEPTION(InvalidMinGasPrice(minGasPrice, mgp));
if (sha3Uncles != sha3(root[2].data()))
if ((sha3Uncles && root[2].isEmpty()) || (!sha3Uncles && sha3Uncles != sha3(root[2].data())))
BOOST_THROW_EXCEPTION(InvalidUnclesHash());
}
@ -179,8 +179,7 @@ u256 BlockInfo::calculateDifficulty(BlockInfo const& _parent) const
}
void BlockInfo::verifyParent(BlockInfo const& _parent) const
{
// Check difficulty is correct given the two timestamps.
{ // Check difficulty is correct given the two timestamps.
if (difficulty != calculateDifficulty(_parent))
BOOST_THROW_EXCEPTION(InvalidDifficulty());

2
libethcore/CommonEth.cpp

@ -34,7 +34,7 @@ namespace dev
namespace eth
{
const unsigned c_protocolVersion = 35;
const unsigned c_protocolVersion = 36;
const unsigned c_databaseVersion = 3;
static const vector<pair<u256, string>> g_units =

2
libethereum/State.cpp

@ -826,7 +826,7 @@ void State::commitToMine(BlockChain const& _bc)
RLPStream(unclesCount).appendRaw(unclesData.out(), unclesCount).swapOut(m_currentUncles);
m_currentBlock.transactionsRoot = transactionReceipts.root();
m_currentBlock.sha3Uncles = sha3(m_currentUncles);
m_currentBlock.sha3Uncles = unclesCount ? sha3(m_currentUncles) : h256();
// Apply rewards last of all.
applyRewards(uncleAddresses);

Loading…
Cancel
Save