区块链共识机制之工作量证明(POW)

区块共识机制之⼯作量证明(POW)
像⽐特币、以太坊、NXT、Bitshares等这些区块链系统,其本质上是⼀种加密经济组织,它建⽴在点对点⽹络上,是去中⼼化、⽆管辖的,由密码学、经济学和社会共识来共同维护。这些加密⽹络因各种原因有着多种不同的风格——有些基于ASIC的⼯作量证明(PoW)、有些基于GPU的⼯作量证明、有些原⽣权益证明(PoS)、有些授权股权证明(DPOS)、还有我们即将见到的Casper权益证明——这些不同的风格都有着他们的哲学,在学习共识机制的时候,更重要的是理解其中的思想。
腐蚀监测“共识”,其汉语解释为共同的认识。相互没有联系的彼此,对⼀个特定问题持有共同的看法,除了因为⼀些不可控的道德、价值等⽅⾯的共识,规则的作⽤是⾮常重要的。
共识机制,就是游戏的规则,社会的法律,是⼈们共同采⽤的达成和维护共识的⽅式,也就是所有⼈都认可并遵守的规则,这也是区块链的灵魂所在。
共识机制在区块链中
区块链是去中⼼化的,没有⼀个指挥中⼼来告诉每个节点什么时候该做什么。所有⽹络上的参与者(节点)在共识机制下⼯作,他们⼀起协作完成⼀个按时间顺序的可信的公共账本(公开的数据库),并且每个节点都保存⼀份完整的数据备份,每个节点的数据内容必须完全⼀致。
区块链上矿⼯的⼯作
区块链上,每个矿⼯都在努⼒打包交易数据,某矿⼯a打包了⼀个数据块,他把这个数据块向全⽹⼴播,其他矿⼯收到这个块后对数据进⾏验证,确认⽆误就把这个块存起来,停⽌当前的打包⼯作,继续下⼀次打包,以此延长区块链。
可能存在的问题
根据FLP原理。Impossibility of Distributed Consensus with One Faulty Process⼀⽂提出:在⼀个异步系统中我们不可能确切知道任何⼀台主机是否死机了,因为我们⽆法分清楚主机或⽹络的性能减慢与主机死机的区别,也就是说我们⽆法可靠地侦测到失败错误。当多个主机通过异步通讯⽅式组成⽹络集时,这种异步⽹络默认是不可靠的。
在这个不可靠的⽹络上,数据会有延迟,也可能丢失,然⽽每个矿⼯都在都默默的做着⾃⼰的⼯作,努⼒的打包、存储数据块,不会问别⼈打包的情况,那么:
有可能多个矿⼯打包了同⼀个交易
可能矿⼯b和矿⼯c都打包并⼴播了数据块,矿⼯d和矿⼯e分别收到了来⾃b和c的块,都验证通过并存储了数据
另外,所有在这个⽹络上⼯作的矿⼯们,他们会思考:
方波信号发生器我为什么要那么努⼒,我能得到什么
隔热杯我需要具备什么条件才可以出块
如果我打包的数据块没有通过验证,我的这次努⼒有回报吗
在⽹络上⼀定会存在⼀些恶意的矿⼯,⽐如:矿⼯a不⼴播他的数据块,⽽是直接在后⾯默默的继续打包
区块链的共识机制,主要就是为了解决这些问题,⽬前,已经发展出了多种机制,每种机制都有利有弊,本⽂主要简单介绍⼯,之后会继续专门介绍其他共识机制。
⼯作量证明(POW)
最早的⽐特币区块链所使⽤的共识机制,以消耗掉⼤量算⼒竞争出块。
电阻加热炉
⽐特币的最长链规则
⽐特币区块链上有⼀个共识——始终以最长连为主链(有效链),也即 “最长链规则”。各节点都以数据块最多的⼀条链作为⾃⼰添加、更新区块的选择。这个规则对于⼯作量证明来说,⽆疑是⼀个神教,主链必然是⼴⼤矿⼯消耗最多经济资本创造出来的链。所有不合法、不在主链上的区块,最终都会被丢弃,以此维护⼀个权威的公共账本。
矿⼯挖矿的过程就是到nonce的值,使得下⾯的公式成⽴:
SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + nonce )) < TARGET
version: block的版本
prev_hash:上⼀个block的hash值
脚手架扣件
merkle_root:需要写⼊的交易记录的hash树的值
ntime:更新时间
nbits:当前难度
其中TARGET不是恒定不变的,在⽐特币区块链中,每2016个块(约14天)会根据这段时间出块的速度做调整,使出块速度保持在约10分钟,也就是难度控制。
在这2016个块的时间段内,哈希运算的难度是⼀定的,对每个矿⼯来说都是公平的,需要竞争的就是速度和运⽓了,谁拥有更多的算⼒,谁就有更⾼的概率在竞争中胜出,更快打包出块。
所以⽐特币区块链的⼯作量证明真的是⼀个⾮常纯粹的⼒⽓活,有时也会把它叫经典POW。
为什么需要等这么长时间,在这10分钟⾥,⽐特币系统在⼲什么?
⼴播区块
验证区块
完成新区块的哈希运算
这么长的时间,因为⽹络传输导致的数据问题概率⼤⼤减⼩,尽可能⼤的保证了所有矿⼯都收到⼴播并验证数据,但其实,传输和验证也并不需要10分钟那么长,其中90%的时间都⽤来进⾏哈希运算,因为这个运算的难度真的很⼤。也正是这样⾜够⼤的难度,才尽可能保证不同矿⼯同时出块的概率⽐较⼩,从⽽控制区块链少出现分叉。
在最长链规则下,即使区块链出现了分叉,随着时间的推移,两个链会变得不⼀样长,那么相对较短的⼀条链就会被丢掉,从⽽保持只有⼀条主链。
所以,⽐特币区块链的数据⼀致性,是建⽴在放弃交易处理效率的基础上的。
关于51%攻击
线性驱动器在POW共识机制下,如果某个节点拥有全⽹51%以上的算⼒,那么他就可以实现51%攻击(双花攻击)。所以区块链上,算⼒越多越分散,越安全。那么就需要保持矿⼯的活⼒,要有⾜够的激励让矿⼯努⼒挖矿,并且不断有新的矿⼯加⼊,这个激励就是丰厚的区块奖励和交易费⽤。
在⽐特币区块链上,区块奖励从最初的50个⽐特币,每四年衰减⼀半,现在只有12.5个了。但在区块奖励减少的同时,流通的⽐特币变多了,交易费也变多了,交易费的竞争更加促进了矿⼯的积极性,以此保障了⽐特币区块链的健壮性。
POW区块链的安全是建⽴在巨⼤的电⼒消耗上的,有新闻指出,。
到这⾥,相信已经对共识机制以及POW有了初步的认识,下⾯再看看以太坊的POW共识机制。
以太坊的POW共识机制
阅读,我们知道⽬前以太坊依然是POW共识机制。据最新消息,,此时以太坊将从POW过渡到POS。有兴趣的⼩伙伴可以了解⼀下。
以太坊的GHost协议
与⽐特币的最长链规则相⽐,以太坊的GHOST协议,唯⼀的也是最重要的不同就在于它选择主链的⽅式。
以太坊的出块时间只有⼗多秒,缩短出块时间就意味着难度降低,同⼀时间能出块的矿⼯就会变多,分叉概率就会⼤⼤升⾼,如上图,这种情况下如何维护⼀条主链。这就是GHOST的精妙之处,在⽐特币的最长链规则下,要避免出现分叉,⽽在GHOST协议下,却是利⽤分叉来保护区块链的安全性,如下图:
在以太坊的GHOST协议中,引⼊了叔块,如上图。当分叉出现时,矿⼯m0可以在挖区块2时引⽤1a、1b作为叔块,当m0挖出区块2时,矿⼯m1、m2就可以得到区块奖励的7/8,同时m0可以额外得到区块奖励的1/32×2。⽽矿⼯m1、m2在收到区块2的⼴播时会验证并发现m0挖矿的链更长,于是放弃⼿⾥的⼯作,转⽽在区块2后⾯继续挖矿。
在引⽤叔块时,最多同时引⽤2个,即m0⼀次引⽤叔块最多得到1/32×2的奖励
给叔块的奖励会随着离叔块的距离每增加1⽽减少1/8,直到距离到第8个块时不再有叔块奖励,如上图中区块1引⽤两个叔块1c、1d,矿⼯m3、m4分别得到7/8的区块奖励
通过这种⽅式,可以在⽹络中产⽣很多分叉,并且激励矿⼯在发现最长链时尽快合并,让更多的矿⼯在主链上挖矿。只要通过难度控制,保持主链和全⽹出块率不超过⼀个,就可以有效抵御双花攻击。
总结
在⼯作量证明的逻辑下,区块链会消耗⼤量能量,并且它的攻击和防守成本是1:1,并没有防守优势。但是我们依然不可否认其在区块链中的价值,它在⾃由市场和博弈论的基础上建⽴起来,为之后的其他共识机制奠定了基础。
本⽂⾸发于博客——

本文发布于:2024-09-23 04:30:40,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/158420.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:区块   共识   机制   数据   特币   打包   规则
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议