首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

让上帝掷骰子-对共识机制的浅层分析

在任何一个组织或社区中,共识至关重要。只有有个共识,才有集体,才可以同行,因此才能带来价值。区块链的创造性在于通过算法、代码实现分钟级,甚至秒级的共识达成,从而极大地提升了效率,实现对传统行业的改造。

目前在各种项目中使用的共识机制花样繁多,包括 POW,POS,DPOS,xBFT(各种拜占庭容错协议),VRF+X, POR, POST, POP, Kafka 等等不一而足,让人眼花缭乱。对于初学者而言,往往无处着手,本文通过浅层分析,希望拨开云雾,见得真章。

基础假设:大多数人目标一致,但坏分子善于隐藏

在一个现实的,非理想化的世界,区块链公链基于这样一个假设:在一个自组织的社区中,多数人(超过一半或2/3)目标一致,为人诚实,懂得趋利避害,但无利不起早;同时,可能存在一部分不诚实,或者是浑水摸鱼,甚至蓄意破坏的分子。这些坏分子可能是任何人,其行为只有通过事后验证才能发现。更糟糕的是,任何人在利益面前都可能禁不住诱惑,由好变坏。

我们可以看到,这是一个完全合理的假设,其中没有主义,没有理想,但反映人性。

在继续讨论之前,还有一个定义要说明一下,那就是交易,在一个区块链的系统中,任何行为都被称为交易,交易的实质就是执行一个事先约定好的规则,并因此带来状态的改变(包括价值的转移)。注意,这里的交易并不只是代表数字货币的转移,其他行为也算(这是智能合约带来的好处),但从本质上来讲,交易总会带来价值的转移,因为任何事物都包含价值。

好了,问题来了:既然任何人都可能是捣乱分子,那么就可能有人构造虚假交易,或不承认已经发生的交易,从中渔利;或破坏系统,达到其他目的。既然如此,那么由谁来记录交易就十分重要。

解决之道:让上帝来掷骰子

既然不能信任任何人,那谁愿意又有谁有权利来记录交易呢?如何保证系统的可靠运行呢?解决办法是:

利诱:给记录交易者有吸引力的费用 (矿工挖矿)

验证:无论交易者是谁,其交易记录必须通过验证,验证人数足够多或随机分散,多或分散到不能被坏分子腐化的程度

随机:让上帝掷骰子,没有人事先知道谁会是记账者

我们讲的共识机制,更多地集中在如何随机选择记账者上面,有一些协议也会涉及到选择验证者。注意,这里说的是让上帝来掷骰子,上帝不是任何一个人,不是任何一个系统中的参与者,没有人有能力影响上帝,因此上帝的选择是没有人事先知道的。

那么,当一个破坏分子希望从系统中获利,他就必须首先腐化记账者或自己称为记账者,由于其不知道谁会成为记账者,这个成本会非常高;其次,他需要腐化或控制验证者,这个成本也会很高,因为他需要腐化或控制超过一半的人。

单纯的POW 和 “聪明”的POS

上帝如何公平地掷骰子呢?比较流行的有两种办法,一种叫POW(Proof of Power,工作量证明),另一种叫POS(Proof of Stake,权益证明)。

POW: 人人可以打工挣钱

毫不客气地说,POW仍然是现在看起来最公平,最安全的一种共识机制。无论你是否已经持有币(或通证),只要愿意参与记账,就有机会获得收益。与出身无关,与资产无关。

以比特币为例,只要愿意参与记账,你就可以加入算力至整个网络,那么你的算力除以全网总算力就是你获得记账权的概率。至于那一笔账由你来记,只有上帝知道。长远来看,这就是一个按劳分配,多劳多得。

但是,POW是根据算力竞争来获取记账权,其最受诟病的也是这一点。因为无论有没有记账,在争夺记账权的过程中,都会消耗大量的算力,当竞争者越来越多,消耗的算力也越来越大。看起来是一种资源的浪费。因为看起来一个人记账其他人验证就可以了,但大量的电力根本就不是花在记账和验证上,而是竞争记账权上面。当然,从经济学上说,这里可以有另一个解释,在这个经济体系里,每一次记账挖出的比特币的价值基本上等于全网消耗的资源成本,这似乎是行得通的。

POS:只是减少能源消耗?背后还有小九九

在POW消耗大量算力的情况下,是不是有其他方式来竞争记账权,一样公平而同时成本低廉呢?POS就是基于此想法而提出来的。POS的原则是,持有代币(通证)越多,记账的机会越多,在这个前提下,竞争记账权的消耗与POW相比要少很多,当然其中仍然需要上帝掷骰子。但这个时候上帝的骰子不是每个人均等的,而是按照资产拥有量的不同而有所不同。

