心碎了无痕2星评价
2021-03-22 10:27:32
1、什么是哈希值?
哈希值是使用数学函数创建一个字符序列。这个序列的特点是具有高度的安全性,允许您安全地发送消息。最重要的是,它是目前市场上每一种加密货币的一部分,但可以说,它们都有不同的价值和质量。我们可以肯定的一点是,适当的哈希值是每个加密货币成功率的一部分。再简单的说哈希就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数,有了哈希函数,就可以将互联网上的数据以固定长度字符串的形式来保存。
2、哈希值是如何应用在区块链中的?
在区块链中,每个区块中都有前一个区块的哈希值,前一个区块叫做当前区块的父区块。由于每个区块都有前一个区块的哈希值,当修改当前区块的任意数据时都会导致区块的哈希值发生变化,这会对前一个区块产生影响,因为这其中含有前一个区块的哈希值。
比如
当前有两个区块,一个是当前区块,一个是父区块。当前区块中有父区块的哈希值,如果需要修改当前区块的哈希值,就需要对父区块链进行修改,而父区块又拥有上一级父区块的哈希值(以此类推),不仅如此,当前区块后续产生的区块的所有哈希值也都必须进行修改。如果只有两个区块就比较好修改数据,但事实上区块链上有很多的区块。
以比特币真实数据为例
截至发文前,比特币区块高度为:646795,第646795个区块的哈希值为0000000000000000000157df3725ae6c201e68d4f96ad9c82d3715943a7e7987。如果想要修改第646795个区块的数据,那么646794区块的哈希地址就会发生改变,但是修改所有646794个区块的哈希值是不可能的,除非修改者拥有51%的算力攻击,然而想要有这51%的算力攻击那是更加不可能的(什么是51%攻击,为什么说修改者难以拥有这51%的算力攻击?详情可点击红字‘往期推送’进行阅读了解),且以比特币十分钟产生一个区块的速度想要修改哈希值那是难上加难,不止需要跟上产块的速度,还需要一个天文数字的费用做铺垫,所以,因此区块链中数据的不可篡改是可信赖的。
3、什么是哈希碰撞?
这里我们还是以比特币为例:比特币使用的哈希函数hash256x2算法,无论输入是什么数据文件,输出就是256bit。(译:位(Bit),字节(Byte),字(Word),SHA始终把消息当成一个位(bit)字符串来处理。比如,字符串“abc”可以被转换成一个位字符串:011000010110001001100011。它也可以被表示成16进制字符串:0x616263.)
每个bit就是一位0或者1
256bit就是256个0或者1二进制数字串,用16进制数字表示的话,就是多少位呢?
16等于2的4次方,所以每一位16进制数字可以代表4位bit。那么,256位bit用16进制数字表示,当然是256除以4等于64位。
于是你通常看到的哈希值,就是这样的了:00000000000000000000d9cd28b2d4cea7a7363284a9c4bd7ddc0b4ef14e9275。
Q:怎样才能碰撞成功获得打包新区块的权力呢?
A:我们现在假设有十组位字符串:(一组位字符串由256个0和1组成,但凡其中一个1或0产生变化就会生成一组新的位字符串,如下:)
1
●011000010110001001100011......(256个)
2
●011100010110001001100011......(256个)
3
●011100000110001001100011......(256个)
4
●011100011110001001100011......(256个)
5
●011100010010001001100011......(256个)
6
●011100010111001001100011......(256个)√
7
●011101010110001001100011......(256个)
8
●011100010110011001100011......(256个)
9
●011100010110001001110011......(256个)
10
●011100010110001011100011......(256个)
......
(实际还有很多很多位字符串,可以用无数个来概括,所以在这里就不一一举例了)
而哈希碰撞就是,当矿工在计算哈希时,刚好与以上某一组(假设第六组)位字符串碰撞成功,然后再使用16进制数字法算出第六组位字符串的哈希值,谁率先算出正确的哈希值,那么该矿工就有了打包区块的权利,从而生成新区块。这也是为什么我们总说挖矿是一道很难的数学题了,一道超难的数学题,谁要是最先计算出正确的答案,谁就能获得奖励,一个理儿啦!
可是,想要快速碰撞成功可不是那么容易的哦,你要碰撞无数次才可能有获得奖励的机会。最初的挖矿因区块高度低,平均碰撞50次就能产生一个新区块,可随着现在的区块高度,平均需要碰撞数十万亿次左右才能产生一个新的区块,所以现在能理解为什么家用电脑已经无法实现挖矿了吧,再牛逼的家用电脑算力都永远跟不上挖矿的速度,只有专业的人才能做专业的事。