Changeset View
Changeset View
Standalone View
Standalone View
src/consensus/merkle.h
// Copyright (c) 2015 The Bitcoin Core developers | // Copyright (c) 2015 The Bitcoin Core developers | ||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#ifndef BITCOIN_MERKLE | #ifndef BITCOIN_MERKLE | ||||
#define BITCOIN_MERKLE | #define BITCOIN_MERKLE | ||||
#include <cstdint> | #include <cstdint> | ||||
#include <vector> | #include <vector> | ||||
#include "primitives/block.h" | #include "primitives/block.h" | ||||
#include "primitives/transaction.h" | #include "primitives/transaction.h" | ||||
#include "uint256.h" | #include "uint256.h" | ||||
uint256 ComputeMerkleRoot(const std::vector<uint256> &leaves, | uint256 ComputeMerkleRoot(std::vector<uint256> hashes, bool *mutated = nullptr); | ||||
bool *mutated = nullptr); | |||||
std::vector<uint256> ComputeMerkleBranch(const std::vector<uint256> &leaves, | |||||
uint32_t position); | |||||
uint256 ComputeMerkleRootFromBranch(const uint256 &leaf, | |||||
const std::vector<uint256> &branch, | |||||
uint32_t position); | |||||
/** | /** | ||||
* Compute the Merkle root of the transactions in a block. | * Compute the Merkle root of the transactions in a block. | ||||
* *mutated is set to true if a duplicated subtree was found. | * *mutated is set to true if a duplicated subtree was found. | ||||
*/ | */ | ||||
uint256 BlockMerkleRoot(const CBlock &block, bool *mutated = nullptr); | uint256 BlockMerkleRoot(const CBlock &block, bool *mutated = nullptr); | ||||
/** | #endif // BITCOIN_CONSENSUS_MERKLE_H | ||||
* Compute the Merkle branch for the tree of transactions in a block, for a | |||||
* given position. This can be verified using ComputeMerkleRootFromBranch. | |||||
*/ | |||||
std::vector<uint256> BlockMerkleBranch(const CBlock &block, uint32_t position); | |||||
#endif |