【前言】
原本本周准备写一篇关于跨链项目的评测的,结果在拜读了诸多公链项目的白皮书后越发感觉得重新屡一下共识机制(consensus mechanisms)这个最基础而又最容易忽视的问题。加之本周各国基本都出台了对区块链的严厉监管,也让我思考:有没有一个虚拟数字货币既能满足去中心化,又能符合政府的可控的需求。
【共识机制综合介绍】
1.POW:Proof of Work,工作证明。
多劳多得模式——体力工作(分散挖矿)
根据工作证明来执行货币的分配。 算力越高、挖矿时间越长,获得的货币就越多。
主要优点: 算法简单,容易实现, 安全有严格的数学论证。
主要缺点:
1.耗电;
2.共识达成的周期较长,不适合商业应用;
3.一家独大,其他公链很难竞争;
典型代表: BTC家族以及早期货币代表诸如LTC,当前的ETH也算。
中国政府之所以驱逐矿产,主要问题也是从现有价值体系考量:矿场耗能但确创造不出实体价值,这些电目前看来就是白白浪费掉了。
而在区块链的世界,大家的信仰是神话般的“去中心化”,随着挖矿技术的改进,算力也出现集中化趋势,前5大矿池占据了算力的近80%,这直接能够威胁到去中心化的信仰。
2. POS:Proof of Stake,股权证明。
存钱拿利息模式——脑力工作(全民投资持股)
最原始的PoS机理就是用股权代替PoW中的挖矿算力,来模拟比特币的挖矿过程。 如果说POW主要比拼算力,算力越大,挖到一个块的概率越大;POS则是比拼余额,就是谁手里的币越多,挖到一个块的概率越大。
主要优点: 不需要挖矿,同时缩短了共识达成的时间。
主要缺点: 安全尚未有严格的数学论证,有通胀
典型代表: NXT和QTUM (很多文章将PPC(Peercoin点点币)和BLK(BlackCoin黑币)也作为典型表达,笔者不是太赞同。从时间上讲,的确PPC是开创了先河,但PPC和BLK都是POW+POS模式,通过POS降低挖矿难度实现缩短工时时间,不能算纯POS代表)
针对纯POS模式,这个过程没有引入外部资源,而是仅仅依靠自身的币种股份来维护网络安全,因此其不需要消耗大量能源来进行计算;而且由于其没有引入外部的资源,因此不会担心外部攻击,例如外界的算力攻击。
看起来POS是很完美的,但是它存在几个问题:
1.Nothing-at-Stake无利害关系攻击。
假设系统中出现了两个分支链,那么对于持有币的”挖矿者“来讲,最佳的操作策略就是同时在两个分支上进行“挖矿”,这样,无论哪个分支胜出,对币种持有者来讲,都会获得本属于他的利益,即不会有利益损失。而且由于不需要算力消耗,因此POS中在两个分支上挖矿是可行的。
这导致的问题是,只要系统存在分叉,“矿工们”都会同时在这几个分支上挖矿;因此在某个情况下,发起攻击的分叉链是极有可能成功的,因为所有人也都在这个分叉链上达成了共识;而且甚至不用持有51%的币量,就可以成功发起分叉攻击。
2.重写历史攻击:即攻击者可以通过购买原始持有币种的账户来从头发起攻击,重新分叉一个区块链。因为原始的币种持有者可以将币转移至其它账户,因此他是可以在没有损失的情况下将原始账户出售给攻击者的。攻击者需要的就是有足够数量币的原始账户;当然了,这也只是概率问题,因为有可能原始账户持有者不会出售他们的账户,但是理论上确实存在这种攻击。
3.尽管POS中的“挖矿”不用消耗算力,运行成本很低,但是也存在如何激励POS矿工的问题。因为一般的POS系统是没有新币产生的,矿工只能赚取交易费,而且在交易费不高的情况下,对矿工的激励也是很有限的。当然了,也有很多POS币种解决这个问题的办法就是持续的再产生新币(每年利息)来激励挖矿者,这导致的问题就是通胀。假设1%利息(利息每个币都有自己的设定,如PPC是1%,CMC是1.5%,NVC和YAC是5%),相当于每年货币通货1%。按照相对概念,持币多的大户们才是一直保值,而小散们是相对于每年贬值。最终结局就是大户淘汰小户,也有导致中心化的风险。而且当货币总量达到上限之后,POS又如何激励矿工呢?
所以在这种情况下,很多币选择了POW+POS模式,依据POS机制通过降低POW出块的难度从而缩短了共识达成的时间,就连ETH也将采用这种模式,根据2018年1月2日Ethereum Team发布的第四季度总结,基于POS的项目Casper测试网络已经发布了(Q4 Roundup)。近期ETH的重心应该是完成POS模式的增加(development roadmap)。(中文版介绍可以移步Ethereum Casper 101 | 初识以太坊 Casper
3. DPOS:Delegated Proof of Stake,委任权益证明
董事会模式——高级脑力(大股东决策)
类似于董事会投票(人民代表大会制度),持币者投出一定数量的节点,代理他们进行验证和记账。
主要优点: 大幅缩小参与验证和记账节点的数量,进一步缩短了共识达成的时间 ,可以达到秒级的共识验证。
主要缺点: 安全尚未有严格的数学论证。
典型代表: BTS,EOS
除了走POW+POS混合模式外,也有些币走的是POS的改进路线,DPOS就是个典型代表。其他例子的思路和DPOS大同小异。
DPoS有一个内置的实时股权人投票系统,就像系统随时都在召开一个永不散场的股东大会,所有股东都在这里投票决定公司决策。投票权牢牢掌握在股东手里,而不是雇员。类似于去中心化公司(Decentralized Autonomous Company, DAC),由持股人选出的N位代表来生成N个区块,生成顺序随机(每生成N个区块后顺序被随机生成),每个代表在特定的时间段内生成一个区块,前后直接相关的代表会产生特殊连接,防止被攻击或前一区块的异常而直接拒绝,所有人基于最长的链达成共识。
成为代表:成为一名代表,你必须在网络上注册你的公钥,然后分配到一个32位的特有标识符。然后该标识符会被每笔交易数据的“头部”引用。
授权选票:每个钱包有一个参数设置窗口,在该窗口里用户可以选择一个或更多的代表,并将其分级。一经设定,用户所做的每笔交易将把选票从“输入代表”转移至“输出代表”。一般情况下,用户不会创建特别以投票为目的的交易,因为那将耗费他们一笔交易费。但在紧急情况下,某些用户可能觉得通过支付费用这一更积极的方式来改变他们的投票是值得的。
保持代表诚实:每个钱包将显示一个状态指示器,让用户知道他们的代表表现如何。如果他们错过了太多的区块,那么系统将会推荐用户去换一个新的代表。如果任何代表被发现签发了一个无效的区块,那么所有标准钱包将在每个钱包进行更多交易前要求选出一个新代表。
4.PBFT:Practical Byzantine Fault Tolerance,实用拜占庭容错算法。
封闭集群模式—— N ≥ 3F + 1 两两节点通信投票
这是一种基于消息传递的一致性算法,算法经过三个阶段 预准备(pre-prepare)、准备(prepare)和确认(commit)达成一致性,这些阶段可能因为失败而重复进行。
主要优点: 算法的可靠性有严格的数学证明,具备(n-1)/3容错性
主要缺点: 当有1/3或以上记账人停止工作后,系统将无法提供服务。
典型代表: NEO
其中C为发送请求端,0123为服务端,3为宕机的服务端,具体步骤如下:
1. Request:请求端C发送请求到任意一节点,这里是0
2. Pre-Prepare:服务端0收到C的请求后进行广播,扩散至123
3. Prepare:123,收到后记录并再次广播,1->023,2->013,3因为宕机无法广播
4. Commit:0123节点在Prepare阶段,若收到超过一定数量的相同请求,则进入Commit阶段,广播Commit请求
5.Reply:0123节点在Commit阶段,若收到超过一定数量的相同请求,则对C进行反馈
根据上述流程,在 N ≥ 3F + 1 的情況下一致性是可能解決,N为总计算机数,F为有问题的计算机总数。
PBFT需求节点数目提前确定并互相联通(封闭性)和O(N^2)的消息量(高性能开销),目前在公有链上的应用会显得吃力,NEO的应用也是结合数字身份技术,使得记账人是实名的个人或机构来实现。央行选择了PBFT算法,估计短时间内是联盟链的模式,同时看到量子计算机的发展趋势,以后也许算力突破限制,也可以有想象空间。
5.Ripple Consensus(瑞波共识机制)
中心化俱乐部
典型代表: XRP
Ripple共识算法,使一组节点能够基于特殊节点列表达成共识。初始特殊节点列表就像一个俱乐部,要接纳一个新成员,必须由51%的该俱乐部会员投票通过。共识遵循这核心成员的51%权力,外部人员则没有影响力。由于该俱乐部由“中心化”开始,它将一直是“中心化的”。
6.其他诸如PoI (Proof of Importance),PoD(Proof-of-Devotion)等本质都是POS的变种,就一带而过了。
7.特例IOTA,可以说这是一个没有共识机制的项目,采用Tangle(缠结)的DAG无环图结构(Directed Acyclic Graph)自我验证交易,而且还抗量子计算机,从ICO涨了3.5万倍也是能够理解了。
8.私有链中心化的共识就不讨论了。
【共识机制发展规律】
由POW发展到POS再到DPOS/RIPPLE/PBFT(这个应该算一直有),可以发现去中心化理念其实是从一个去中心化往多中心化的模式转变。有没有觉得这个过程和人类的进化过程也很相似,我们由原始人的分布式机制(去中心化)不断演变成集散式机制(多中心化)。水质清则无鱼,完全去中心化和完全中心化都是不现实的,最终都将是是多中心的模式,并形成多中心的相互抗衡和制约,不断降低人控因素。
【总结】
在对区块链(主要是基础链)项目进行评测时,理解上述共识机制是判断一个项目好坏最基础的技能,目前市面上热门的项目的核心竞争力之一都体现在共识机制上,它代表了项目去中心化的手段,大大影响到出块的速度,进而影响交易速度和手续费。
目前,并不能证明哪种共识机制是最好的,只能说有运行到目前效果还不错的,而且到目前未发生安全问题,未来仍需继续验证和改进。
【遐想】
既然发展的方向是走向一个多中心化平衡的过程,那么能让各国政府接受的状态会是怎样一个模式呢?
各国来扮演验证人共同维护同一个币?
那么共识机制在现有的基础上会发展成怎样一个组合呢?
【参考文献】
除去文中已有的参考文献链接,还有以下:
1.http://www.8btc.com/blockchain-tech-consensus-mechanism区块链核心技术演进之路-共识机制演进(1)
2.http://blog.csdn.net/imfly/article/details/52171339《Nodejs开发加密货币》之二十四:DPOS机制(分布式共识算法)
3.http://www.sohu.com/a/134694303_694835从理论到实践,三张图带你探索区块链的发展之路
4.https://www.jianshu.com/p/aafb53ca3318区块链的几大共识机制及优缺点
5.http://www.talkwithtrend.com/Article/160075从“比特币挖矿” 看区块链技术的共识机制
6.http://www.8btc.com/impossible-triangle-fallacy驳“不可能三角形”之谬论
7.https://www.zhihu.com/question/52254063如何通俗的理解IBM区块链技术HyperLedger/fabric中的共识算法PBFT(拜占庭容错)?
8.http://blog.csdn.net/jerry81333/article/details/74303194区块链共识算法 PBFT(拜占庭容错)、PAXOS、RAFT简述
9.https://www.zhihu.com/question/55794026请教技术大牛,pbft是不是区块链目前最优的共识机制?
10.http://blog.csdn.net/lsttoy/article/details/61624287[区块链]共识算法(POW,POS,DPOS,PBFT)介绍和心得
11.http://www.360doc.com/content/16/0503/20/29322182_555998433.shtml万字长文深入浅出讲述区块链技术细节和运行原理
12.http://blog.csdn.net/jQQ53016353/article/details/74170965数字货币深度解析区块链POS和POW的区别
13.http://www.8btc.com/baizhantingjiangjun拜占庭将军问题深入探讨
14.http://docs.neo.org/zh-cn/index.htmlNEO 白皮书(一种智能经济分布式网络)
15.https://yq.aliyun.com/articles/60400【区块链之技术进阶】掰一掰区块链共识机制与分布式一致性算法
16.http://8btc.com/article-2238-1.html什么是区块链共识?
17.https://www.zhihu.com/question/53385152区块链共识机制有哪些?
18.https://etherscan.io/stat/miner?range=7&blocktype=blocks
20.http://docs.bitshares.eu/bitshares/dpos.html#pooled-mining-as-delegated-proof-of-workDELEGATED PROOF OF STAKE
21.http://www.8btc.com/proof-stake-learned-love-weak-subjectivity股权证明(POS)的可行性:如何学会热爱弱主观性