什么?区块链中的hash算法!施主,快扶老衲起来
Posted ImportSource
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么?区块链中的hash算法!施主,快扶老衲起来相关的知识,希望对你有一定的参考价值。
hash算法有很多种。比如MD5、SHA1、SH2(SHA224、SHA256、SHA384和SHA512)、SH3、RIPEMD-160。
这些算法理论上都是不可逆的。但MD5算法被王晓云教授于2004年破解,所以它不是安全的。SHA1也被谷歌于2017年破解了,所以也是不安全的。
hash的本质:输入一个不定的字符串,然后输出一个固定长度的值。这个值就是该字符串的hash值。
hash算法除了上面列举的,还有很多种。在一些不是为了加密的,而仅仅是为了获取一个摘要值的场景,那些被破解的算法或者更快速的hash算法都是不错的选择,具体情况具体分析。
区块链中的哈希算法
有句名言:加密算法是区块链的骨骼。
而hash算法则是区块链中用到最多的加密算法。
总之hash算法是贯穿了区块链系统的方方面面。
1、区块hash
区块hash指的是对一个区块的区块头进行hash,得到的hash值就是该区块的身份证号,也就是该区块的ID,该值是一个唯一确定的值。
而区块链的区块之间的串联就是通过每个区块的hash值来关联的,然后他们形成一个很长很长的链表结构,这也就是所谓的区块链。
假设现在有一个10000个区块组成的区块链。如果某个人起了歹心修改了第五十个区块。此时该区块的区块头的hash就发生了改变,这时候50号区块就无法和51号进行关联,对不上号了。你会发现要想改变区块链中的数据,你得把所有的区块的所有的hash重新计算一遍。如果区块链足够长,你篡改所有的区块链的代价是非常之大的,甚至是不可能的(这里说的比较谨慎和谦虚)。
相关阅读:、、、、。
2、merkle树
听到merkle你是不是有点头大。不用管。其实很简单。假如一个区块中有很多笔的交易数据。如果你对整个的交易集合进行hash是不是有点怪怪的。可不可以先计算每一笔交易的hash值,然后再两两合并计算hash,一直递归最后算出一个最终的hash值。这个就是merkle hash。最终的hash值就是多笔交易的集合的hash值,也叫merkle root。
下面画个merkle树:
通过这种层层相扣的计算hash,让你不仅可以知道数据是否被篡改,甚至还能知道哪个具体的交易被篡改。
我们在之前的《》其实就是已经提到过merkle算法,并且还贴出来代码,这里再贴一遍:
这会你也许会说这个merkle树就这么点作用啊。别急,它很厉害的。你发现没,merkle树是一个二叉树。这种树结构在数据校验时会帮我们更快的校验数据。
你知道比特币是一个分布式的网络结构。当一个节点要想同步账本数据时,比如A节点和B节点取得了联系,A从B处同步数据,那么同步过来的数据是不是要校验?
校验时发现同步过来的数据的merkle root和B的不一致。此时就会按照树的方式一层层的去检查,看具体的哪些交易数据被破坏了,检查出来后,只需要下载那些不一致的交易事务就是了。
你会发现,通过这个merkle二叉树,让我们很快地就检索到了有问题的交易事务,这正是树的魅力啊。
相关阅读:、、、、。
以上是关于什么?区块链中的hash算法!施主,快扶老衲起来的主要内容,如果未能解决你的问题,请参考以下文章