BFT:LibraBFT 算法的美妙之处

文章标题:《LibraBFT算法简述》文章来源:知乎专栏作者:任之劼

首先,不熟悉BFT的人可以看看我之前的三篇文章:

《区块链时代的拜占庭将军们》《区块链时代的拜占庭将军们》《区块链时代的拜占庭将军——区块链共识算法的发展趋势》

其实我是在发完第三篇之后就看到了Hotstuff,当时非常犹豫要不要把这个算法加进共识算法的发展趋势里面,后来放弃了,因为我觉得新算法层出不穷是加不完的,当然,我现在有点后悔这个决定——要不然现在就可以拿出来吹一吹了。另外一点,也是好巧不巧的,用BLS来降低BFT的消息复杂度这个事,正好是我扩容那一系列下一篇的内容。不过那些内容在这里我准备简述一下,然后细节可以继续关注我的专栏。

HotstuffBFT

Hotstuff这篇论文我记得是年初的时候发在arxiv上的,一作是一位康奈尔的中国博士,然后论文会正式发表在今年的PODC上。不过,在正式发表之前,就已经被LibraBFT用了而大火了一把。

这篇我们不具体说Hotstuff的细节,而是更说一些Hotstuff的思路和贡献。当然,我觉得对于许多区块链的从业者而言,具体的细节可能并没有这些来的有趣,同时,直接看论文的时候,其实不如这样的思路来的清晰。

大网络中的BFT

龙白滔:美元力量通过Libra网络形成世界货币桥:2021年2月25日晚上,火币集团旗下火币研习社的“火币尖峰对话”栏目经济学人系列,以“数字货币如何开启世界经济新格局?”为主题在线上举行。火币研习社负责人程智鹏与中国国际商会区块链委员会执行秘书长龙白滔展开对话。

对于Libra龙白滔表示,Libra的设计初衷是要做全球化的私人数字美元,所谓跨主权货币并非其真实目标,美元实际上已经在发挥全球超主权货币的作用,所以另外的“超主权货币”从来都是一个伪命题。Libra目前面临最大阻力来自于G7内除美国之外国家的合规要求。Libra代表了美元力量,后者希望Libra成为全球私人数字货币的标准,并且Libra网络成为“世界货币桥”,即各国央行直接在Libra网络发行各自的CBDC并进行互操作,货币桥还支持多种CBDC与私人数字法币、传统支付基础设施之间的互操作。其它G7国家都没有办法阻挡它上线,但为减小其对自身伤害因此对它提出了严格的合规要求,这就是金融稳定理事会2020年形成的《全球稳定币监管政策建议》。[2021/2/27 17:58:37]

这个其实不算是Hotstuff的贡献,而是其实就像我在BFT第一篇就说的,是区块链为BFT算法这个问题带来的一个新的场景和挑战。而这其中的第一个挑战,就是把O(n^2)的消息复杂度降到O(n)。但是,本身这件事并不是Hotstuff的创新,因为基本上所有目前的BFT都有了O(n)的消息复杂度。

声音 | 中国宏观经济学会秘书长:颠覆既有金融秩序,Libra等做不到:中国宏观经济学会秘书长王建刊文“颠覆既有金融秩序,Libra等做不到”。文章表示,向数字经济过渡是否会产生新的金融不安全因素,是必须面对的问题,有三方面情况值得关注。

第一个是民间数字货币是否会严重扰乱现存的金融秩序?未来有可能替代主权信用货币的,绝不会是比特币这类加密货币。Libra等也做不到。至少从目前看,能够颠覆主权信用货币的民间数字货币还没有出现。第二个是央行数字货币——CBDC能否结束主权信用货币产生的金融风险?如果主权信用货币如美元、欧元和日元在新金融危机中崩溃,即使出现了CBDC,也会与主权信用货币是一个命运。第三个是必须考虑抗量子密码的问题。目前的所有加密方法在量子算力面前就如同废纸。因此,如果我们没有中国自己的量子算力,以及研制出可以防御被量子算力破解的密码,就会使中国的金融体系不安全。(第一财经)[2020/1/22]

Hotstuff达到O(n)消息复杂度的方法其实已经是一个比较经典的方法了,就是采用聚合签名,然后假定leader是诚实的让leader去收集签名。采用聚合签名的方法其实从Byzcoin就有了,然后其实很多共识算法,不仅限于BFT算法,例如Dfinity,也在采用这类方法。这个方法我在后面的一篇扩容的部分会详细写到,在这里就不赘述了。

BFT与链的结合

