区块链共识机制技术二——POS(权益证明)共识机制

区块链共识机制技术⼆——POS(权益证明)共识机制
前⾔
由于区块链是去中⼼化分散⽹络,所以必须设计⼀套维护系统的运作顺序和公平性的机制,即共识机制,⽤来决定谁取得区块链的记账权并获得系统新币奖励。⽐特币的POW共识机制是⼀种多劳多得的模式,其优点是算法简单,容易实现,破坏系统的话需要投⼊巨⼤的成本,能够有⼀定的安全保障。不过该算法的缺点也⽐较明显,就是需要耗费⼤量电⼒,对交易的处理效率较低,像⽐特币系统就是每秒7笔交易的处理能⼒。因此,⼈们不断去琢磨新的共识机制,以便更好地运作区块链系统。
上⼀节,我们介绍了POW共识机制,本章将对区块链另外的⼀些共识机制做介绍,它就是POS共识机制。POS全称为proof of stake,中⽂翻译为权益证明,其最早使⽤在点点币中,它主要是解决POW中资源浪费的问题。
对于PoW,由于矿场的出现及挖矿设备性能的不断提升,算⼒开始集中,节点数和算⼒值渐渐不适配,同时PoW太浪费了,旷⼯持续挖矿进⾏的重复性Hash计算没有任何实际或者科学价值,⽽且还有⼀个更⼤的问题,作恶是没有成本的,旷⼯的恶意攻击并不会对旷⼯下次记账并获取相关权益(⽐特币)产⽣任何影响,鉴于此,⼈们提出了PoS。
PoS算法是针对PoW算法的缺点的改进。PoS由Quantum Mechanic2011年在bitcointalk⾸先提出,后经Peercoin和NXT以不同思路实现。PoS不像PoW那样,⽆论什么⼈,买了矿机,下载了软件,就可以参与。PoS要求参与者预先放⼀些(利益)在区块链上,类似将财产存储在银⾏,这种模式会根据你持有的量和时间,分配给你相应的利息。⽤户只有将⼀些利益放进链⾥,相当于押⾦,⽤户才会更关注,做出的决定才会更理性。同时也可以引⼊奖惩机制,使节点的运⾏更可控,同时更好地防⽌攻击。
⼀、PoS的实现原理及公式
要理解pos的实现原理,我认为从pos的实现算法公式来理解是最为直观的,其公式为:
李桂南hash(block_header)=<target * coinage
币龄的计算:coinage =币的个数*币的剩余使⽤时间
其中,coinage表⽰币龄,这将意味着,币龄越⼤,越容易得到答案。⽽其中币龄的计算是通过挖矿者拥有的币乘以每个币的剩下使⽤时间得到,这也将意味着拥有的币越多,也越容易得到答案。这样,pos解决了pow中浪费资源的问题,同时挖矿者不可能拥有全⽹51%的币,所以也解决了51%攻击的问题。
中文核心期刊要目总览2013
PoS(Proof of Stake):股权证明,与PoW相⽐,不需要证明你在记账前做了某项⼯作,⽽是证明你拥有某些财产。股权决定⼀起,谁的股权⼤,谁记账的概率就越⼤。由于PoS是BitCoin出现后提出的共识算法,⽬前还有得到实际的验证,并且,PoS不是⼀个,⽽是⼀类共识算法。最先使⽤PoS的是Peer Coin,不过是⼀种朴素的PoS,⽬前呼声很⾼的是ETH Casper,但还没有投产(拭⽬以待吧),所以关于PoS的描述基于Peer Coin。
⼯作机制
开始竞争出块记账前,拥有权益的节点将⾃⼰的权益放⼊PoS机制中,同时⾝份变为验证者,PoS机制根据验证者下注的多少,采⽤随机的⽅式选出⼀个记账者进⾏出块记账。这个随机并不是真正的随机,⼀般跟下注的权益成正⽐,谁的权益多,谁获取记账权的概率就越⼤。如果选出的记账者在⼀段时间内没有记账,PoS机制重新选择记账节点,当出块完成,开始进⼊下⼀轮的记账。
我们以Peer Coin来举例说明PoS的⼯作机制。Peer Coin是最先采⽤PoS共识机制的。在Peer Coin中,引⼊了币龄和币天的概念。所谓币天,就是你持有货币的时间,币龄=币的数量⽐天。⽐如你有100个币,总共持有30天(Peer Coin中未使⽤⾄少30天的币可以参与竞争下⼀区块),那么你的币龄就是10030=3000,你作为币的持有者,参与下⼀轮竞争,过程如下:
1. 在竞争开始前,你将3000币龄作为筹码下注,并成为记账验证者,
2. PoW机制会随机的选出⼀个记账者,刚好是你 你开始记账并完成
3. 你的3000币龄被清0
4. 你获得利息=3000 * 5% / 365 = 0.41个币(每被清空365币龄,你将会从区块中获得0.05个币的利息)
理解随机:选我、选我、选我?PoS在选择记账者时⼀般有两种做法,⼀种是挑选下注多(权益⼤)的进⾏轮流记账;还有⼀种是跟PoW 结合,在PoW中,决定旷⼯能否出块的⼀个重要因素是出块的难度,PoS将出块难度和权益挂钩,权益越⼤,难度越⼩,出块概率越⼤。
⼆、PoS的优缺点
通过上⾯的描述和PoS的特点,PoS优点为:
1. 节能环保,不需要⽆⽤计算;
2. 性能⾼;
3. 更加安全;
4. ⼈⼈可挖矿(获得利息),不⽤担⼼算⼒集中导致中⼼化出现;
5. 避免货币紧缩
为什么PoS更加安全?
在指定时间内,在POS体系中,即使你拥有了全球51%的算⼒,也未必能够进⾏51%攻击,因为,有⼀部分的货币并不是挖矿产⽣的,⽽是由利息产⽣(利息存放在POS区块中),这要求攻击者还需要持有全球超过51%的货币量。这⼤⼤提⾼了51%攻击的难度。
在PoS机制下,持有币越多,越容易获得记账权,接近于赢家通吃的感觉,但持有的币越多,越接近于⼀个诚实的节点,因为破坏整个⽹络带来的损失也越⼤,即假设富⼈不会做恶,毕竟做恶的⽬标是钱,若你富有,⾃然就没有做恶的动⼒。
pos的缺陷:
从pos的实现原理和实现算法公式上分析,pos很完美的解决了pow的算⼒以及51%攻击问题,那么,pos是不是真的就很完美了呢?
缺陷⼀:
金蝉脱壳教学设计
我们再从pos的实现算法公式去看,币龄的计算公式中,假如⼀开始挖矿,只有创始区块中有币,也就是说其他矿机是没法参与挖矿的,因为币的个数这个值对他们来说永远是零,这也就是制的缺陷之⼀币⽆法发⾏的问题。
缺陷⼆:
同样是从pos的实现算法公式可以分析到,币龄其实就是时间,⼀旦挖矿者囤积⼀定的币,很久很久之后发起攻击,这样他也将很容易拿到记账权,所以我们得给每个币设计⼀个时间上限。
缺陷三:
设计时间上限后,虽然解决掉了部分挖矿者囤积币的缺陷,从公式中仍然看到还会⾯临⼀个问题,也就是币的数量这个因素还是会影响我们拿到记账权,很多挖矿者还会囤积,给造成流通上的缺陷。⽬前有些平台引⼊币龄按时间衰弱的⽅案来解决这⼀缺陷(例如:瑞迪币)。
缺陷四:
接下来让我们来看看pos共识机制还有哪⽅⾯的不⾜,即使上⾯的各种缺陷都多少有些解决⽅案,但例如挖矿者挖⼀段时间后离线,此时,时间将不纳⼊币龄减弱计算,这样,挖矿者通过离线时间长来囤积挖矿,同样⾯临灾难。
三、PoS特点及分类
PoS 特点
1. PoS需要⼀定量的权益作为出块的竞争资本
2. PoS不需要进⾏⼤量的“⽆⽤”Hash计算
3. PoS偏向“权利”集中制,但⼜做了均衡(出块清0)
泉水的资料4. PoS通过股权质押对作恶者进⾏惩罚
5. PoS提供激励机制
PoS 分类
先说三个问题:
链分叉问题:PoW从经济⾓度,可以⾃然做到防⽌链分叉,但PoS需要精⼼审计,即nothing at stake问题。PoS可以采⽤⼀定的惩罚机制。
远程攻击问题:即如旷⼯在撤回被定的虚拟资产后,再发起之前发⽣的例⾏区块的分叉。
卡特尔形成问题:即区块链的寡头垄断,由于PoS共识算法是谁“富有”,谁就有更⼤的话语权,这样少数富有旷⼯之间的“协调”将导致寡头龙蛋的形成。
⽬前业内PoS共识算法的实现主要分为两类:章宗祥
简单的的PoS系统。这类PoS很少甚⾄没有从算法的设计上来解决上述问题,⼀般是⽐较早期的PoS尝试。⽐较典型的例⼦是Peer
Coin(点点币,PPC)、新星币(Nova Coin,NVC)、⿊币(Black Coin,BLK)、NextCoin(未来币,NXT)等等。
精⼼设计的PoS系统,相对来说⽐较新。基于不同的实现⽅式,精⼼设计的PoS系统可以分为两种。⼀种是基于拜占庭容错的权益证明(BFT based PoS),⽐如Tendermint,另⼀种是基于链的权益证明(Chain based PoS),⽐如ETH Casper和ADA的Ouroboros。
第⼀类PoS系统安全性不够。第⼆类PoS系统⽬前还不够成熟,有⼀些处于早期运⾏阶段,有⼀些还处理讨论和测试阶段。
四、pos的发展历程
由于pos存在以上四⼤缺陷,所以pos的发展历程经历了三个版本,即pos1.0、pos2.0以及pos3.0,其中pos2.0在算法公式中使⽤的是币的数量,这样,上述缺陷⼆到四就不再是问题,可这样以后却导致了pos共识机制⾯临了⽆成本利益的问题(即 nothing at stake),这也将意味着很容易产⽣分叉。
五、casper协议
第四章节我们说到pos的发展历程时,提到其为了解决其中4个缺陷,引出很多版本,也就是使⽤了pos2.0,也会⽆法避免的引发⽆成本利益导致很容易分叉的问题,⽽以太坊的共识机制就是使⽤的pos共识机制,那么我们来看看以太坊是如何解决这个问题的?
1.什么是⽆成本利益关系问题科技创新
在解决⽆成本利益关系这个问题前,我们先来看看什么是⽆成本利益关系问题,因此,我们可以先模拟下这种场景,如下图所⽰:
假设我们处在上⾯的这种情况下,有⼀条蓝⾊的主链和⼀条红⾊的从主链中分出来的链条,如何禁⽌⼀个恶意的矿⼯在红⾊区块上挖矿然后推动⼀次硬分叉(Hard Fork)呢?
在⼀个⼯作量证明系统上,这⼀风险是可以被减轻的。
假设恶意矿⼯想在红⾊链上挖矿。即便她投⼊了她所有的哈希算⼒,也不会有任何矿⼯加⼊她在新链上挖矿。每个其他⼈都将继续在蓝⾊链上挖矿,因为在最长的链上挖矿收益更可观,⽽且没有风险。
记住,⼯作量证明在资源⽅⾯是⾮常昂贵的。对⼀个矿⼯来说,花费许多资源在⼀个将会被⽹络拒绝的区块上是没有任何意义的。因此,链分裂在⼀个⼯作量证明系统中是被避免了的,因为攻击者将不得不付出⼤量⾦钱。
但是,当你把这种情形放到到权益证明下的时候,事情看起来就有些不⼀样了。如果你是⼀个验证者,你可以简单地把钱投到红蓝两条链上,完全⽆需担⼼间接的不良后果。不管发⽣什么事,你都总是可以赢,不会失去任何东西,不管你的⾏为有多恶意。
这就是所谓的“⽆成本利益关系(Nothing at Stake)”问题,也是以太坊必须解决的问题。他们需要⼀种协议,可以实⾏权益证明,同时减少“⽆成本利益关系”问题。
2.引⼊casper协议解决⽆成本利益关系问题
Csaper是以太坊选择实⾏的PoS协议,既然有⼈恶意去使得我们的区块链产⽣分叉,那么我们想⽅设法去对恶意制造者加以惩罚,这样不就可以解决我们说的⽆成本利益关系问题了吗?Csaper协议正式奔着这样的做法去实现的,那我们来看看Csaper是如何去做的呢?
1. 验证者押下⼀定⽐例的他们拥有的以太币作为保证⾦。
2. 然后,他们将开始验证区块。也就是说,当他们发现⼀个可以他们认为可以被加到链上的区块的时候,他们将以通过押下赌注来验证
它。
3. 如果该区块被加到链上,然后验证者们将得到⼀个跟他们的赌注成⽐例的奖励。
4. 但是,如果⼀个验证者采⽤⼀种恶意的⽅式⾏动、试图做“⽆利害关系”的事,他们将⽴即遭到惩罚,他们所有的权益都会被砍掉。正是利⽤了这样的对赌协议,帮我们对恶意制造者加以了惩罚,使得我们的区块链尽量保障不会产⽣分叉。
3.PoS运作的机制⼤致如下:
1. 加⼊PoS机制的都是持币⼈,成为验证者( validator);
2. PoS算法在这些验证者⾥挑⼀个给予权利⽣成新的区块。挑选顺序依据持币的多少;
3. 如果在⼀定时间内,没有⽣成区块,PoS则挑选下⼀个验证者,给予⽣成新区块的权利,
4. 以此类推,以区块链中最长的链为准。

本文发布于:2024-09-22 05:34:38,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/295952.html

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

标签:区块   机制   记账   挖矿   算法   问题
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议