但是,不知大家注意没有,这里有一个问题,如果一个人想获得更大的挖矿收益,他最好是囤币,越多越好。作为一种代币(通证)来说,其最大的价值体现当然是用于流通,流通才产生价值。而囤币或锁币是制造稀缺,是抬高市价。一个代币体系如果要真正为人类带来改变,应该是更大范围内的使用。而锁币是于此相悖的。一个代币体系的机制设置本不应如此,本应该是尽量避免这种情况的。然而,这种情况现在已经变得非常普遍,通过锁币机制,通过囤积居奇来制造稀缺,从而提高币价,给持币人带来利益。只能说这是一个逐利的时代,有利的事情总是趋之若鹜的。

DPOS,Kafka:中心化和半中心化记账

上帝本是不受任何人差遣的,所谓上帝掷骰子实际上是一种算法设计。都是通过大量的算力,通过统计概率以及密码学的方法来获得不可预知的随机选举。这种消耗使得整个系统效率很低,很难应付大规模的应用。

有没有办法提高呢?办法之一就是不搞完全地去中心化,搞半中心化或中心化。EOS的DPOS机制就是半中心化的例子。其实质就是减少协调成本,不让低端节点接入记账拉低整个系统效率。21个超级节点在处理能力和运算能力上都有很高的要求,从而提升整个系统的效率,但是,我们可以看到,这里上帝就是这些超级节点组成的群,个人已经被排除在外。

还有更进一步的做法,往往在联盟链或私有链之中,比如Hyperledger Fabric采用Kafka集群来体现共识机制,这基本上就是中心化记账了。上帝已经被抛弃。

VRF, POR/POST:让上帝开挂

抛开中心化和半中心化的共识机制不谈,那么完全去中心化的共识机制到底有没有更好的、更节能的方法呢?关于这一点,业界一致在做积极的探索。

VRF+PBFT:让POW轻快起来

麻省理工学院教授、图灵奖得主 Silvio Micali教授及其同事一起提出了一种可以让POW轻快起来的办法。这个办法就是“Scaling Byzantine Agreements for Cryptocurrencies” (用于加密货币的可扩展的拜占庭协议)。

我们知道比特币的POW共识机制是让每一个人都同等地参与运算,谁找到一个满足条件的随机数谁就夺得记账权。而这个随机数是只能猜的,完全没有规律可言。相当于是上帝安排了。那么当网络中有太多的人参与的时候,而只有一个幸运儿,其他人的计算就是陪衬。算力被“浪费”掉了。那一个自然而然的想法就是,能不能每一轮都只让一部分人加入竞争,这样没有加入竞争的人就不用算了。Silvio Micali说,这是可以的,而且可以是公平的。办法就是,让上帝掷两次骰子。

1. 每一轮都通过算法来随机选取出参与竞争的记账者 (要上帝掷骰子决定)

2. 只有被选出竞争者才可以通过竞猜随机数来争夺记账权(上帝还要掷一次骰子)

这其中的关键是什么?就是每一步都要公平,都是在目前的认知水平上完全随机的,只有上帝知道。其中的第一步就用到了可验证的随机函数。Silvio Micali教授创建了 Algorand项目,近日募得约4.5亿(人民币)资金。对一个不发币的项目,引起如此的重视。其技术实力和影响力可见一斑。

Filecoin 的 POR/POST:解决POS的不足

近日,V神提到与IPFS网络结合来解决POS记账的问题。这是一个很大的进步。前面我们提到POS的一个副作用就是认为制造稀缺,路子走得有点歪。但IPFS之上的激励层,采用的是与POS相似的共识算法,称为POR(Proof of Replication:复制证明)和 POST(Proof of Space&Time:时空证明。也就是说,矿工的记账权与矿工提供的用于服务的存储空间是直接挂钩的,是成正比的。

这才是真正的POS(Proof of Service/Storage:服务证明,而不是 Proof of Stake:权益证明)。Proof of Service 和 Proof of Stake最大的区别在哪里?前者是劳动和付出证明,而后者是资产证明。也就是说,前者是付出即有所得,而后者是资本家收取利息。两者都能大大降低资源的消耗,对于一个现代文明而言,我们当然希望选择前者。

共识机制是去中心化系统最关键的环节,希望通过业界的共同努力,能有更高效、更节能、更安全的算法推出,得到验证和被采用。当共识算法的效率得到解决,去中心化的平台和应用必将发生翻天覆地的变化,得到普及。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181105G0XPLO00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券