比特币 区块链
数字货币资讯平台

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

“我们之所以需要区块链,是因为集中系统最大的担忧不是邪恶的成本,而是邪恶的成本无法估计和量化。邪恶的回报不限于系统,而是在系统之外。即使是最透明的上市公司,我们也无法了解股东的所有收入来源,所以我们无法量化他们能通过邪恶在系统之外获得多少好处。

无论是POS还是POW,当区块链中「大节点」过于集中,我们将面临与集中系统相同的问题——我们不能量化系统的安全性,所以我们必须把安全放在对节点的信任上,而不是可量化的邪恶成本上。”

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

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

本文作者:Maxdeath,唯链区块链高级研究员任志杰博士在国际学术会议上发表了许多区块链论文,包括区块链共识算法、扩展和应用。

“由于POW和POS(或其它算法)在不同的属性上有自己的优势,因此,它们适用于不同的场景,因此它们在现实中并存,不同的区块链可以使用不同的算法。”

这似乎是一种更流行、更模棱两可的观点。但这不是我的观点。

事实上,我的观点在最后两篇文章中表达得很清楚。——

面对安全,其他特点都是末节。

同样,我认为安全性差的算法也是算法。

因此,我们回到了上次我们想讨论但尚未讨论的问题——

我们需要什么样的共识算法?

事实上,上述论点是放在上面的2-3多年前可能会有更多的关注。对许多人来说,即使我写扩容、分片或链下技术,也是前两年过时的东西。“POW”、“安全性”这种似乎从n几年前,公链项目爆炸的时代正在讨论。结果,大多数公链都死了,到目前为止,双方都决定退一步说:“两者相互优缺点,适用场景不同”的话题。

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

因为在我看来,这个问题并不过时,也从来没有这么重要过。

在我看来,上述所有问题都是安全问题。

因为区块链本身解决了安全问题。

“安全”这意味着系统可以可靠地遵循我们的想法,做我们应该做的事情

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

一方面,我们已经介绍了前两篇文章——“每个人都认为安全”,不是真正的安全。“现实中没有被打破”,也不是安全保障。

那理论上的安全呢?有了论文和数学证书,应该足够安全。

事实并非如此。

理论上,我们可以从分布式系统的方法证明共识算法是拜占庭容错的,或者从密码学的角度证明所有使用密码学的机制都是安全的,我们也可以使用它Bitcoin backbone protocol模型证明算法适用于区块链共识,因为它具有与比特币相同的特性,但所有这些安全证明都是基于一些理论模型或假设,这并不意味着它们在现实中必须是安全的。

例如,BFT假设超过2/3的诚实节点,对于不同的算法,这个假设的建立是否不一定——如果您要求诚实节点安装客户端,客户端每十分钟验证一次MB对于交易,大多数节点可能是诚实的;但如果该算法要求诚实节点每秒验证一次1M显然,许多带宽和计算能力不能满足要求的节点无法完成交易。因此,在BFT在模型中,这些节点将成为“不诚实”是的。此时,如果每个节点都能得到相应的激励,它们就会变得诚实。因此,一种证明拜占庭容错的算法在现实中可能不安全,而一种能容错1/3的算法在现实中可能不比容错1/5更安全。

另一个例子是,理论上考虑自私挖掘,理论上比特币是“安全的”,因为我们的假设是“恶意节点无法控制超过50%的计算能力”。但正如我们之前所说,这个假设本身是不现实的。首先,很难获得50%的计算能力。其次,在实践中POW超过50%的计算能力控制在一个或几个节点手中。

换句话说,即使在学术界,也没有确切的定义或公认的模型来描述区块链系统的现实“安全”因此,我们无法证明什么是标准。“安全”共识算法。

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

所以,什么是“安全”区块链共识算法呢?

我在这里说的安全不是传统信息安全中说的安全。

这里,“安全”这意味着系统可以可靠地遵循我们的想法,做我们应该做的事情。