声音 | 中国社科院李扬:Libra会对人民币国际化形成强大的障碍:据微信公众号“中国外汇”8月1日消息,《中国外汇》2019年第15期刊发中国社科院国家金融与发展实验室理事长李扬的文章《必须重视Libra的挑战》,文章表示,在现行的国际秩序下,在现有的技术水平上,Libra作为基于一篮子货币的合成货币单位,与 IMF特别提款权一样,属于超主权货币。Libra价格由这一篮子既有主权货币确定,Libra没有货币创造功能便成定论。深一步看,Libra的发行100%基于法币储备池,因而也不可能产生铸币税。这种“挂钩”安排,也进一步使基于Libra不可能生成真正意义的货币政策。综合以上特点,笔者倾向于认为,Libra所推动的远不是货币非国家化的过程。基于Libra 的存贷款活动不会创造新的Libra。首先,Token在区块链不同地址之间转移过程中总量不变,Libra 也不例外;其次,扩大 Libra 发行的唯一办法是增加法币储备,这就杜绝了它可以倍数创造的可能。基于一篮子国际储备货币,Libra先天地就有跨境支付之便利,这对于我国的支付行业发展,尤其是境外拓展,是一个直接挑战。倘若我们进一步推行“一带一路”倡议,特别是要通过它来推行人民币国际化,Libra显然就形成了强大的障碍。[2019/8/2]

传统BFT达成共识的方法是两轮共识,其中第一轮定序,第二轮commit。很多将BFT用于区块链的项目仍旧采取「先做两轮通信,然后达成共识,最后上链」的模式,而Hotstuff采用的是「先上链,在区块中加入聚合签名,于是,在n个区块之后就可以视为通过了n轮的通信达成共识」。

声音 | 肖磊:从马库斯的证词看 Libra打造世界货币是唯一方向:肖磊昨日在微信公众号发文《人民币缺席libra货币篮子,美国的目的达到了》,文章表示,美国所谓的监管压力,可能不仅不会让libra流产,更大的可能是让libra具有了持续传递Libra功能细节,以及塑造品牌优势的能力。同时达到了饥渴营销的目的,用各种方式延迟libra的发布反而可能是一种策略。如果你从马库斯的证词去看,Libra不仅没有因为各方的争论,以及最近一段时间以来各国监管机构的施压,而改变产品结构或目标,反而更加毫不掩饰的明确了推出新的世界货币这一目的。从马库斯的证词看,打造世界货币是唯一方向。也就是说,libra没有去迎合监管,把libra变成一种权益资产,或类似于很多数字货币所谓的软件的使用权限和激励机制(比如EOS或以太坊等),更不是一种内部积分系统,Libra就是要做世界货币,要做支付工具。[2019/7/17]

于是,其实根本就不需要再去区分所谓prepare,commit这两轮通信的区别了,只需要简单地把每一轮节点的行为定义成「leader负责出块和收集签名」,然后「其他节点负责对leader出的块进行签名」,然后,只要收集到了2f1个签名,leader就可以出一个块,然后后面有n个块就相当于达成了共识。

这点的好处在于,O(n)的通信复杂度可以让诚实节点知道「我知道消息m将成为共识」,但是必须要O(n^2)的通信才能让每个诚实节点都确信「我还知道所有诚实节点也知道消息m是共识」,而通过leader收集签名并出块这种方法,当所有人看到区块b的时候,诚实节点会知道「我知道b是共识」,而在看到b后一块b'的时候,诚实节点等于知道了「所有签名的人也都知道了b是共识」。于是,每次出块的时候都只需要O(n)的消息复杂度,但是,在一个诚实leader和聚合签名的帮助下,通过两轮的O(n)消息复杂度,我们达到了之前O(n^2)的效果。

动态 | 挪威城市Liberstad将发行自己的加密货币:据BTCMANAGER消息,近日,挪威城市Liberstad宣布将使用一种名为“城市货币(City Coin)”的加密货币作为其“官方货币”,以鼓励居民提高效率和透明度。[2019/2/16]

并且,这个事情和b'的共识的第一轮是同步进行的。换句话说,就是把每一轮BFT的过程也链起来之后,还把通信复杂度减少了一半。这一点,虽然之前也有类似的想法,但是我个人觉得Hotstuff是第一个把这个思路确切地落在算法里的,这点我觉得非常有趣,同时,也是未来的一个方向。

其实这个方法是从两个方向逐渐靠拢的——第一是从BFT的方向,大家逐渐意识到其实链式结构可以省掉BFT中的很多事情,例如其实我们不需要定序,而且对于后面一个区块达成共识实际上就相当于对于前面的区块进行了共识,而很多BFT算法,例如:avalanche都开始注意到了这个事;而从区块链共识算法,尤其是追求finality的方向来看,人们发现其实一个区块后面跟上2f1个节点的出块,就相当于达成了BFT,而如果通过多个人对于这些区块签名可以加速这个过程,像这一点,也在例如Polkadots这类的算法中有所体现。而Hotstuff可以说是这两种思路到了这个阶段最简洁的融合。

BFT的快速响应

大网络BFT算法在实际应用中最复杂的问题实际上是viewchange,这点我听不止一个采用PBFT算法的人说过了。这是因为实际上在PBFT以及所有传统BFT其实都是基于传统的拜占庭将军问题的,也就是说,我们会先假设leader是诚实的,然后以他为主导达成共识。

于是,viewchange是个不得已的事情,需要所有的诚实节点先timeout,然后对于viewchange这件事达成共识,然后,他们把这个共识告诉新的leader,新的leader还要把这个消息广播出去宣布viewchange,于是,这个viewchange的cost是O(n^3)。

