哈希算法虽然不能叫做加密算法,但却在很多地方都有应用,尤其是目前大火的区块链中。区块链的出现离不开比特币,所以我们今天就来了解一下哈希算法在比特币区块链中的主要应用。

挖矿

挖矿其实就是工作量证明(PoW),矿工(通过不断重复哈希运算来产生PoW的各网络节点)必须要在满足全网目标难度的情况下求解SHA256算法。这种不断执行SHA256计算的过程很消耗算力,因此被形象地称为“挖矿”。在挖矿这个典型应用中实际上用到了哈希算法速度快和唯一性这两个特点。

哈希算法

比特币地址

比特币地址是以阿拉伯数字“1”开头的一串字符和数字,可以通过其发送比特币,就像通过Email地址发送邮件一样。比特币的所有权通过数字密钥、比特币地址和数字签名确立,这里数字密钥成对出现,其中公钥生成的比特币地址就像银行的帐户,而私钥就像控制账户的密码。

生成比特币地址的过程有三步,随机数-私钥-公钥-比特币地址。从公钥生成比特币地址的过程中用到了哈希算法,这样可以进一步加强安全性,降低碰撞的概率,防止攻击。这里主要是用哈希算法高效的优点,通过减少地址的长度,优化存储空间。

哈希算法

梅克尔树

梅克尔树在比特币中其实就是一棵二叉树。它是对一个区块中所有的交易事务进行两两哈希计算,得到的哈希值再两两哈希计算,这样递归计算生成一棵二叉树,也称哈希树,树的顶部为“梅克尔根”,放在区块头中。

通过这样组织的数据结构,很容易知道区块中的交易信息是否被篡改;而如果被篡改了,还能知道是第几块的信息被篡改了。这里用到了哈希算法唯一性和不可逆的特点。

梅克尔树

区块哈希

区块哈希就是对区块头进行哈希计算,得出某个区块的哈希值,用这个哈希值可以唯一确定某个区块,相当于给区块设定了一个身份证号,而区块与区块之间就是通过身份证号进行串联,从而形成了一个链式的结构。

哈希值相当于一个指针,检验信息是否被篡改,如果信息被篡改,那么其哈希值和哈希指针的值必定是不等的。这里也用到了哈希算法唯一性和不可逆的特点。

免责声明:素材源于网络,如有侵权,请联系删稿。