diff options
| author | Wladimir J. van der Laan <[email protected]> | 2015-04-28 10:02:45 +0200 |
|---|---|---|
| committer | Wladimir J. van der Laan <[email protected]> | 2015-04-28 10:07:25 +0200 |
| commit | 6364408122210b2fa9f4e135783ff82636ef81c1 (patch) | |
| tree | cc1737e3bfdae29485b3116606fe615d47680dfa /src/merkleblock.cpp | |
| parent | qt: translation update (diff) | |
| parent | Remove broken+useless lock/unlock log prints (diff) | |
| download | discoin-6364408122210b2fa9f4e135783ff82636ef81c1.tar.xz discoin-6364408122210b2fa9f4e135783ff82636ef81c1.zip | |
Merge pull request #5199
1ec900a Remove broken+useless lock/unlock log prints (Matt Corallo)
352ed22 Add merkle blocks test (Matt Corallo)
59ed61b Add RPC call to generate and verify merkle blocks (Matt Corallo)
30da90d Add CMerkleBlock constructor for tx set + block and an empty one (Matt Corallo)
Diffstat (limited to 'src/merkleblock.cpp')
| -rw-r--r-- | src/merkleblock.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/merkleblock.cpp b/src/merkleblock.cpp index c48d8cd50..dc87d0377 100644 --- a/src/merkleblock.cpp +++ b/src/merkleblock.cpp @@ -37,6 +37,29 @@ CMerkleBlock::CMerkleBlock(const CBlock& block, CBloomFilter& filter) txn = CPartialMerkleTree(vHashes, vMatch); } +CMerkleBlock::CMerkleBlock(const CBlock& block, const std::set<uint256>& txids) +{ + header = block.GetBlockHeader(); + + vector<bool> vMatch; + vector<uint256> vHashes; + + vMatch.reserve(block.vtx.size()); + vHashes.reserve(block.vtx.size()); + + for (unsigned int i = 0; i < block.vtx.size(); i++) + { + const uint256& hash = block.vtx[i].GetHash(); + if (txids.count(hash)) + vMatch.push_back(true); + else + vMatch.push_back(false); + vHashes.push_back(hash); + } + + txn = CPartialMerkleTree(vHashes, vMatch); +} + uint256 CPartialMerkleTree::CalcHash(int height, unsigned int pos, const std::vector<uint256> &vTxid) { if (height == 0) { // hash at height 0 is the txids themself |