of the branch can be checked, and then the downloading of data blocks can start. Second preimage attack The Merkle hash root does not indicate the tree depth, enabling a second-preimage attack in which an attacker creates a document other than the original that has the same Merkle hash root. For the example above, an attacker can create a new document containing two data blocks, where the first is hash 0-0 + hash 0-1, and the second is hash 1-0 + hash 1-1. One simple fix is defined in Certificate Transparency: when computing leaf node hashes, a 0x00 byte is prepended to the hash data, while 0x01 is prepended when computing internal node hashes. Limiting the hash tree size is a prerequisite of some formal security proofs, and helps in making some proofs tighter. Some implementations limit the tree depth using hash tree depth prefixes before hashes, so any extracted hash chain is defined to be valid only if the prefix decreases at each step and is still positive when the leaf is reached. Tiger tree hash The Tiger tree hash is a widely used form of hash tree. It uses a binary hash tree (two child nodes under each node), usually has a data block size of 1024 bytes and uses the Tiger hash. Tiger tree hashes are used in Gnutella, Gnutella2, and Direct Connect P2P file sharing protocols and in file sharing applications such as Phex, BearShare, LimeWire, Shareaza, DC++ and gtk-gnutella. Example Base32: R5T6Y8UYRYO5SUXGER5NMUOEZ5O6E4BHPP2MRFQ URN: urn:tree:tiger:R5T6Y8UYRYO5SUXGER5NMUOEZ5O6E4BHPP2MRFQ magnet: magnet:?xt=urn:tree:tiger:R5T6Y8UYRYO5SUXGER5NMUOEZ5O6E4BHPP2MRFQ See also Binary tree Blockchain Distributed hash table Hash table Hash trie Linked timestamping Radix tree References Further reading explains both the hash tree structure and the use of it to handle many one-time signatures Tree Hash EXchange format (THEX) a detailed description of Tiger trees External links A C implementation of a dynamically re-sizeable binary SHA-256 hash tree (Merkle tree) Merkle tree implementation in Java Tiger Tree Hash (TTH) source code in C#, by Gil Schmidt Tiger Tree Hash (TTH) implementations in C and Java RHash, an open source command-line tool, which can calculate TTH and magnet links with TTH Error detection and correction Cryptographic hash functions Hashing Trees (data structures)