共识算法

所谓共识算法,就是每个节点对于本区块的正确性达成共识。

共识是一切交易的基础,达成共识越分散(参与度越高),其效率就越低,但安全性越高,因此也越稳定;相反,达成共识越集中(参与度越低),效率越高,也越容易出现独裁和腐败现象,安全性越低。

以主流 PoW(Proof of Work) 为例,根据区块头与一个随机数进行哈希运算,可简单理解为必须通过大量数学计算之后,才能将区块挂入区块链中。

为什么不能让矿工直接把区块挂上去呢?

在区块链中,最长的链被认为是正确的链,所有矿工选择最长的链来挖,才能确保链的唯一性。公有链作为一个完全开放的系统 —— 任何节点都可以来当矿工,其背后的设计哲学在于“作恶得到的好处小于付出的代价,所以理性节点不会做恶”。传奇跑者普雷方丹也有一句名言:“你可以打败我,但你必须付出足够的努力与汗水。”如果矿工可以直接把区块挂到链上,那么攻击者就可以分叉,然后疯狂的把这条链加长,使人误以为这才是正确的区块链。

在 PoW 中,攻击者必须进行工作量证明才能把分叉链加长,必须付出比全网更大的算力(51% 以上)才能跑的最快,同一时间形成更多区块,让人误以为这是最长的链,从而完成攻击,但这显然是不可能的。这个系统的设计逻辑没有问题,但在 PoW 的过程中,需要消耗大量无谓的算力与能源。

首先,PoW 所需的算力不断增大,比特币为了保证每 10 分钟出一个块,同时在 2140 年产生 2100 万枚全部比特币,就必须每 2016 个块之后进行难度升级。所以挖矿设备也不断的进行更新换代才能满足需求。从 CPU 挖矿,到 GPU,到 FPGA 挖矿等等,耗电量也与日俱增。

其次,主链上同一时间只会有一个区块上链,这个由计算出来的矿工获得,但是其他参与计算的矿工虽然消耗了大量算力,却没有任何收益,浪费了大量计算资源。

最重要的一点,这些计算并不是有实际意义的计算,换句话说:以比特币为代表的使用 PoW 共识的公有链,本质上只能起到账本的作用,而不具备实际的功能,所以其所做的计算也都是没有实际作用的。

所以说,减少能源的消耗,同时完成有意义的计算,是共识机制设计的关键所在。但是这两点同时实现极为困难。第一,如果消耗的资源减少,安全性就越低,因为攻击者越容易将分叉链让大家误以为是主链;第二,有意义的计算如何有规律的与区块链系统连接起来,比如如果做机器学习计算,稳定的 Data Set 从何而来,计算的奖励如何分配,都是需要精心设计的地方。在这样的一个背景下,“激进”的 PoS 逐渐获得了更多的认可,几乎完全不需要进行计算,从而大大降低了能耗。

PoS (Proof of Stake):权益证明。如果把 PoW 比作意大利国家队稳健的防守体系,那么 PoS 则拥有巴西队野心,以降低防守力,来增加攻击性。

PoS 完全不需要进行计算,而是需要证明者对某些数量的权益展示所有权。证明节点对区块结果进行押注,如果错误则丧失押注,如果正确则赢得奖励。

然而,无论是在工业界还是学术界,PoS 都是一把双刃剑,在提升性能的同时,很难保证其安全性。最著名的两个问题是:nothing at stake 以及 long range attack (长距离攻击)。以太坊在 PoS 的过程中也遇到了诸多困难。

Nothing at stake:如果攻击者 fork 当前的链,挖矿节点的保证金已经押在了两条链上,他不需要去判断哪条是正确的链,而是都支持,从而导致攻击者得逞,而无论攻击者是否得逞,节点选择全部挖的策略也可以保障自己的收益,所以只要理性节点不是“token 大户”,都会去支持攻击者。

这个问题已经有人提出一些解决方案,例如 vitalik 提出的“错误惩罚”,如果一个节点在发生分叉时选择都押注,如果押注超过一条链或者押注了错误的链会被惩罚。

Long range attack则是更为棘手的问题:可以理解为 PoS 中的女巫攻击。攻击者不是去 fork 现有的链,而是回到初始阶段的链,造一条更长的新的链,让网络误以为是主链。因为 PoS 共识中节点的增长速度没有限定(比特币 PoW 有限定,10 分钟出一个块),攻击者可以用很短的时间造一条更长的链。一个区块链系统,一开始不会有很多矿工,前期的块都是少数矿工挖的,如果这些矿工互相串通好,联合起来回到早起阶段,因为那个阶段只有他们可以挖接下来的块,他们可以很容易联合发起此攻击。

目前 long range attack 没有很好的解决方案,一些客户端(包括 casper)试图通过限定更改区块的长度来解决这个问题,比如 NXT 的处理方式为超过 720 个区块的不能被更改。但这只是降低了问题发生的概率,或者说转化了问题,会导致“weak subjectivity”。

事实上,已经有很多 PoS 算法试图解决上述问题:

