mirror of
https://github.com/fluencelabs/tendermint
synced 2025-04-24 22:32:15 +00:00
except now we calculate the max size using the maxPacketMsgSize() function, which frees developers from having to know amino encoding details. plus, 10 additional bytes are added to leave the room for amino upgrades (both making it more efficient / less efficient)
32 lines
1.1 KiB
Go
32 lines
1.1 KiB
Go
/*
|
|
Package merkle computes a deterministic minimal height Merkle tree hash.
|
|
If the number of items is not a power of two, some leaves
|
|
will be at different levels. Tries to keep both sides of
|
|
the tree the same size, but the left may be one greater.
|
|
|
|
Use this for short deterministic trees, such as the validator list.
|
|
For larger datasets, use IAVLTree.
|
|
|
|
Be aware that the current implementation by itself does not prevent
|
|
second pre-image attacks. Hence, use this library with caution.
|
|
Otherwise you might run into similar issues as, e.g., in early Bitcoin:
|
|
https://bitcointalk.org/?topic=102395
|
|
|
|
*
|
|
/ \
|
|
/ \
|
|
/ \
|
|
/ \
|
|
* *
|
|
/ \ / \
|
|
/ \ / \
|
|
/ \ / \
|
|
* * * h6
|
|
/ \ / \ / \
|
|
h0 h1 h2 h3 h4 h5
|
|
|
|
TODO(ismail): add 2nd pre-image protection or clarify further on how we use this and why this secure.
|
|
|
|
*/
|
|
package merkle
|