主页 > 2023年最新imtoken钱包下载安卓 > 仁华区块链技术系列-共识机制1 POW

仁华区块链技术系列-共识机制1 POW

近期有不少读者反馈,希望看到更多简单易懂的区块链技术内容。 所以台哥决定做一个《人华区块链技术》系列,把晦涩难懂的技术知识用大家看得懂的方式介绍给大家。 本期图阁将从区块链最重要的共识机制入手,一一介绍。

本文先写最著名的POW(Proof of Work),中文名称为:工作量证明,是比特币目前使用的共识机制。

比特币共识算法_比特币算法软件_比特币是什么算法

什么是共识机制?

在开始之前,我们需要了解什么是共识机制。 顾名思义,共识机制就是让一群人通过一定的规则达成共识。

比如最近信鸽年会的小活动——猜歌名,两个小伙伴同时猜对了歌名,我们可以通过共识机制解决谁能赢的问题这一轮的小奖品。

最简单的方法就是让其他人投票,A或B的票数多者获胜。 这是一种共识机制。 (但显然这种方式并不公平,如果A是美女,B是IT男​​,在像土哥这样全是IT技术男的团队里,美女显然更有优势。)

什么是公平方便的方式? 另一轮是个好主意,但还有一种更透明的方法:掷骰子。 获胜者由具有相同概率的随机数决定。

回到正题,如果你明白什么是共识机制,相信你不会问什么是POW,而是问POW是个什么样的规则,它解决了什么问题。

POW解决什么问题?

POW解决的第一个问题是谁来保管账本(打包上链,获得奖励)。

比特币算法软件_比特币是什么算法_比特币共识算法

在区块链中,为了保证数据不可篡改,数据会被打包上链——可以想象为耗费计算机性能和时间,将几个文件压缩成一个压缩包,或者放在一个加密文件夹中,然后将它们分发给其他人。

在比特币网络中,只有被打包上链的“人”/节点才能获得比特币奖励。

比特币共识算法_比特币是什么算法_比特币算法软件

POW需要解决的第二个问题:数据分发给其他人后,A可能同时收到B和C的数据包,B和C应该接受谁的数据包,谁的块可以上传到链条,也就是“分叉”问题。

POW用什么规则来解决这两个问题呢?

第一个问题:谁来保管账本?

1. 工作量证明

正如它的名字——工作量证明,POW 是根据工作量来决定谁将数据打包上链。

简单来说,打包的具体操作就是通过对核心交易信息、区块版本号、上一个区块的哈希值、打包时间、计数器等进行多次哈希,生成一个256位的哈希码。

比特币共识算法_比特币算法软件_比特币是什么算法

比特币算法软件_比特币是什么算法_比特币共识算法

其中计数器是工作量证明中最重要的东西。 它是一个无法直接用公式计算出来的值,需要穷举穷举,不断猜测,才能保证每个人得到这个值的概率都是一样的。

可以举一个这个过程的例子。 比如规定hash值小于20的第一人可以得到奖励。 A和B同时开始猜,A猜1,B猜2,两个值分别散列后,如果1散列得到99,2散列得到19(谁也不知道散列值在预付价值),则 B 获胜。 比特币使用这样的机制来选择“赢家”。 (对于散列,请参阅本文)

不懂哈希的可以看这个例子: POW猜数的过程就像掷骰子,没有人知道掷出的数字,需要不断尝试。 决定胜负的方式是通过设定条件,比如掷出一个6获胜,这对每个人都是公平的,因为掷出一个6的概率是一样的。

2.竞技难度

比特币区块每10分钟产生一次,但是这个时间不是固定的,因为按照上面的机制,猜测完全是一个概率事件,也就是说可能有人会在几秒内猜到。

为了防止这种情况发生,比特币有一个难度调整,就是调整上述规则中的“哈希值小于20”。 如果“小于20”过于简单,那么就把条件设置为“小于1”,这样一来,猜测的难度就大大增加了,猜测所需要的平均时间自然也就增加了。

难不成没有人猜到的情况发生了? 是的,因为hash后的值是不确定的,N个数可能穷尽,永远得不到需要的hash值。 此时,您可以通过比特币预留的“留言板”添加任何内容。 然后你可以再次详尽地数数并再次猜测。

秉承以人为本的精神,以骰子为例,规定只能掷出一个6比特币共识算法,才能做出飞行棋的第一步。 万一大家都很倒霉,还是滚不出来怎么办? 然后允许扔1“开后门”,大大降低了游戏难度; 同理,如果运气太好,大家都一直投6,那么规定必须连续投2次6,才能出手。 通过自由调节规则,保证整体游戏时间不会过长或过短。

