From eec6a3c9c8771364c27d1839fd700f64308d7c7b Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Tue, 21 Oct 2014 21:47:12 +0300 Subject: [PATCH] Genesis block rehash. --- libethcore/BlockInfo.cpp | 9 ++++++--- libethereum/BlockChain.cpp | 1 - 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/libethcore/BlockInfo.cpp b/libethcore/BlockInfo.cpp index a99f677a7..441752e88 100644 --- a/libethcore/BlockInfo.cpp +++ b/libethcore/BlockInfo.cpp @@ -56,9 +56,12 @@ h256 BlockInfo::headerHashWithoutNonce() const return sha3(s.out()); } +auto static const s_sha3EmptyList = sha3(RLPEmptyList); + void BlockInfo::fillStream(RLPStream& _s, bool _nonce) const { - _s.appendList(_nonce ? 13 : 12) << parentHash << sha3Uncles << coinbaseAddress; + _s.appendList(_nonce ? 13 : 12) << parentHash; + _s.append(sha3Uncles == s_sha3EmptyList ? h256() : sha3Uncles, false, true) << coinbaseAddress; _s.append(stateRoot, false, true).append(transactionsRoot, false, true); _s << difficulty << number << minGasPrice << gasLimit << gasUsed << timestamp << extraData; if (_nonce) @@ -78,7 +81,7 @@ void BlockInfo::populateFromHeader(RLP const& _header, bool _checkNonce) try { parentHash = _header[field = 0].toHash(); - sha3Uncles = _header[field = 1].isEmpty() ? h256() : _header[field = 1].toHash(); + sha3Uncles = _header[field = 1].toHash(); coinbaseAddress = _header[field = 2].toHash
(); stateRoot = _header[field = 3].toHash(); transactionsRoot = _header[field = 4].toHash(); @@ -148,7 +151,7 @@ void BlockInfo::verifyInternals(bytesConstRef _block) const if (minGasPrice > mgp) BOOST_THROW_EXCEPTION(InvalidMinGasPrice(minGasPrice, mgp)); - if ((sha3Uncles && root[2].isEmpty()) || (!sha3Uncles && sha3Uncles != sha3(root[2].data()))) + if (sha3Uncles != sha3(root[2].data())) BOOST_THROW_EXCEPTION(InvalidUnclesHash()); } diff --git a/libethereum/BlockChain.cpp b/libethereum/BlockChain.cpp index 058496753..bc1a827eb 100644 --- a/libethereum/BlockChain.cpp +++ b/libethereum/BlockChain.cpp @@ -91,7 +91,6 @@ ldb::Slice dev::eth::toSlice(h256 _h, unsigned _sub) bytes BlockChain::createGenesisBlock() { RLPStream block(3); - auto sha3EmptyList = sha3(RLPEmptyList); h256 stateRoot; {