web3:区块链共识机制系列-POS(Proof of Stake)股权证明算法
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
web3相关学习一并收录至该博客web3学习博客目录大全
前情衔接web3:区块链常见的几大共识机制及优缺点
目录
前言
PoS 在主流算法一路畅通的“杀了出来”成为了最具有挑战者。近几年基于 PoS
共识打造的区块链项目越来越多如目前市值保持第二的ETH也加入了 PoS。“Staking经济”在 2019
年成为了热门词语同时也被交易所和钱包大力追捧。
PoS算法是针对PoW算法的缺点的改进。PoS由Quantum Mechanic2011年在bitcointalk首先提出后经Peercoin和NXT以不同思路实现。PoS不像PoW那样无论什么人买了矿机下载了软件就可以参与。PoS要求参与者预先放一些token利益在区块链上类似将财产存储在银行这种模式会根据你持有数字货币的量和时间分配给你相应的利息。用户只有将一些利益放进链里相当于押金用户才会更关注做出的决定才会更理性。同时也可以引入奖惩机制使节点的运行更可控同时更好地防止攻击。
算法公式与原理
算法公式
hash(block_header) =<target * coinage
币龄的计算coinage = 币的个数*币的剩余使用时间
其中coinage表示币龄这将意味着币龄越大越容易得到答案。而其中币龄的计算是通过挖矿者拥有的币乘以每个币的剩下使用时间得到这也将意味着拥有的币越多也越容易得到答案。这样pos解决了pow中浪费资源的问题同时挖矿者不可能拥有全网51%的币所以也解决了51%攻击的问题。
运作原理
第一步投入一定量token成为候选矿工
第二步一定时间内PoS就会在按照持币多少的顺序选择一个矿工并给予其生成区块的权利
第三步被选中的矿工需要将前面发生的交易进行和工作量证明进行打包放入区块中随后将区块广播出去所有接收到区块的节点对区块进行验证
第四步如果被挑选的矿工不能顺利产生区块PoS则会在候选矿工中再挑选一个并给予其生成区块的权力以此类推逐个挑选直到能顺利产生区块
第五步PoS通过上述的方法进行运作并以最长链作为主区块链进行延长。
POS机制是PPC的创新。没有“挖矿”过程在创世区块内写明了股权分配比例之后通过转让、交易的方式通常就是IPO逐渐分散到用户手里并通过“利息”的方式新增货币实现对节点的奖励。
简单来说就是一个根据用户持有货币的数量和时间币龄发放利息的一个制度。现实中最典型的例子就是股票或者是银行存款。如果用户想要获得更多的货币那么就要打开客户端让它保持在线这样就能通过“利息”来获益同时保证网络的安全。
以Peer Coin为例
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个币的利息
随机选出记账者是怎么随机的
1.一种是挑选下注多权益大的进行轮流记账
2. 还有一种是跟PoW结合在PoW中决定旷工能否出块的一个重要因素是出块的难度PoS将出块难度和权益挂钩权益越大难度越小出块概率越大。
缺陷
从pos的实现原理和实现算法公式上分析pos很完美的解决了pow的算力以及51%攻击问题那么pos是不是真的就很完美了呢
缺陷一
我们再从pos的实现算法公式去看币龄的计算公式中假如一开始挖矿只有创始区块中有币也就是说其他矿机是没法参与挖矿的因为币的个数这个值对他们来说永远是零这也就是pos机制的缺陷之一币无法发行的问题。
缺陷二
同样是从pos的实现算法公式可以分析到币龄其实就是时间一旦挖矿者囤积一定的币很久很久之后发起攻击这样他也将很容易拿到记账权所以我们得给每个币设计一个时间上限。
缺陷三
设计时间上限后虽然解决掉了部分挖矿者囤积币的缺陷从公式中仍然看到还会面临一个问题也就是币的数量这个因素还是会影响我们拿到记账权很多挖矿者还会囤积代币给代币造成流通上的缺陷。目前有些平台引入币龄按时间衰弱的方案来解决这一缺陷例如RDD。
缺陷四
接下来让我们来看看pos共识机制还有哪方面的不足即使上面的各种缺陷都多少有些解决方案但例如挖矿者挖一段时间后离线此时时间将不纳入币龄减弱计算这样挖矿者通过离线时间长来囤积挖矿同样面临灾难。
优点
- 相对节能不需要拼算力挖矿则不需要消耗电力和资源
- 高效同时缩短了共识达成的时间转账效率提高了
- 更去中心化相对于BTC等PoW类型的区块链产品PoS机制的区块链产品对计算机硬件基本上没有过高的要求人人均可“挖矿”获得利息不用担心算力集中导致中心化的出现单用户通过购买获得51%的货币量成本更高网络更加安全有保障。
- 避免紧缩PoW机制的区块链产品因为用户丢失等各种原因可能会导致通货紧缩但是PoS机制的区块链产品按一定的年利率新增货币可以有效避免紧缩的出现使货币保持基本稳定。BTC之后很多新币也采用PoS机制很多之前采用工作量证明机制的旧币也纷纷修改协议“硬分叉”升级为PoS机制。
缺点
- 被动形成中心化因去中心化程度容易出现强者恒强的情况会导致富者越富资源越来越集中的情况。
- 安全隐患PoS机制实现较为复杂容易产生安全漏洞。
- 无权益问题Nothing at Stake用户在PoS中可以同时在两个分叉上面下注无论哪一个分叉后面被公认为主链该用户都可以获得奖励而没有机会成本的损失。这样也在事实上会干扰共识的形成。
- 还是需要挖矿本质上没有解决商业应用的痛点。
特点
- PoS需要一定量的权益作为出块的竞争资本
- PoS不需要进行大量的“无用”Hash计算
- PoS偏向“权利”集中制但又做了均衡出块清0
- PoS通过股权质押对作恶者进行惩罚
- PoS提供激励机制
分类
先看三个问题
链分叉问题PoW从经济角度可以自然做到防止链分叉但PoS需要精心审计即nothing at stake问题。PoS可以采用一定的惩罚机制。
远程攻击问题即如旷工在撤回被定的虚拟资产后再发起之前发生的例行区块的分叉。
卡特尔形成问题即区块链的寡头垄断由于PoS共识算法是谁“富有”谁就有更大的话语权这样少数富有旷工之间的“协调”将导致寡头龙蛋的形成。
目前业内PoS共识算法的实现主要分为两类
简单的的PoS系统
这类PoS很少甚至没有从算法的设计上来解决上述问题一般是比较早期的PoS尝试。比较典型的例子是Peer Coin点点币PPC、新星币(Nova CoinNVC)、黑币Black CoinBLK、NextCoin未来币NXT等等。
精心设计的PoS系统
相对来说比较新。基于不同的实现方式精心设计的PoS系统可以分为两种。一种是基于拜占庭容错的权益证明BFT based PoS比如Tendermint另一种是基于链的权益证明Chain based PoS比如ETH Casper和ADA的Ouroboros。
第一类PoS系统安全性不够。第二类PoS系统目前还不够成熟有一些处于早期运行阶段有一些还处理讨论和测试阶段。
发展历程
由于pos存在以上四大缺陷所以pos的发展历程经历了三个版本即pos1.0、pos2.0以及pos3.0其中pos2.0在算法公式中使用的是币的数量这样上述缺陷二到四就不再是问题可这样以后却导致了pos共识机制面临了无成本利益的问题即 nothing at stake,这也将意味着很容易产生分叉。
casper协议
pos的发展历程提到为了解决其中4个缺陷引出很多版本也就是使用了pos2.0也会无法避免的引发无成本利益导致很容易分叉的问题而以太坊的共识机制就是使用的pos共识机制那么我们来看看ETH是如何解决这个问题的
1.什么是无成本利益关系问题
在解决无成本利益关系这个问题前我们先来看看什么是无成本利益关系问题因此我们可以先模拟下这种场景如下图所示
假设我们处在上面的这种情况下有一条蓝色的主链和一条红色的从主链中分出来的链条如何禁止一个恶意的矿工在红色区块上挖矿然后推动一次硬分叉Hard Fork呢
在一个工作量证明POW系统上这一风险是可以被减轻的。
假设恶意矿工想在红色链上挖矿。即便她投入了她所有的哈希算力也不会有任何矿工加入她在新链上挖矿的。每个其他人都将继续在蓝色链上挖矿因为在最长的链上挖矿收益更为可观而且不存在其他风险。
记住工作量证明在资源方面是非常昂贵的。对一个矿工来说花费许多资源在一个将会被网络拒绝的区块上是没有任何意义的。因此链分裂在一个工作量证明系统中是被避免了的因为攻击者将不得不付出大量金钱。
但把这种情形放到到权益证明下的时候事情看起来就有些不一样了。
如果你是一个验证者你可以简单地把钱投到红蓝两条链上完全无需担心间接的不良后果。不管发生什么事你都总是可以赢不会失去任何东西不管你的行为有多恶意。
这就是所谓的“无成本利益关系Nothing at Stake”问题也是以太坊必须解决的问题。他们需要一种协议可以实行权益证明同时减少“无成本利益关系”问题。
2.引入casper协议解决无成本利益关系问题
Csaper是以太坊选择实行的PoS协议既然有人恶意去使得我们的区块链产生分叉那么我们想方设法去对恶意制造者加以惩罚这样不就可以解决我们说的无成本利益关系问题了吗Csaper协议正式奔着这样的做法去实现的那我们来看看Csaper是如何去做的呢
- 验证者押下一定比例的他们拥有的以太币作为保证金。
- 然后他们将开始验证区块。也就是说当他们发现一个可以他们认为可以被加到链上的区块的时候他们将以通过押下赌注来验证它。
- 如果该区块被加到链上然后验证者们将得到一个跟他们的赌注成比例的奖励。
- 但是如果一个验证者采用一种恶意的方式行动、试图做“无利害关系”的事他们将立即遭到惩罚他们所有的权益都会被砍掉。
正是利用了这样的对赌协议帮我们对恶意制造者加以了惩罚使得我们的区块链尽量保障不会产生分叉。
POS和POW比较
POW | POS | |
---|---|---|
特点概括 | 多劳多得 | 持有越多获得越多 |
门槛 | 只要在硬件支持挖矿算法的条件下安装了相关软件那么就能进入到挖矿算力的竞争中 | 必须要在区块链网络上投入一定量的token你投入的token就相当于你入股网络的股份当然你拥有这些token的在区块链网络上的所有权。这就像入股一个公司一样在特定的入股条件下给予持股人相应的利息。 |
代表币种
ADA、ONT、ATOM等。
为什么PoS更加安全
在指定时间内在POS体系中即使你拥有了全球51%的算力也未必能够进行51%攻击因为有一部分的货币并不是挖矿产生的而是由利息产生(利息存放在POS区块中)这要求攻击者还需要持有全球超过51%的货币量。这大大提高了51%攻击的难度。
在PoS机制下持有币越多越容易获得记账权接近于赢家通吃的感觉但持有的币越多越接近于一个诚实的节点因为破坏整个网络带来的损失也越大即假设富人不会做恶毕竟做恶的目标是钱若你富有自然就没有做恶的动力。