查看原文
其他

平行区块链之共识篇:PoS共识算法探讨

2017-09-20 倪晓春 平行区块链

事与愿违的PoW


PoW(Proof of Work),即工作量的证明,“通过工作以获得指定成果,用成果来证明曾经付出的努力”。日常生活中应用广泛,例如:毕业证、驾照等,就是工作量的证明,拥有证书即表明你在过去投入了学习与工作。比特币在新Block生成过程中使用了PoW算法。


具体公式:

hash (nVersion,hashPreBlock,hashMerkleRoot,nTimes,nBits,Nonce)<MAXTARGET/Diff


可简化为:

F(Nonce) < Target


其中Nonce是随机元素,F(Nonce)就是生成Block Hash运算,Target是合格区块的量化(一个符合要求的Block Hash是由N个前导零构成,零的个数取决于网络的难度值)。因为Nonce的随机性导致为了得到合理的Block Hash需要进行的大量尝试计算。


图1 矿池示例

 

PoW设计之初是希望利用分散的计算资源,让每个比特币的参与者都可以开动自己的电脑进行挖矿,公平参与来获取比特币。但后来的发展大家有目共睹,从CPU到GPU到AISC矿机再到矿池(如图1),PoW算法的缺点日益凸显:


● 耗能巨大,造成环境污染

美国科技网站Vice本周刊文称,由于多方面原因,比特币网络消耗的能源正日益增长。在最不乐观的情况下,到2020年,比特币网络的耗电量将达到丹麦整个国家的水平[1],而这些算力始终在做着没有意义的暴力破解运算(求Hash值)。


● 算力中心化

拥有强大算力的矿池(如图2)会带给整个生态恶性的影响,算力的中心化让后来者无法公平参与,同时算力的过于集中可能会对比特币网络的去中心化构成威胁。


图2 矿池算力分布


PoS的起源


PoW被指责最多的两个缺点,引起人们逆向思考,为何不换一种方式呢,于是PoS诞生了。


PoS(Proof of Stake),即权益证明,由Quantum Mechanic于2011年在Bitcointalk论坛首先提出[2]。当时,Vandroiy所写的挖矿公地悲剧问题[3]引起了很多人的兴趣,但是在两个月内并没有对这个问题取得实际的进展。然而,当Quantum Mechanic发表了“股权证明而不是工作证明”[4]的帖子后,事情发生了变化。Quantum的帖子是比特币社区中第一个使用“股权证明”这个术语的,也有可能这就是“股权证明”这个概念的起源。如果说PoW比拼的是算力,那么PoS比拼的是权益(stake),即你手里的币越多,挖到一个新块的概率越大。


PoS的实现


PoS由Sunny King 在2012年8月发布的PPC(点点币)首先实现[5]。其最大的创新在于混合了PoW和PoS两种挖矿方式。PoW主要在最初的采矿阶段起作用。初衷让货币充分相对公平分配。由于PPC和BTC都使用了同样的sha256 hash算法,所有能挖BTC的矿机或者电脑都可以挖PPC,只需要将BTC的矿池更改成PPC矿池即可。PoW发行方式为新矿数量与难度系数的平方成反比,即难度系数越高,奖励越少。最初每个区块可以产出2070个PPC,未来预计随着挖矿难度上升,产量会越来越低。同时,PoW的重要性也将逐渐降低,系统将主要由PoS维护。


PoS中一个合格的区块表述为:

hash(nStakeModifier + txPrev.block.nTime + txPrev.offset + txPrev.nTime + txPrev.vout.n + nTime) < bnTarget * nCoinDayWeight

(详细参数说明可参见源码[6]),可以简化为

F(Timestamp)<Target * CoinAge


与PoW相比,上述公式左边的搜索空间由Nonce变为Timestamp,Nonce本质是无限的,而Timestamp极其有限,换句话说不是象PoW那样在无限制的空间里寻找,搜索空间被限制了,因此无需大量的能源消耗[5]。公式右边Target代表全网当前目标难度基准值,类似POW中的当前难度值,而CoinAge(币龄)则是点点币里面一个非常重要的概念,可见币龄越大,整体值(Target*CoinAge)越大,找到一个合格区块的概率就越大。因为Timestamp有限,点点币中PoS锻造区块成功率主要与币龄有关。


币龄是什么?币龄被定义为货币量乘以持有期。简单举例说明一下:如果李明从韩梅那里收到了10个币,并且持有90天,那么李明就收集到了900币天的币龄[5]。此外,如果李明使用了从韩梅收到的这10个币,我们就认为李明从这10个币上积累的币龄被消耗(销毁)了。

 

PoS具体实例


除了PoW区块之外,在PPC中还有一种新型的PoS造币过程。PoS区块将根据在币利交易中所消耗的币龄产生利息币。设计时设定了每1币一年将产生1分(利息),以避免将来的通胀[5]。首先介绍一下PoS方式挖矿的基本知识。


● 挖矿硬件:能够运行PPC客户端的个人电脑PC即可


前置条件:你的PPC钱包内必须有余额,也就是不能为零。而且这些余额在你钱包里最少已经停留了30天。否则是无法进行PoS挖矿的。再有就是你得上线,开客户端才能参与PoS方式挖矿


