// Copyright (c) 2015-2019 The Limenka developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef LIMENKA_CONSENSUS_MERKLE_H #define LIMENKA_CONSENSUS_MERKLE_H #include #include #include uint256 ComputeMerkleRoot(std::vector hashes, bool* mutated = nullptr); /* * Compute the Merkle root of the transactions in a block. * *mutated is set to true if a duplicated subtree was found. */ uint256 BlockMerkleRoot(const CBlock& block, bool* mutated = nullptr); /* * Compute the Merkle root of the witness transactions in a block. * *mutated is set to true if a duplicated subtree was found. */ uint256 BlockWitnessMerkleRoot(const CBlock& block, bool* mutated = nullptr); /** * Compute merkle path to the specified transaction * * @param[in] block the block * @param[in] position transaction for which to calculate the merkle path (0 is the coinbase) * * @return merkle path ordered from the deepest */ std::vector TransactionMerklePath(const CBlock& block, uint32_t position); #endif // LIMENKA_CONSENSUS_MERKLE_H