1. 首页 > 自媒体

我们到底需要什么样的共识算法?什么才是安全的区块链共识算法?

“我们之所以需要区块链,是因为对于中心化系统最大的担忧不是作恶代价的大小,而恰恰是作恶成本无法估计、无法量化。作恶的回报并不限于系统内,还可以在系统外。即便是最透明的上市公司,我们也无法获知股东的所有收益来源,因此,也就无法量化他们能够通过作恶在系统外获得多少利益。

无论是POS还是POW,当区块链中「大节点」过于集中的时候,我们将面临和中心化系统一样的问题——我们无法量化系统的安全性,于是,只好把安全性寄托于对于节点的信任,而不是可量化的作恶成本上。”

这是任博士关于 POW vs POS 的第三篇,这也将是本系列的最后一篇文章。

本文作者:Maxdeath,任之劼博士,唯链区块链高级研究员,主要研究方向包括区块链共识算法、扩容、应用,曾在国际学术会议上发表多篇区块链论文。

“由于POW和POS(或者其他的什么算法)在不同属性上各有千秋,所以它们各自适用于不同的场景,于是他们会在现实中并存,不同的区块链可以用不同的算法。”

这似乎是现在更流行的看法,也是个更模棱两可和左右逢源的看法。但这并不是我的看法。

我的看法其实已经在上两篇文章里表达的很明确了,我认为——

在安全性面前,其他的特性都是末节。

同样的,我认为安全性上逊色的算法,就是差一些的算法。

于是,我们又回到了上次我们想要讨论、但还没有讨论的问题——

我们究竟需要什么样的共识算法。

其实,以上的论点放在2-3年前可能关注度会更高。在很多人看来,就算我写扩容、分片或者链下技术,都已经是属于前两年的、过时了的东西了。更何况是“POW”、“安全性”这种似乎从n年前公链项目爆炸的年代就在讨论、结果到了大部分公链都死了也没有结果,于是到现在双方都决定各退一步说:“两者互有优劣适用场景不同”的话题。

那么,我为什么还要写这个问题呢?为什么不去写一些更热门的话题,例如Defi,例如链上治理,例如Staking Economy,例如价值捕获,例如生态建设等等……

因为在我看来,这个问题并不过时,而且,从未如此重要过。

因为以上的所有问题,在我看来都是安全问题。

因为区块链本身,解决的就是安全问题。

“安全”是指这个系统能够可靠地按照我们的设想,做它该做的事

那么,什么是共识算法的安全性?

一方面,在之前的两篇中我们已经介绍了——“所有人都认为的安全”,并不是真正的安全性。同时,“在现实中没有被攻破”,也并不是安全性的保证。

那么,理论上的安全呢?有了论文,有了数学证明,总该够安全了吧。

其实也不尽然。

从理论上,我们可以从分布式系统的方法证明共识算法是拜占庭容错的,或者,可以从密码学的角度证明其中所有采用

密码学的机制都是安全的,我们还可以用Bitcoin backbone protocol里的模型证明某个算法适用于区块链共识,因为它拥有和比特币一样的特性,然而所有这些关于安全性的证明都是基于某些理论上的模型或者假设,并不代表它们在现实之中就一定是安全的。

例如,BFT里关于超过2/3诚实节点的假设,对于不同的算法,这个假设的成立与否是不一定的——如果你要求诚实节点安装某个客户端,这个客户端每十分钟验证1MB的交易,那么多数节点可能可以是诚实的;但如果这个算法要求诚实节点每秒钟验证1M的交易,那么很多带宽和计算能力达不到要求的节点显然是无法完成的,于是,在BFT的模型里,这些节点就会变成“不诚实”的。而这个时候,如果说每个节点能够收到相应的激励的话,他们又会变得诚实起来。于是,一个证明是拜占庭容错的算法,未必在现实中是安全的,而一个能容错1/3的算法,在现实中,也未必一定比容错1/5要更安全。

另一个例子就是,不考虑自私挖矿的话,比特币从理论上来讲是“安全的”,因为我们的假设是“恶意节点无法控制超过50%的算力”。但是我们之前已经说了,这个假设本身并不实际,首先获得50%算力的难度很低,其次在实际之中一些POW项目50%以上的算力就控制在一个或几个节点手中。

