From 7430631daaec4d82348317a06bdf811b0d2d15f8 Mon Sep 17 00:00:00 2001 From: 1HXb9KMAtwNJqz4egi6hJx08EQgJajiBTH <1HXb9KMAtwNJqz4egi6hJx08EQgJajiBTH@reference.cash> Date: Wed, 18 Dec 2019 15:01:13 -0500 Subject: [PATCH] wiki commit --- protocol/blockchain/block/merkle-tree.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 protocol/blockchain/block/merkle-tree.md diff --git a/protocol/blockchain/block/merkle-tree.md b/protocol/blockchain/block/merkle-tree.md new file mode 100644 index 0000000..79791d0 --- /dev/null +++ b/protocol/blockchain/block/merkle-tree.md @@ -0,0 +1,7 @@ +# Merkle Tree + +A [merkle tree](https://en.wikipedia.org/wiki/Merkle_tree) is a data structure designed to build a hash of many separate pieces of data and allowing efficient recalculation of the hash when items are added, removed, or changed. + +In Bitcoin Cash, the transactions in a [block](/protocol/blockchain/block) are built into a merkle tree. The root of this tree, or **merkle root**, is a hash representing a compound, indirect hash of all of the items added to the merkle tree (i.e. transactions) and is included in the [block header](/protocol/blockchain/block/block-header), ensuring the block hash is dependent (indirectly) on all of the transactions that are included in the block. + +Using a merkle tree to manage hashing the transactions in a block enables efficient addition of newly submitted transactions to a block being mined. Rather than re-hashing the entirety of the data of the transactions to be included in the block, the new transaction can be hash and then a small number of hashes can be recalculated, leading up to the merkle root. For large blocks this can heavily reduce the amount of data to be (re-)hashed. \ No newline at end of file