3.工作验证

历经千辛万苦,我们终于猜对了这个值,但凭什么让别人相信呢? 需要身份验证。

比特币共识算法_比特币是什么算法_比特币算法软件

也就是我们把数据打包发给别人。 其他人不会直接存储在自己的区块链中。 他们会先检查一下,包括各种格式、取值范围、签名等。

另一件要检查的事情是这个柜台。 校验器会对接收到的数据内容再次进行哈希处理,看我们是否猜对了数字。 如果发现哈希值符合本轮规则,那么他们就会认可你的工作,将区块存储在自己的区块链文件夹中,然后开始下一轮“猜数字游戏”。

第二个问题:分叉怎么处理?

1.默认允许临时fork,继续运行

现在如果A和B几乎同时猜到这个数字,并且将他们打包好的数据包广播到全网,那么其他人应该“听谁的”呢?

在这种情况下,比特币系统不会做出任何回应,即维持原有规则,C先收到A,再接受A的数据; D先接收B,再接受B的数据。 大家继续按照自己当前的区块链进行下一轮的猜号。

比特币算法软件_比特币共识算法_比特币是什么算法

下一轮只有C猜对,C将数据广播到全网。 这时A、B、D都会接受C的数据,因为按照只认最长链的规则,此时C的区块链是最长的。 更长,ABD 比它短一个区块,因此,ABD 会同意用 C 的区块链覆盖它自己的区块链。

比特币算法软件_比特币是什么算法_比特币共识算法

2.达成共识

比特币算法软件_比特币是什么算法_比特币共识算法

这样一来,一开始的争议就不存在了,也就是上一轮A和B的较量,A赢了。 B和D的数据库会被回滚比特币共识算法,B的奖励也会被清空,也就是说B和D在那轮之后的所有工作都白费了。

另外,有人连续两三轮猜对了也没关系,因为猜数字是完全随机的。 随着游戏回合数的增加,总会有一个回合决出胜负。 (以掷骰子为例脑补)

比特币共识算法_比特币算法软件_比特币是什么算法

典型漏洞

先说一个前提,POW通过随机数解决了一定情况下记账权的公平竞争问题,但现实中一个人可以拥有多台设备。

因此,POW 并不是绝对公平的。 A购买多台设备,1秒内猜出10个数字; 而如果B只有1个设备,他在1秒内只能猜1次,这显然是不公平的。

但这就是为什么 POW 用户越多越安全的原因——如果有 1000 万人使用基于 POW 的应用程序,每人拥有一台设备,那么恶意攻击者至少需要 500 万台设备或非常先进的设备才能实现攻击(即攻击者猜测的概率比别人高),攻击后的收益与如此高的攻击成本相比根本算不了什么。

漏洞一:

算力垄断攻击:只要想作恶的人有足够的“算力”,也就是他们的设备足够快,有了这个优势,即使第一轮和第二轮都猜不中,根据概率,他们的算力足够强,所以猜测的概率更高,迟早会成为最长的链,从而完全覆盖别人的区块链。 51%攻击由此而来。 当恶人的算力大于诚实人的算力时,哪怕只多1%,按照概率,恶人的计划迟早会成功。

漏洞二:

比特币共识算法_比特币算法软件_比特币是什么算法

自私挖矿:当自己挖出一个新的区块时,不会对外公布,而是会继续默默地计算下一个区块。 如果你连续计算了好几个区块,而别人刚刚计算出第一个区块,那么你可以通过发送已有的区块来覆盖别人的数据,把别人的成果全部烧掉;

比特币是什么算法_比特币共识算法_比特币算法软件

(示意图一)

如果你还没有挖出第二个区块,而别人已经计算出了第一个区块,那么你应该迅速发出你的第一个区块,造成“分叉”,即让一些人先接受自己的区块,并且让他们一起帮忙挖第二块,我已经挖完了第一块,所以提前开始挖第二块。 按照概率来说,先挖到第二个区块的可能性要比其他的高很多。

比特币共识算法_比特币是什么算法_比特币算法软件

(示意图二)

比特币共识算法_比特币算法软件_比特币是什么算法

比较优缺点

优点:规则简单,竞争公平透明,去中心化,用户越多越安全。

缺点:效率低,算力资源浪费大,用户少,几乎没有安全性。

总结:适用于信任成本高、交易量小、用户量大的场景; 它还可以与其他共识机制一起使用,解决少量对“公平性”要求高的交易。