主页 > 比特币资讯 >

比特币区块链内部探秘-merkle树根值

比特币区块链 2018-07-20 15:31 比特币区块链 BTG比特币

        比特币区块链内部探秘-merkle树根值。
  我们简单了解下比特币区块的结构、包含的内容。

  一个区块中包括了区块头以及这个区块所包含的几百笔交易。

  在区块的区块头中,有一个叫做merkle的东西:

  

比特币区块链

 

  merkle根值是将这个区块包含的所有交易经过多次【双重哈希算法+两两一组拼接】,最终求得的一个值。

  哈希算法,之前也提到过,这里简单讲解一下,是一种加密算法,比特币世界中采用了SHA256的算法作为哈希算法,因为这个已经被证实是安全的了。我们在此连载中简化SHA256的拼写,简化为Hash,音读哈希。所以将某个交易(张三给李四支付10个比特币)用Hash算法加密之后会得到:

  

比特币区块链

 

  其中,右边64位的数字+字母,就是经过哈希算法加密之后的结果。

  那么,双重哈希算法,意思就是经过两次哈希运算:

  两两一组拼接,意思是经过双重哈希之后的结果,拼接在一起。

  由于哈希算法结果较长,我们用简化版的结果来举例,假设目前某区块包含两笔交易,双重哈希之后:

  在执行【两两一组拼接】时,简单将aaa和bbb拼一起:aaabbb,就完成拼接了。(实际的拼接,是需要将哈希结果解码为计算机语言、位移、拼接、编码、位移,最终才能得到结果。)

  拼接前,所有交易假设有n个,拼接后,剩下的个数就为n/2个了。

  多次【双重哈希算法+两两一组拼接】,就是多次执行上述操作,最开始总交易个数有n个,执行一次,还有n/2个,再执行一次,还有n/4个,最终执行到结果只有1个的时候停止,再对结果做两次哈希运算,得到的结果就是merkle根值了。

  有人会问:假如只有3个交易,第3个交易没有可以拼接的交易了怎么办?

  

比特币区块链

 

  解决方案是,将第3个交易复制,自己和自己的哈希结果拼接:

  

比特币区块链

 

  还有人会问:如果6个交易拼接之后有3个结果,前2个结果可以拼接,最后一个结果和谁拼接?解决方案是,将最后一个复制,自己和自己拼接:

  

比特币区块链

 

  这样,无论有几个交易,最终都会形成这样的一个形状:

  

比特币区块链

 

  为什么叫做merkle树?就是由于它的计算过程很像一棵树。

本文地址:BTG比特币http://www.btglotto.com/bitebizixun/775.html