换句话说,实际上,即便在学术界,目前也没有一个确切的定义,或者说一个公认的,非常贴合实际的模型来描述现实中对于区块链系统“安全”的标准,于是,我们也无从证明,到底什么才是“安全”的共识算法。

一个能够证明的,安全的共识算法,只是说明了它在某些假设下和某些模型中的安全性。虽然这总比没有证明好,但是,在我们还在寻找一个能够更好地描述区块链的模型时,说这种算法就是我们在寻找的“安全”的共识算法,区块链系统用了他们就可以高枕无忧了,还为时过早。

那么,什么才是“安全”的区块链共识算法呢?

这里我说的安全并不是传统信息安全里面讲的安全性。

这里,“安全”是指这个系统能够可靠地按照我们的设想,做它该做的事。

这件事,在我看来,凌驾于其他一切属性之上,是区块链共识算法的首要责任。

因为,区块链的首要责任,也是安全。

这又是一个相当“非主流”的观点——我猜很多人会说:“区块链的首要责任不是去中心化吗?”

当然,我承认,去中心化很重要,去中心化是区块链最大的特点,是区块链与中心化系统最大的不同,如果没有了“去中心化”,那么区块链也就不能称之为区块链了。

但是,别忘了比特币诞生于整个密码朋克小组的初衷,我们需要去中心的原因,不还是因为我们不相信中心化系统的安全性和可靠性,也就是说,虽然一个中心,例如银行,例如政府,告诉我它会做一些事,告诉我们“这是数字货币,这里面的钱记在我的系统里是安全的,请放心”,但是,我们其实并不完全相信它会遵守我们的约定,而可靠地做这件事吗?

所有区块链领域的从业者,都应该记住一件事——

我们需要区块链,但其他人并不在乎,他们需要的是一个更好的系统——无论它是中心化的,还是去中心化的。

所以,我们需要去中心化,但它的目的是,我们需要通过提供一个去中心化的区块链,使得我们能够更好地量化它的安全性,而不需要依赖于对于某个中心的信任,最终,得到一个比中心化系统更安全的系统。

因此,如果天平的两边是去中心化和安全性——那么无论如何我都会选择安全;如果天平的两边是一个“更去中心化、但不那么安全的系统”和一个“不那么去中心化、但更安全的系统”,那么我无论如何都会选择后者。

但是,在目前的阶段,我们确实需要去探索性地尝试那些“不那么安全、但是更去中心化”的方法,但是请一定谨记,如果我们都往这个方向走,并且不回头地走得太远,那么最终被抛弃掉的,将不是一个系统而已,而是整个区块链技术。

因此,在我看来,安全是第一位的。

换言之,我们可以不在乎一个区块链是不是能够“有效地”做它该做的事,是不是能够“快速地”做它该做的事,是不是能够“足够去中心化地”做它该做的事,甚至,我们可以不在乎它是不是能够“节能地”做它该做的事,我们更不在乎它做事的方法是不是足够简洁,足够优雅,足够吸引所有人参加生态建设,或者是不是能够自行启动,自行进化,自我治理,自发形成一个健康的生态……

因为除了“可靠”这一点,其他的我们早就在中心化系统里实现过了。

没错,我们也许的确只知道如何在中心化的场景下实现以上的这些,而不知道如何在去中心化的情况下实现这些,而这点的确是目前学术界和工业界研究的重点,也是目前媒体和这个圈子聚光灯下的焦点。

然而,如果没有安全性,这一切都成了无源之水,无本之木。

因为我们无法回答的问题是——

即便我们能够做出一个去中心化的系统,即便我们找出了以上一切的去中心化实现方法,但是,如果实现这些所有功能的系统不可靠,安全性无法量化,甚至说,最终安全性还是主要取决于对于某个中心、某个创始人、某家公司、某些矿工的信任,那么我们究竟是为什么要放弃已然成熟的中心化方案,来使用区块链系统?

换句话说,我们之所以推崇区块链,投入这个领域之中,不就是因为我们认为一个中心化系统不够“可靠”,因此,我们希望用“算法”来代替“信任”,用“机器”来取代“人”吗?

更何况,正如我以上所说——其实,一切我们正在讨论的,归根结底仍旧是安全问题。因为无论是链下技术,链上治理,激励机制,生态建设,经济模型……所有的这些,只要在链上实现,就都会回归到区块链共识算法的安全问题——

