工作量证明 - 如何证明你的工作很卖力

前言

上一期我们讨论了哈希函数的特性,本期我们来谈一谈哈希的应用,工作量证明是哈希的典型应用,现在我们开始深度刨析POW的运行机制。哈希函数有这么多特点和优点,它的应用场景有很多。比如,比特币中挖矿要求的工作量证明。梅克尔树在比特币中如何实现区块的防篡改。还有文件下载后如何判断完整性,网站中的密码如何保存到数据库,都可以应用哈希的特性来实现。这次我们把工作量证明从技术角度讲清楚,讲透彻。
在这里插入图片描述

请大家关注gitcoins抖音频道。我们将会分享有趣的、高质量的、加密货币相关的视频。

在这里插入图片描述

什么是POW

对于人来说,工作量证明就是指,你使了多少劲、努了多少力、工作干了多少、思考有多深。
一句话就是,你怎么向老板证明你很卖力,你的工作量很大。

在这里插入图片描述

对于计算机来说,工作量就是CPU消耗多少,内存或硬盘利用了多少,图形显卡GPU使用多少。
那怎么证明电脑干了很多活
在这里插入图片描述

计算机是如何实现POW

那计算机怎么证明它完成了大量工作,它耗了很多CPU、内存和硬盘等的资源呢?
之前的视频里说过,
如果你输入是一窜二进制数,你得到的值是这样的。如果我们只翻转其中一位,得到的哈希值截然不同,与第一个值相比几乎没有相似之处。
也就是说哈希值的就像骰子一样随机性很大、很难猜测。中本聪提出了一个有效办法,来证明电脑工作过。既然哈希值这么随机,这么难推测,那就要求大家一起找后4位是零的哈希值,谁先找到就奖赏谁。nonce好比菜里的调料,稍微有变化,你拉的大便就不一样。不断寻找4个0的过程,是一个不断计算的过程,也是不断寻找NONCE的过程,NONCE是能体现出真正的工作量。
在这里插入图片描述

  1. 之前我们计算哈希值是这样的
  2. 很难保证一次得到想要的4个00
  3. 那如何找到想要的4个0?这不是一个简单工作,很有难度和工作量。

中本聪又想到了一个办法,计算前输入中添加一个数,看输出结果末尾是不是4个0。如果不是,再修改一下这个数,然后看输出结果末尾是不是4个0。通过不断地修改这个数,最终找到4个0.
这个不断修改数叫做nonce。
加点不一样的佐料
类比,不一样的佐料会对大便有影响
1
2
。。
10234
终于找到4个0
在这里插入图片描述

POW与挖矿的关系

在加密数字货币中,不断寻找NONCE的过程,就是我们通常所说的挖矿,这个挖矿过程是由挖矿机完成的。

整个挖矿过程分为5步
第一 用户产生的交易数据,都被传送到了交易池或叫内存池的地方。
第二 挖矿机从交易池中取出交易,进行挖矿哈希计算,大约三到五分钟后能找到NONCE。
第三 挖矿机将交易数据组织成区块,请注意这里有一个不一样的交易,叫做coinbase交易,这里面记录的是给挖矿机给自己的奖金,包括赏金和交易费用。赏金是挖矿成功后由加密数字货币协议奖励的,是工作量证明后的奖励。交易费是每笔交易给挖矿机的小费,激励挖矿机优先将小费高的交易组织成块。
第四此时,新的区块还在挖矿机里,挖矿机将这个区块和NONCE发送到加密数字货币网络的其他节点。
第五 其他节点对区块以及NONCE进行验证,验证通过后,说明这个挖矿机是进行过有效工作的,就把这个区块加到这个节点的区块链上。
所以,这个挖矿机的奖金就被节点认可,同样的方式所有节点都认可挖矿机的奖金了。
在这里插入图片描述

笔记本VS挖矿机

那为什么早期用笔记本就可以挖矿,现在必须用大功率的、专业的、计算能力强的机器来挖矿呢?随着时间的推移,摩尔定律使单位计算量的性价比上升,还有量子计算的出现,全网整体水平计算能力提高了,这样计算能力较低的笔记本很难与专业挖矿机竞争。假设挖矿机需要5分钟时间,笔记本可能需要10分钟时间,挖矿机是笔记本电脑计算能力的两倍。也就是说,笔记本平均完成一个的同时,挖矿机就能完成两个区块的计算。这些区块发送到加密数字货币网络中的其他节点后,形成的区块链是这样的,上方链条为挖矿机提供的长度为4,下方链条为笔记本提供的长度为2。由于加密数字货币采用最长有效法则,上方为有效的区块链,下方为无效区块链,也就是下方区块中的奖赏是不被认可的。因此笔记本挖矿是没有意义的。
在这里插入图片描述

diffculty

另外,整个比特网络采用diffculty来控制全网挖矿速度,好比水龙头能调节水流量的大小。diffculty其实就是老板提升工作难度的手段,如果要求大家一起找后4位是零的哈希值,变为6位是0,或8位是零,这大大提升了挖矿的难度。我们可以看到,从14年开始,全网挖矿难度越来越大。

在这里插入图片描述

本次我们核心目标是加密加密数字货币的工作量证明,对工作量证明的背景、目的、意义、没有开展深度讨论,这些内容 Gitcoin抖音频道将在后期区块链内核中分解。

猜你喜欢

转载自blog.csdn.net/gitcoins/article/details/125297739