算力约束:用于计算算力的币龄中的时间最长只能选取90天[7],这是一个算力截止上限。


下面我们通过一个实例[8]来说明PoS方式是如何挖矿的。


1) 我的钱包初始状况如下:


图3 挖矿前初始状态

 

2) 然后11月30日上线进行PoS挖矿时,挖矿成功会看到弹窗,并获得5.56个PPC:


图4成功挖到点点币时的弹窗

 

3) 此时,钱包快照如下所示:


图5成功挖到点点币后的钱包快照

 

2013.05.04与2013.11.30之间相差210天,大概是7个月。


PoS的计算公式:

币龄(年)*PPC余额*1%(利率)=210天/365天*968.05*1%=5.56 PPC


不过币龄被销毁了,获得了5.56PPC。挖矿完成后,可以从上图看到968.05+5.56=973.61进入了Stake 的余额(不可用状态),“本金+利息”将被锁定520区块后,才会重新回到“余额”一栏中。假设挖到的是80000号区块,那么冻结的这些PPC会在520区块后即80000+520=80520区块后,重新从“Stake”一栏中回到“余额”中。按照目前每天大概200个区块的速度,这部分余额将在2天半左右之后回到你的钱包中。


多产生了5.56PPC,这是消耗的币龄所产生的利息币,系统会通过交易费用(0.01PPC每K字节)冲抵一些,交易费用的销毁PPC是用来抵消PoS造成通胀。

 

PoS的发展


2014年2月,开发者rat4基于点点币进一步完善了PoS算法,发布了BlackCoin黑币。黑币,首创快速挖矿+低股息发行模式,发行前7天采用Scrypt算法挖矿,第八天开始进入纯PoS阶段,是历史上第一个纯PoS数字货币[9],进入PoS2.0时代。PoS2.0在前期采用PoW方式,通过算法改进,使得在短时间内无法制造出专用的GPU和AISC矿机,人们只有开动自己的电脑CPU公平的参与到首次发行中获取相应货币。发行阶段后,进入PoS方式,货币进入流通阶段,可以通过投资形式获取更多的货币,促进货币流通和增值,并且币种通过人们持有获取算力,解决算力中心化的的问题[10]。黑币社区后来进一步升级,推出PoS3.0版本,对交易手续费、难度调整做了一些优化,其最显著的改变是将1%年利率奖励机制变为固定数额奖励(每个区块固定奖励1.5BLK),此举不但降低代币通胀率,同时意味着持币节点必须实时在线才能获得收益。


PoS的小结


PoS一并解决了PoW浪费能源和算力集中两个痛点,但在PoS中存在“富者更富”的问题,新获得PoS的能力受已持有PoS的绝对限制,导致人们认为它是一种不公平的模式。同时,存在“nothing at stake”问题[11]。PoW因为采用算力挖矿,一旦分叉,小算力分支很难存活。反观PoS,一旦发生硬分叉,所有持币人都会在两条链上持有相同数量的币,因为PoS挖矿不需要任何成本,导致每条分支都会永远存在因为理性的矿工会同时在所有分支上挖矿,造成整个币的价值降低,并存在被攻击的风险。PoS最大的问题是缺乏严格的数学论[12]。PoS完善之路还在不断进行中。

  

参考资料

[1] http://tech.sina.com.cn/i/2016-03-31/doc-ifxqxcnr5007815.shtml

[2]https://en.bitcoin.it/wiki/Proof_of_Stake

[3]https://en.bitcoin.it/wiki/Tragedy_of_the_Commons

[4]https://bitcointalk.org/index.php?topic=27787.0

[5]https://peercoin.net/assets/paper/peercoin-paper.pdf

[6]https://github.com/peercoin/peercoin/blob/master/src/kernel.cpp#L359

[7]https://github.com/peercoin/peercoin/blob/master/src/main.h#L46

[8]http://8btc.com/thread-1926-1-1.html

[9] https://baike.baidu.com/item/%E9%BB%91%E5%B8%81

[10]https://www.linkedin.com/pulse/%E6%B7%B1%E5%BA%A6%E6%8E%A2%E8%AE%A8pos%E6%9C%BA%E5%88%B6-%E9%B2%B2-%E7%8E%8B?trk=pulse-det-nav_art

[11] https://github.com/ethereum/wiki/wiki/Problems

[12] http://www.doc88.com/p-2854919480462.html


往期文章推荐

运行于区块链上的智能分布式电力能源系统 : 需求、概念、方法以及展望

《自动化学报》“区块链技术与知识自动化”专刊论文概览

区块链:理想与现实的博弈

平行区块链之共识篇:分布式一致性与Raft共识协议

平行区块链之共识篇:RPCA算法

平行区块链之共识篇:PBFT算法

平行区块链之共识篇:Paxos机制

平行区块链之共识篇:Casper共识协议

平行区块链之共识篇:PoW

平行智能助力中国区块链“直道超车”

平行区块链:概念、技术与应用(附PPT)

平行区块链Parallel Blockchain

注:本文由中国科学院自动化研究所助理研究员倪晓春整理。

扫描上方二维码,关注公众号“平行区块链”,获取更多精彩内容!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存