Ouroboros:一个可证明安全的 PoS 区块链协议,Ouroboros 加入了权益证明算法,定义了节点对账本状态达到共识的方法,它是第一个宣称进行严格的安全分析的 PoS 类型的区块链协议。

Ouroboros 在一定条件下的实践验证中,解决了各种攻击,包括双花攻击、交易拒绝攻击、51% 攻击、无利害关系、去同步攻击以及其他攻击。某些前提下,它被科学证明安全的。它在亚马逊云中运行了基准测试,这些测试展现了 Ouroboros 的权益证明区块链协议,在性能方面的优势。

不过经常回头验证的模式也有问题。多次回头,一方面影响 TPS,一方面会增加更多的通信,另一方面还很难验证回头 stake 的是否都为正确。

DPoS,相比于普通的 PoS,多了一个选举机制,类似议会制度,不仅币数很关键,声望更加关键,从而实现速度与安全性的提高,DPoS 希望通过投票来筛选信任节点,解决 PoS 的安全隐患。

类似的,还有 PoP,PoC:

PoP (Proof of Participation),基于账户参与度的算法,PoP 将 PoI 和 DPoS 的思想结合,既能确保对设备的公平性,又拥有社区的共识,同时减少了算力浪费。让记账这件事情更经济效率 , 从而支撑起更多大规模的协作体系。

PoC (Proof of Credit),信用共识机制 , “PoC”继承了“PoW”通过计算来实现账本安全的特性,但同时提出的非常有创新的一点“利用用户的信用值”作为挖矿的准入门槛,这样就会积累有效的节点为网络加密计算。同样“PoC”也相对“PoW”在社区发展中公平了很多,在参与挖矿的时候,是根据自己的信用值来判断是不是有共识(挖矿)资格。在达到共识的信用值后,为了防止节点的违规行为还必须提交一定的保证金额,才能参与共识,共识网络中加入了简单的智能合约,作为共识的契约来约束每个节点参与共识,如果有违规,会付出很大的惩罚。这也保证了节点会正常参与共识,用来提高网络的安全性。

但目前,没有一种 PoS 是被证明和 PoW 一样安全的,在设计上尽可能的通过制定出块规则与奖励惩罚机制来解决 nothing at stake 等问题,但本质还是不安全的。比较可行的方法是进行一个折中,PoW+PoS 混合共识机制。

例如第一个使用 PoS 的项目:peercoin。peercoin 是第一个 PoS 算法,于 2012 年提出,PPCoin 的最大创新是其采矿方式混合了 PoW+PoS 方式,而 PoW 部分加入币龄的概念,越早买优势越大,相比与纯 PoS 或者纯 PoW,达到节能和安全的平衡。

类似的还有 CFFG,PoW+PoS 混合模型,由 Vitalik Buterin 带领研究 Casper the Friendly Finality Gadget(CFFG),需要进行两周期投票,并且需要质押 TOKEN。第一次是 PoW,超过 2/3 即可验证成功,第二次是 PoS,超过 2/3 即可验证成功,然后确认区块,验证者即可获得收益。验证者是被激励着集合在权威链上的,因为如果他们持续在不同的链上进行投票将会受到惩罚。验证者不仅仅会为双重投票而受罚,也要为在不正确的链上进行投票而受到惩罚。

Tendermin,2014 年,由 Jae Kwon 带领研究,BFT 与 PoS 混合机制,假设少于 1/3 的验证者是拜占庭,Tendermint 保证安全永远不会被破坏——也就是,验证者(2/3 以上)永远不会在同一个高度提交冲突的区块。因此,基于 Temdermint 的区块链永远不会分叉。Tendermint 的设计决策偏向于安全性和不可改变性。但这样的混合共识机制,虽然降低了能耗,但依然没有本质上解决 PoW“浪费不必要能耗”的问题。为了设计可持续发展的共识算法,需要同时做到以下两点:找到一个低能耗、有实际效用的算法将此实际效用作为 PoS 的防御机制

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,924评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,902评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,716评论 0 239
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,783评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,166评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,510评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,784评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,476评论 0 196
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,196评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,459评论 2 243
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,978评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,321评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,964评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,046评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,803评论 0 193
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,530评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,420评论 2 265

推荐阅读更多精彩内容

  • 本文由币乎社区(bihu.com)内容支持计划赞助。 权益证明的漫漫长路 权益证明的定义可以查看理解权益证明。 1...
    Lilymoana阅读 6,431评论 0 22
  • 他们都把别离妆成一出愁绪的戏 先追忆又凝目无语 泪眼凄迷 忍不住痛失声,眼哭红 咱们可别这样 我们的镜头里轻轻挥手...
    BORNALONE阅读 151评论 0 0
  • 金指尖阅读 449评论 0 4
  • 孤城残壁,战火在燎原,烧红了天际。你站在那里,手中紧握断剑,身后是残旗硝烟漫天,寒鸦艳血,世界只剩你孤傲地立在天地...
    雪初阅读 557评论 2 2