所在位置:S币 > 比特币 > 正文

比特币哈希函数与工作量证明「通俗易懂」精选

专业作者:币哥
主要从事:每天潜心聚力的研究比特币走向,在区块链公司担任管理职务,致力于比特币方向分析
[导读]:哈希函数 第一,无论输入的字符串有多长,输出的字符串长度都是固定的。例如美国国家安全局发明了一种哈希算法SHA256,它能将任意字符串输出成一个256位的二进制代码。而且,如果...

哈希函数

  第一,无论输入的字符串有多长,输出的字符串长度都是固定的。例如美国国家安全局发明了一种哈希算法SHA256,它能将任意字符串输出成一个256位的二进制代码。而且,如果输入的字符串有一点点变化,哈希值都会变得面目全非。

  第二,哈希函数的正向计算很容易,反向计算非常困难。举例来说,我们可以设计这样一种运算:将一个10进制数每个位上的数字三次方取和,再除以256取余数,再转化成二进制,这就是一种8位哈希函数。给定任意一个十进制数字,求出这个哈希值并不难;反过来,给出哈希值,问原来的数字是什么,却是非常困难的。

  因为哈希值的这个特点,它被广泛用于计算机科学中,例如在校验、数字签名等领域都有应用。而中本聪在设计比特币时使用的工作量证明,也正是基于哈希函数。

工作量证明

  明白了哈希运算,我们就可以来解释挖矿的具体过程了。

相关阅读:比特币到底是什么?总算有人讲清楚了!

  首先,区块链上每一个“块”都有头部和信息两个部分。参与挖矿的矿工们会读取前一个区块的头部,再加上自己收集的账单、打包的时间戳、个人信息和随机数等其他内容,生成一个字符串。

  随后,用户会对这个字符串进行两次SHA256的哈希运算,求出它的哈希值。

  中本聪在《白皮书》中设计:只有那些计算出的哈希值小于某个值(从二进制数字上看,就是前几位数字都是0的哈希值)才是满足条件的,如果你找到了这个哈希值,那么就有资格把自己打的包链接到区块链上。

  此时,你给出了一个字符串和相应的哈希值,并向所有人广播,其他人经过检验确认了你的结果,于是你就可以将自己的数据链接到区块链上了。而你刚刚计算出的哈希值就是新的数据块头部,在下一轮比拼中,世界上所有的矿工都会读取你的数据块头部,加入到自己的字符串中,并疯狂进行下一轮的哈希运算。

  可是,既然哈希值是无法反向计算的,矿工们又如何才能得到前n位都是0的哈希值呢?别无他法时,只有暴力破解。也就是:每个用户不停地改变自己字符串中的随机数,0、1、2、3……每次改变随机数后都对字符串做两次哈希运算和一次检验,直到尝试出那个符合条件的随机数和哈希值为止。它非常类似于暴力破解密码的过程。

  需要指出的是:每个矿工在挖矿的时候,题目难度是不一样的。这是因为虽然每个矿工都读取了区块链上最后一个块的头部,但是每个矿工记录的账单信息、时间戳、个人信息等内容都是不一样的。所以,满足哈希值小于某个值这一条件,需要给出的随机数大小也不同。有些人运气好,有些人运气不好,所以计算的时间也有长有短。不过,平均来说,谁的计算能力更强,在单位时间内尝试的次数更多,谁就更有希望找到正确的哈希值成为幸运的矿工。

  为了更加高效地进行SHA256运算,人们设计了专门的芯片ASIC矿机和GPU矿机,跟我们常用的CPU比起来,它们对这种低级而又重复性高的计算更加拿手。又因为它们耗电量非常大,所以大型矿场都建设在水电站旁边等电价相对便宜的地区。

比特币难度设置

  中本聪设计比特币时,为了保证比特币不会滥发,要求每10分钟出现一个新的区块。可是,世界上的矿机越来越多,计算速度也越来越快,如何保证这个时间不变呢?这就涉及到难度设置的问题。

  我们刚才说到:SHA256算法可以将任意字符串转化成一个二进制数,它的每一位要么是0,要么是1,每一种可能的概率都是50%。那么,如果要求一个哈希值的前n位是0,概率就是:

  反过来说,平均计算2n次才能出现一次前n位都是0的哈希值。我们可以根据全球矿机的计算能力来确定数学计算的难度,保证打包的速度不会太快或者太慢。如果挖矿的人太少,这个n就会变小,让计算变得容易一些;如果挖矿的人太多,就将n调大,让问题变得困难一些。

  举个例子,假如世界上有一万台矿机,每一台矿机的计算速度是14T/s——每秒钟可以进行14T(1T≈1012)次哈希运算。

  所以,此时应该把挖矿的难度设置为n=66,第一个通过改变随机数,让自己的区块的哈希值前66位都是0的的人,能够成功挖到矿。

  这回为大家介绍了比特币挖矿的具体过程,它根据计算机的算力,动态调整问题的难度,每十分钟出现一个获胜者,打包一个区块。

友情提示:以上就是关于“比特币哈希函数与工作量证明「通俗易懂」”的所有内容,如有差错,请读者自行判断本文内容的正确性。如若转载或引用,请您注明出处:http://www.weigepro.com/news/154.html,感谢广大网友们的分享。

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!

欢迎进入S币,我们每天更新各大虚拟货币(比特币、狗狗币、莱特币、区块链等)的最新资讯,为每个爱好者提供最新行情!