如果共识算法不安全,凭什么相信节点会执行链上治理投票决定的决策?

如果共识算法不安全,凭什么认为节点会诚实地对于激励进行分配?

如果共识算法不安全,凭什么认为它天然就成了所谓价值互联网的基础设施?

如果共识算法不安全,凭什么可以将区块链当做一个可信第三方使用,在上面构建侧链、支链,运行Dapp,并且搭建一整个生态?

这也是我之所以认为这篇东西并不过时,而且,恰恰需要在此时出现的原因——

最近以来,关于共识算法问题的降温和公链的退潮,让资本和舆论都开始追逐新的话题和项目。于此同时,也带了了这种盲目乐观地将共识算法当做一个成熟的基础设施的幻觉,而完全忽略了一个事实——

我们最常用的,也是最司空见惯的被认为是绝对安全的POW,实际上远比我们认为的要不安全得多。以及,我们其实一直在讨论的POW vs. POS的问题,始终都没有一个结果。所有人都在憧憬区块链的未来,设想着怎么围绕区块链搭建生态,怎么利用区块链重塑经济,怎么通过区块链改变世界的时候,只有很少的人和很少的声音在关注究竟这个区块链究竟能不能用,安不安全。

因此,我们始终需要这种回归本质的讨论和研究——我们,究竟需要怎样的共识算法。以及,一个真正安全的区块链,应该是什么样的。

我们需要一个衡量区块链安全的标准

这个问题,其实从前面一段的分析中我已经表达了我的看法——一个区块链的共识算法的第一标准,是能够可靠地实现它设计的功能。我们必须知道,当我们用算法来代替“信任”的部分,得出的共识一定是可靠的,而且,它的可靠程度是可以量化的。否则,整个区块链就毫无意义,因为它能做到的一切中心化系统也能做到,甚至做得更快更好,然而,我们并不能确定它比中心化系统更可靠。

这种可量化的安全,仅满足于“我们觉得是安全的”的层面是不够的,停留在“从来没有发生过”的层面也是不够的,甚至,停留在“我们可以从理论上证明”的层面,在早些年的探索时期也许还勉强够用,放在巨量资本已经开始在上面搭建生态的现在,也显得捉襟见肘了。我们需要一种量化的分析方法和模型,来计算一个共识算法的安全性,更理想的状况是,我们能够根据共识算法的应用场景需求,来具体量化每一个属性的安全性。

比如,一个安全的哈希函数,我们可以计算出需要多少计算能力才能“破解”它(找到一个冲突),于是,我们可以根据相应硬件的价格和时间,量化出哈希函数的攻击成本。同理,我们也可以算出椭圆曲线加密的攻击成本。实际上,在信息安全的领域里,这样的分析从理论到实践上,都是十分常见的。

现在,我认为,是时候将这样的模型扩展至区块链的领域了,尽管我们需要克服许多困难——

最核心的问题就是,我们要怎么定义安全,以及怎么定义攻击,而这点对于区块链而言并非易事。

以比特币为例,如果我们以密码学的标准来评估比特币的话,它的安全性是漏洞百出的——比如,对于哈希函数,我们认为只要有比穷举更好的方案,这个哈希函数就是不安全的。但是,对于比特币,且不说最著名的“自私挖矿”的问题,单从比特币链上存在的空块来看,很显然矿工有比“诚实”地挖出区块更有利的方法。

有人可能会说——这并不影响安全性,但其实这影响到了比特币的活性,就如同“粉尘攻击”,也是影响活性的攻击。

而这也是目前对于区块链共识算法安全性的证明的局限所在——想要证明算法的绝对安全,我们就只能在假设的实际性上作出牺牲——例如,我们需要假设50%以上的算力是诚实的,或者2/3以上的节点是诚实的,而无法顾及这种假设背后的现实性,比如,是否有足够的激励让这些节点诚实地去执行算法中的每一个步骤,或者,在应用的场景下,我们是否能做出这样的假设。

 1/5    1 2 3 4 5 下一页 尾页

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.longfuchaju.com//zmt/4045.html

联系我们

在线咨询:点击这里给我发消息

微信号:wx123456