这其中有两个问题:一个是viewchange的消息复杂度,一个是viewchange必须要等到诚实节点对于viewchange达成共识之后才会发生。

Hotstuff的一个非常有趣的新意在于把传统BFT的两轮共识变成了三轮,然后借此把viewchange的cost变成了O(n)。这个可以这么理解:传统的viewchange是O(n^2)消息复杂度,也就是说,所有的诚实节点在viewchange之前会确认所有的诚实节点确实都进行到下一个view,而在Hotstuff中,viewchange不需要等「我知道其他人也知道viewchange了」这件事就可以进行,于是,消息复杂度就降到了O(n),也就是说,只要诚实节点的内置timeout到了,那么就可以发viewchange给新的leader开始viewchange。

为什么需要把两轮变成三轮呢?因为之前BFT链式结构的简化中,严格来说这两个通信复杂度为O(n)的区块和PBFTO(n^2)消息复杂度的prepare和commit还是有区别的——当有两个区块连起来的时候,两边是相当的,但是其实每一个区块的消息复杂度都只有O(n),并不说明所有诚实节点都知道「所有诚实节点都会达成共识」。

而同样,viewchange的消息复杂度也只有O(n),于是如果一条消息刚有第一个区块的时候viewchange了,那么诚实节点会对于第一个区块是否达成了共识产生不一致,因为prepare和viewchange看起来都很有道理。

而把两轮变成三轮之后我们就解决了这个问题。因为我们可以规定任何两轮之后的东西才是共识,而如果没有到两轮就不算——对于prepare和viewchange都是如此。

于是,如果viewchange发生在第一轮之后,那么我们不认为之前prepare的是正确的,而viewchange也同理。相反,如果在第二轮之后发生viewchange,那么由于已经经过了两轮,所以这条消息已经经过了定序,即便在viewchange之后也会最终达成共识。

所以总体来说,Hotstuff的核心思路如下:

采用聚合签名的结构把每一轮的消息复杂度变成O(n);

用链式结构把O(n^2)的共识变成了两轮O(n)消息复杂度的区块提交;

在这种结构下,把viewchange的消息复杂度降到O(n),然后为了防止viewchange造成的不一致,把两轮区块提交变成了三轮;

整体下来,虽然前两条也很有趣,但是最核心的优点是viewchange变得更容易了,无论是时长,消息复杂度,还是对于下一任leader的工作压力。虽然代价是需要多一轮通信,但是这样的延迟,无论是对于世纪中viewchange的可能延迟,还是对于习惯了区块链共识算法延迟的我们而言,其实都不值一提。

LibraBFT

LibraBFT基本上就是Hotstuff,只不过在这之上做了两点改动。

其中一点是将Hotstuff用于区块链时候加上了现实考量的机制,例如引入了epoch的概念,允许共识节点替换,同时加上激励机制和惩罚机制…

另外一点是同步性上的改进:

Hotstuff是在partialsynchrony网络中生效的,这已经算是一个非常强的异步假设了,它和PBFT一样,但是现在很多的区块链算法都已经在用同步假设了。

而Hotstuff里的轮其实概念更像是PBFT的几个步骤,也就是说实际上这个轮不是一个时间概念,而是和PBFT一样,是上一个步骤结束之后自动进入的。换句话说,一个区块出现有可能很快,但也有可能在ViewChange的时候要等很久。于是呢,LibraBFT使用了Pacemaker机制,让每一轮的时间尽量有一个上限。

以上就是关于LibraBFT的简介了。在我看来,Hotstuff是一个非常有趣,甚至有可能是最近对于未来区块链的共识算法最有启发性的一个算法。而Libra采用这个算法其实也很有道理,因为Hotstuff不仅有现在大部分BFT的高输出,而且解决了大部分通行BFT的viewchange的问题,而在实践中这却是是非常影响BFT算法在区块链环境中使用的问题。

当然,对于Libra本身,我的意见都在这个答案里了:《如何评价Facebook发布的数字货币Libra?》

反正,对于Facebook而言,这是个进可威胁金融业,统治区块链领域,甚至和主流货币扳手腕;退可造噱头,蹭热点,涨股价,最后搞个Facebook版支付宝或者微信支付的项目,甚至,即便它被相关机构叫停,它还是能洗白之前隐私盗窃犯的形象,摇身一变变成强权和守旧的挑战者,对于Facebook而言,它几乎一定会成功,只不过是程度问题。

但是,无论如何,它都会对于区块链领域造成深远的影响,不是因为它做的事,不是因为它的技术,不是因为它可能的成就,而是因为它是Facebook。

因此,在以上这个意见里我没有提到的是,我觉得无论成功与否,它对于区块链整个行业造成的影响,都未必是正面的——如果它取得了巨大的成功了,以现在的路线,我们可以看到的是区块链对于互联网巨头挑战的失败,以及区块链领域再次被大鳄占领;如果它没有取得巨大的成功而只是一个成功的噱头,我们会看到其他的大鳄们站台的无数跟风的噱头出现,再割完一圈韭菜后翩翩离场,留下一个不再有任何生机的区块链行业。

来源链接:zhuanlan.zhihu.com

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金星链

[0:15ms0-0:513ms