在我看来,区块链共识算法的主要责任是超越所有其他属性。

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

这又是相当“非主流”的观点——我猜很多人会说:“区块链的主要责任不是分散的吗?”

当然,我承认分散化很重要。分散化是区块链最大的特点,也是区块链和集中系统最大的区别。如果没有“去中心化”,那么区块链就不能叫区块链了。

然而,别忘了比特币诞生于整个密码朋克团队的初衷。我们需要去中心的原因不是因为我们不相信集中系统的安全性和可靠性,也就是说,虽然一个中心,如银行和政府,告诉我它会做什么,告诉我们“这是数字货币,里面的钱在我的系统里是安全的。”,但是,我们不完全相信它会遵守我们的协议,可靠地这样做吗?

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

我们需要区块链,但别人不在乎。他们需要的是一个更好的系统——无论是集中还是分散。

因此,我们需要分散,但其目的是提供一个分散的区块链,使我们能够更好地量化其安全性,而不依赖于对某个中心的信任,最终获得比分散系统更安全的系统。

因此,如果平衡的两侧分散且安全,——无论如何,我会选择安全;如果平衡的两边是一个“系统更分散,但不那么安全”和一个“系统没有那么分散,但更安全”,无论如何,我会选择后者。

然而,在这个阶段,我们确实需要探索性地尝试这些“不安全,但更分散”但请记住,如果我们都朝着这个方向走得太远而不回头,不仅仅是一个系统,还有整个区块链技术。

所以,在我看来,安全是第一位的。

换句话说,我们可以忽略区块链是否可以“有效地”能做该做的事吗?“快速地”能做该做的事吗?“足以去中心化”我们不在乎它是否能做它该做的事。“节能地”做它应该做的事,我们不在乎它的方法是否足够简单、优雅,足以吸引每个人参与生态建设,或者开始、进化、自我治理,自发形成健康的生态……

因为除了“可靠”我们已经在集中系统中实现了这一点。

是的,我们可能只知道如何在集中的场景中实现这些,而不知道如何在分散的情况下实现这些,这确实是学术和工业研究的焦点,也是当前媒体和圈聚光灯下的焦点。

但是,如果没有安全,这一切都变成了无源之水,无本之木。

因为我们不能回答的问题是——

即使我们能够制定一个分散的系统,即使我们找到了所有分散的实现方法,如果所有这些功能的系统都不可靠,安全不能量化,甚至最终的安全主要取决于中心、创始人、公司和矿主的信任,那么为什么我们要放弃成熟的分散解决方案来使用区块链系统呢?

换句话说,之所以提倡区块链,投资这个领域,不是因为我们认为集中系统不够“可靠”,所以,我们想用“算法”来代替“信任”,用“机器”来取代“人”吗?

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

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

若共识算法不安全,为什么要认为节点会诚实地分配激励?

若共识算法不安全,为什么要认为它自然成为所谓价值互联网的基础设施?

若共识算法不安全,为什么区块链可以作为可信的第三方构建侧链和支链?Dapp,构建整个生态

这就是为什么我认为这件事没有过时,这个时候需要出现的原因——

近年来,共识算法的冷却和公共链的退潮使资本和公众舆论开始追求新的话题和项目。与此同时,它也带来了盲目乐观地认为共识算法是一个完全忽视事实的成熟基础设施——

我们最常用和最常见的被认为是绝对安全的POW,其实远比我们想象的不安全。而且,我们一直在讨论POW vs. POS问题从来没有结果。每个人都期待着区块链的未来,思考如何围绕区块链构建生态,如何利用区块链重塑经济,如何通过区块链改变世界,只有少数人和少数声音关注区块链是否可以使用和安全。

因此,我们总是需要讨论和研究回归本质——我们需要什么样的共识算法?真正安全的区块链应该是什么样的。

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

