Merkle Tree:
Defined in CryptoCurrency
Merkle Tree Explained
What is a Merkle Tree(?):
A Merkle tree is a data structure that is used in computer science applications. In bitcoin and other cryptocurrencies, Merkle trees serve to encode blockchain data more efficiently and securely.
Breaking Down Merkle Tree:
In bitcoin's blockchain, a block of transactions is run through an algorithm to generate a hash, which is a string of numbers and letters that can be used to verify that a given set of data is the same as the original set of transactions, but not to obtain the original set of transactions. Bitcoin's software does not run the entire block of transaction data – representing 10 minutes' worth of transactions on average – through the hash function at one time, however. Rather each transaction is hashed, then each pair of transactions is concatenated and hashed together, and so on until there is one hash for the entire block. (If there is an odd number of transactions, one transaction is doubled and its hash is concatenated with itself.)
Visualized, this structure resembles a tree. In the diagram below, "T" designates a transaction, "H" a hash. Note that the image is highly simplified; an average block contains over 500 transactions, not eight.
Merkle Tree:
The hashes on the bottom row are referred to as "leaves," the intermediate hashes as "branches," and the hash at the top as the "root." The Merkle root of a given block is stored in the header: for example, the Merkle root of block #482819 is e045b18e7a3d708d686717b4f44db2099aabcad9bebf968de5f7271b458f71c8. The root is combined with other information (the software version, the previous block's hash, the timestamp, the difficulty target, and the nonce) and then run through a hash function to produce the block's unique hash: 000000000000000000bfc767ef8bf28c42cbd4bdbafd9aa1b5c3c33c2b089594 in the case of block #482819. This hash is not actually included in the relevant block, but the next one; it is distinct from the Merkle root.
The Merkle tree is useful because it allows users to verify a specific transaction without downloading the whole blockchain (over 130 gigabytes at the end of August 2017). For example, say that you wanted to verify that transaction TD is included in the block in the diagram above. If you have the root hash (HABCDEFGH), the process is like a game of sudoku: you query the network about HD, and it returns HC, HAB, and HEFGH. The Merkle tree allows you to verify that everything is accounted for with three hashes: given HAB, HC, HEFGH, and the root HABCDEFGH, HD (the only missing hash) has to be present in the data.
Merkle Tree 2:
Merkle trees are named after Ralph Merkle, who proposed them in a 1987 paper titled "A Digital Signature Based on a Conventional Encryption Function." Merkle also invented cryptographic hashing.
In Short:
In 1979 Ralph Merkle, a computer scientist, created a patent for Merkle trees. A Merkle tree uses computer technology known as “hashing” to take information and turns it into letters and numbers of a certain length.
For example, “I like bitcoin” can be hashed and will equal: ad3e58f21b94f32dcadca6b71df4c31a18179f38011551a17a80d0ff065d22c5
If I were to capitalize the “b” in bitcoin, so it says, “I like Bitcoin” the hash will be completely different:
d988ca30eaa88c0410ad6e48a5297c0d505dcee572f9884f1a6fa2cbc8dedc86
Hashes cannot be reversed to get the original text. But you can verify the above hashes are correct simply by going to this website and typing in the same text as above: https://www.movable-type.co.uk/scripts/sha256.html
A Merkle tree works like this:
Two units of information are individually hashed. These are known as Merkle leaves.
Those two hashes are then hashed together. These are known as Merkle branches.
Multiple branches are hashed together finally getting one single hash. This is known as a Merkle root.
A Merkle tree is useful because it allows computers to verify information at the bottom of the tree, the leaves, without having to store the entire set of information.
No comments:
Post a Comment