diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2015-11-17 17:35:44 +0100 |
---|---|---|
committer | Pieter Wuille <pieter.wuille@gmail.com> | 2015-11-27 15:36:52 +0100 |
commit | eece63fa72566068cb2a1bf85c95a72a5ba59bc9 (patch) | |
tree | 093633b56700e77f3bc4d8fda2b3032d2aa7c4dd /src/miner.cpp | |
parent | ee60e5625bf8a11c8e5509b9cea8b6465056c448 (diff) |
Switch blocks to a constant-space Merkle root/branch algorithm.
This switches the Merkle tree logic for blocks to one that runs in constant (small) space.
The old code is moved to tests, and a new test is added that for various combinations of
block sizes, transaction positions to compute a branch for, and mutations:
* Verifies that the old code and new code agree for the Merkle root.
* Verifies that the old code and new code agree for the Merkle branch.
* Verifies that the computed Merkle branch is valid.
* Verifies that mutations don't change the Merkle root.
* Verifies that mutations are correctly detected.
Diffstat (limited to 'src/miner.cpp')
-rw-r--r-- | src/miner.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/miner.cpp b/src/miner.cpp index bb6b513372..8187e58186 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -10,6 +10,7 @@ #include "chainparams.h" #include "coins.h" #include "consensus/consensus.h" +#include "consensus/merkle.h" #include "consensus/validation.h" #include "hash.h" #include "main.h" @@ -373,7 +374,7 @@ void IncrementExtraNonce(CBlock* pblock, const CBlockIndex* pindexPrev, unsigned assert(txCoinbase.vin[0].scriptSig.size() <= 100); pblock->vtx[0] = txCoinbase; - pblock->hashMerkleRoot = pblock->ComputeMerkleRoot(); + pblock->hashMerkleRoot = BlockMerkleRoot(*pblock); } ////////////////////////////////////////////////////////////////////////////// |