事实上,在之前的分析中,我表达了我的观点——区块链共识算法的第一个标准是可行的
它的设计功能是靠地实现的。当我们用算法代替算法时,我们必须知道“信任”在某些部分,共识必须是可靠的,其可靠性可以量化。否则,整个区块链将毫无意义,因为它可以做的所有集中系统都可以做得更快更好,但我们不确定它比集中系统更可靠。

这种可量化安全只满足于“我们认为这是安全的”层次不够,停留在“从未发生过”层次不够,甚至停留在“理论上可以证明”在这个层面上,在早期的探索时期可能还不够,现在大量的资本已经开始在上面建立生态系统,这似乎也很紧张。我们需要定量的分析方法和模型来计算共识算法的安全性。更理想的情况是,我们可以根据共识算法的应用场景需求,量化每个属性的安全性。

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

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

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

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

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

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

这种做法的弊端在之前的POW算法容易被51%攻击的分析中已经很明显了——我们当然可以对于所有的资源都做出“大多数人都诚实的假设”,但是,如果这个假设在现实中并不成立,那么采用这个假设证明了安全性也毫无意义。

另一方面,共识算法的安全性是与它的应用场景相分离的。对于一个共识算法是否安全,我们要么通过BFT证明“它可以达到拜占庭容错”,能够对于所有数据达成一致和活性,要么通过Bitcoin Backbone Protocol的模型证明我们可以得到一个增加的,一致的账本。

也就是说,前者,我们将区块链视为一个拜占庭容错的分布式数据库,后者,我们将区块链视为某种类似比特币的分布式账本。然而,在此之上区块链的应用却已经远超分布式数据库和账本的范畴了。例如,对于分布式账本,一致性的重要性高于活性(所以可能很多人会认为空块不算是对于比特币安全性的破坏)。

因此,比特币的POW算法并不保证交易的活性,而仅仅保证能够被上链的交易的活性,同时用交易费的模型鼓励矿主尽可能地将交易添加上链,即保证“交易费给得足够多”的交易的活性。

然而,当将这种共识算法用于其他对于交易活性要求高的应用时就可能会出现严重的问题——例如FOMO3D实际上就是受到了针对于以太坊交易活性的攻击,而尽管比特币以及以太坊的模型不保证交易活性这件事对于业内人士都不是秘密,但是不可否认的是,既然以太坊或者其他的区块链具有这样的应用,在共识算法安全性分析的时候把这种情况排除在外,本身也说明了这个模型并不完备。

因此,我们需要一个更实际,从应用出发,面向目标和场景的对于区块链安全性的评价标准,并且:

1、相比于每一个机制的可证明的安全性,我们更关注这个系统是不是能够达成它应有的功能。

2、相比于在一些条件限定下的绝对安全性,我们更关注在现实语境下的相对安全性。这点和我们之前的分析是一致的,也就是说,我们更关心——想要破坏这个系统,使得它没法做它该做的事情的代价有多大。

3、然后,对于“应有的功能”相对应的特性,我们应该根据实际情况来分析他们的重要性——例如,对于货币,一致性、活性、抗审查、匿名的需求取决于什么样的场景。如果黑市是需求,那么匿名可能需要摆在活性之上,但如果把交易和支付作为场景的话,我们应该参照一个支付平台的要求去考虑他们之间的权重。

上述的定义并不严谨,但是毕竟这只是一个提议,我们不是在写论文。

从这个角度来讲,其实对于数字货币的共识算法而言,我们并不用去考虑51%攻击,长链攻击,无利益攻击这些方式和相应的条件,也不用去关心在怎样的假设下通过什么样的算法可以防止他们的出现。

我们该关心的的问题是——

1、我们需要付出多大的代价才能破坏一致性,进行一次双重支付攻击:于是,我们可以判断这个系统可以承载多少价值,而一笔交易的数额超过多少的时候,我们就需要考虑双重支付这种可能,并且相应地提高确认时间,或者,仔细审视各个节点的动态。

