简略来说,哈希树(默克尔树Merkle Trees)中,每个节点都标有一个数据块的加密哈希值。哈希树能够用来验证任何一种在计算机中和计算机之间存储、处理和传输的数据。它们能够协助保证在点对点网络中从其他对等体收到的数据块是原封不动地收到的,且没有损坏,也没有改动。
那么让咱们来讨论一下默克尔树吧。
说到区块链,咱们有很多区块,这些区块会经过哈希值的协助连接在一起,咱们知道每一个区块都会具有买卖,能够是一个,也能够是100多个,那么假如咱们想要找出区块本身的哈希值,咱们该怎么做呢?是把整个区块组合起来形成一个哈希值呢?还是要找到每个买卖的哈希值?现在假如你想找到每个买卖的哈希值,你必须存储一切的哈希值,这样一个区块就不会只要1个哈希值,而是有100个哈希值,咱们不期望咱们只想得到1个哈希值,而其中一个完成的办法便是凭借默克尔树。
第一次看到默克尔树时,它们可能会十分紊乱,但实际上结构十分简略。
每一棵树都会有一个根,一组枝条,然后叶子从枝条的底部长出。
那么要怎么建立这棵树呢,让咱们想象一下,在一个区块中,咱们有8个买卖,而咱们将开端搜集每个买卖的哈希值,那么关于8个买卖,咱们将会有8个哈希值。现在,咱们要做的是就找到第一个和第二个的值,然后是第三个和第四个,以此类推,直到终究得到这样的东西:
一旦咱们有了一切的团体哈希,咱们就能够再次将它们组合起来,如下图:
最终在完成上述步骤后,咱们将回到树的根部,终究的默克尔树则会入下图所示:
然后在最终咱们会把一切的东西结合起来,得到1到8的哈希值,然后给整个区块和里面一切的买卖符号上一个全体的哈希值。
在这个例子中,咱们能够看到最终是偶数,但是假如是一个奇数会是怎么样呢?咱们只需重复买卖,如[9,10,9,10]分支中所示的那样。
最终,当咱们在根部将一切这些组合在一起时,咱们将留下默克尔树的根部,且只要1个区块的哈希值。这在涉及区块链时,是十分有用的,由于它约束了能够处理一切区块所需的内存,能够只处理每个区块的一个哈希值,因此比必须处理每个区块内存储的100个哈希值要高效得多。
大多数哈希树的完成都是二进制的,这意味着每个分支下都会有1个叶子,但它们也一样能够在其分支下运用更多的叶子节点。
作者:Charlie Rogers
视野开拓
A stable ad democatic society is impossible without a miimum degee of liteacy ad kowledge o the pat of most citizes ad without widespead acceptace of some commo set of values. Educatio ca cotibute to both. I cosequece, the gai fom the educatio of a child accues ot oly to the child o to his paets but also to othe membes of the society. The educatio of my child cotibutes to you welfae by pomotig a stable ad democatic society. It is ot feasible to idetify the paticula idividualso families) beefited ad so to chage fo the sevices edeed. Thee is theefoe a sigificat “eighbohood effect.”-《资本主义与自由》