2、我们需要付出多大的代价才能破坏活性,每延迟一次出块或者一分钟达成共识:于是,我们可以知道需要即时确认的交易中,我们有可能会遭到多大的损失。然后,对于FOMO3D这样的“游戏”,我们会知道当一个币卖到多少钱的时候,就已经可能不安全了。

3、我们还需要知道需要付出多大的代价才能破坏抗审查:于是,我们可以知道,比特币其实并不是一个完全自由的货币,当代价足够高的时候,我们是可以消灭掉某个地址的活性的。

4、然后,对于匿名货币,我们需要知道多大的代价,可以破坏匿名性,于是可以追踪到一笔钱的来历,或者是标记一个地址的身份短线炒币率最高的方法新手。

上述,是对于“货币”这个功能而言的——这是我们的起点。

而之后,最理想的状态是,我们应该对于区块链所能实现的所有功能,判断它们所需的性质,然后,量化它们的安全性。

那么,在这里,去中心化的位置在哪里呢?

对于去中心化的要求,已经融入安全性的标准之中了——毕竟,去中心化是手段而不是目的:一个过于去中心化的系统,将面临着和中心化系统同样的风险,即作恶的成本不可控。

而同时,一个过于中心化的系统中,共识算法也将失去意义。

因此,在安全性标准中,我们必须也将它的去中心化程度纳入考量。

1、我们需要衡量实际参与共识节点的大节点的数量。

2、我们需要知道这些节点的信息,来评估他们在链外获益或者合谋的可能性。

3、同时,我们还需要确定,这些节点确实有能力维护这个系统的安全。

正如之前所说,一个理想的,安全的区块链系统,是由足够多数量的,身份已知的大节点来维护的。

于是,我们需要知道:

1、他们是否有足够的动力来维护这个系统——他们是否有足够的收益。

2、这个系统的结构是否持续——他们是否也能够决定系统的发展方向。换言之,我们怎么保证未来整个系统还是有足够的大节点来维护,而不是共识节点会由于系统未来的发展方向与期待不符而逐渐退出或者分叉,重新导致中心化。因此,我们需要评估的决策机制是否能够代表共识节点的权益。

3、同时,我们还需要保证,所有在系统中有利益的群体,都应该能够参与共识。

于是,我们需要激励机制,链上治理等等其他的机制——

一切,归根结底都是安全问题。

写在最后

新手炒币手机常用软件

这是我关于POW和POS讨论的最后一篇,这三篇的内容和长度都远远超出我的预期,可能是进入这个领域以来看到听到的东西太多,积攒了很多东西不吐不快的缘故。

之前,我写过专业的在区块链领域的顶会上发表的学术论文,也一直致力于在知乎上写一些客观的和中立的科普性文章,我一直致力于避免的,就是在这个本来就混乱的行业中引入新的混乱——因此,我一直只写一些已经成为这个领域基础的论文和技术,但不愿意写太多新的、未经证实或者检验的结论,尽管有些结论我认为是正确的。甚至于,即便我的文章已经被接受甚至发表,我也不太愿意在我的专栏里介绍它们。

然而这一个系列和之前我写过的所有文章都不同,这一篇里更多的是个人的观点和判断,其中,我可能提出了不少“政治不正确”的,“大家不喜闻乐见”的,“在业内尚有争议”的,或者“所有人都知道但是没有人愿意说”的观点,因此,自从文章发表以来也或多或少引起了一些争论——而这些都是我原来一直想要避免的。

之所以做出这样的改变,其实关键的原因还是我在文中说的那点——资本和市场追逐新噱头的脚步是不会停下等技术发展的,于是,当这个领域所有的人似乎都已经开始盲目乐观地考虑长期发展的时候,我们需要反思一下——我们做的这些东西,真的“够安全”吗?

赞(0)
未经允许不得转载:币圈之家 » 我们需要什么样的共识算法?安全区块链共识算法是什么?

币圈之家

联系我们联系我们