教程网

您现在的位置是: 首页 > 聚焦

支撑POW安全性的不是算力,而是信仰

支撑POW安全性的不是算力,而是信仰
支撑POW安全性的不是算力,而是信仰;人们严重高估了POW的安全性;POS的存在只需要一个理由:它能解决POW 51%攻击的隐患;Staking Economy 对POS是有害的,它会降低POS系统的安全性;

支撑POW安全性的不是算力,而是信仰;

人们严重高估了POW的安全性;

POS的存在只需要一个理由:它能解决POW 51%攻击的隐患;

Staking Economy 对POS是有害的,它会降低POS系统的安全性;

POS真正无解的问题是无利益攻击

……

这篇文章系统性地分析了POW与POS的安全性优劣之处,得出了很多不同的结论。文本信息密度很大,读下来需要不少耐心,推荐各位收藏后阅读。大多数人用经验理解POW和POS,而经验往往是错的。

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

最近正好是一些明星POW和POS项目准备主网上线的高峰期,于是,关于POW和POS优劣的比较又甚嚣尘上。我之前看过了很多的这方面的文章,不知道为什么,总是有种如鲠在喉,有些东西不吐不快的感觉——大部分人比较的POW和POS并不是一个层面上的东西。

POW是一个在现实中采用更多的算法,而POS,尤其是现在意义中的POS(而非之前peercoin那类早期半成品)是一个目前仅存在于理论中的东西;同时,POW是一类算法,POS也是一类算法。因此,我们不能在考虑简洁、考虑实用、考虑安全的时候,就拿比特币的POW出来比,然后在考虑效率、考虑去中心化的时候,又拿出另一个不同的POW出来。

所以,在这里,我想要从更根本性的角度来比较这两者。换句话说,我们想要比较的不是比特币的POW与以太坊的casper,也不是目前阶段的POW和POS,而是POW和POS这两种思路的未来和前景,哪个更加适用于区块链的治理和运行。

因此,我们必须抛开现有的POW和现有的POS的一切限制,从本质上,或者说,从一个理想的状态下探讨,两者根本的区别和局限在哪里。

1

POW与POS的本质

那么首先,我们需要定义一下POW和POS。

首先,两者都试图达到一种“随机选节点出块,选中概率正比于节点的某种可验证的资源,然后,由于我们采用最长链共识,于是想要推翻已经得到确认的块需要掌握50%以上的资源”的状态,只不过两者的资源一个是工作量,一个是拥有的币。

从这个角度,我们来看看两者究竟有什么是不可或缺的:

POW:能够提供进行了某些工作量的证据的节点获得出块权。

POS:在某个时间之前提供自己拥有某些币的证明的人获得出块权。

仅此而已。

在这篇文章中,我们进行的一切比较都仅仅基于以上这个定义,以及两者的这一个不同点,然后通过逻辑推理来进行。

当然,我也无意于纯从理论的角度来进行比较,因为其实两者都有所谓的理论“安全性”、但实际上都建立在某些不那么现实的假设之上。因此,我们也需要考虑两者在现实,也就是我们所在的这个社会中,在目前以及不太远的将来,应用于区块链的优劣。

也就是说,我们假设,从功能上,我们可以在近几年找到这样两个理想的算法。如果我们希望用于一条公链,那么,二者孰优孰劣?

2

POW与POS的安全性

POS最经常被人诟病的一点,是POS还没有经过实践的检验,而POW则已经在实践中被证明是安全的了。

然而,正相反。

事实是——POS还没有在实践中被证明是不安全的,而POW则已经在实践中暴露了极大的安全隐患——51%攻击。

这不是天方夜谭,也不是杞人忧天,51%攻击对于几乎所有采用POW算法的数字货币的威胁都是实实在在的。这也是为什么我们在谈论POS的最大原因——不是因为POW浪费电力,不是因为POS的经济模型更加公平,不是因为POS听起来更加炫酷,而是因为——

POW已经暴露出极大的安全隐患和问题,而POS可以解决这个问题。尽管在其他方面POS也许都并不一定优于POW,但是这一点就足以成为我们需要POS的理由。

51%攻击的核心问题描述起来是这样的:

在一个理想的区块链中,从安全的角度考量,共识的参与者的利益应当与区块链本身的利益一致。于是,51%攻击才是不可行的,因为能够在共识中占有主导地位的参与者不会愿意去攻击这个区块链,否则他们会损失自己的利益。

然而,这点对于POS成立,对于POW不成立。因为矿工在系统中所占的利益实际上远小于整个系统的价值。换句话说,当两者有冲突的时候,POW矿工完全有可能因为自己的利益而进行恶意行为,这里,“自己的利益”也许是对于区块链的主导权控制,也许是对于区块链发展未来的理念,也许,是双重支付攻击的获益。

如果你认同这一点,你可以不用看以下的长篇大论。如果你不同意,下面我将对POW的这种安全性风险做一些详细的分析。

2.1

POW的安全性

实际上,POW的安全性远小于大众认知中的POW安全性。

在大众认知之中,只要大多数算力是诚实的,比特币就是安全的,而控制大部分算力是不可能的。

实际上,这个假设也被广泛应用于几乎所有共识算法中——无论是POW,POS,BFT,还是其他的各种POx,我们都在采用类似这种假设——即,如果大部分节点或者资源,也许是1/2,也许是2/3,也许是算力,也许是权益,或者是别的什么东西,是诚实的,那么,系统就是安全的。

然而,这个假设本身并不天然成立——所以,在比特币白皮书之中,中本聪并不是直接就说“我们假设50%以上的算力诚实”,而是说:

“如果有人能够控制51%的算力,那么他完全没有必要进行51%攻击,因为它能够通过挖矿来获得更好的收益,而51%攻击会让他之前所挖出的币和他的矿机变得一文不值。”

也就是说,并不是POW不会被51%攻击,而是对POW进行51%攻击不划算。

那么,对POW进行51%攻击真的不划算吗?

有人可能会说当然——“比特币从没受过攻击,这是因为攻击比特币的代价高昂到你无法想象。”

然而,实际上稍微关注一些区块链安全的都清楚,关于POW的51%攻击已经不胜枚举——比较近的有Verge,BTG,ETC……这些都遭受过51%攻击,并且他们都采用POW算法,而且,是采用的跟比特币和以太坊一样的算法。

从这个角度讲,安全的究竟的是比特币,还是POW?

有人会说我偷换概念:这些山寨币能和比特币(以太坊)一样吗?这些山寨币价格本身就没够得上51%攻击的门槛——我随便自己做一个xx币采用比特币POW进行挖矿,然后被51%攻击了,这也能说明POW不安全?

但这个解释并不足够——因为在之前的逻辑中,我们并不是说POW不会被51%攻击,而是说51%攻击不划算。如果我自己造了一个xx币然后被51%攻击了,攻击者没法从中获益。但是之前的那些例子中,攻击者可是实实在在地在攻击中获益了。

那么这条逻辑哪里出了问题?

难道Verge,BTG,ETC的矿工们,不知道自己可以通过挖矿赚更多的钱吗?他们不知道如果攻击了这些币,会导致币价降低,于是自己之前挖的矿会一钱不值吗?

究竟比特币和这些币种之间的差别在哪?难道只有价格吗?

2.2

POW的51%攻击分析

“POW的安全支撑不是算力,而是信仰”

让我们来分析一下这几次攻击真实的情况:

通过挖矿赚更多的钱是不存在的,51%攻击会导致他们手中的币值贬值也是不存在的,因为他们本身在攻击之前就不需要和这个区块链有任何瓜葛——他们的算力是从比特币的矿池切过来的,而他们本身也并不持币,只是需要从交易所购买一些币,卖掉,然后在交易所还没有察觉的时候进行双重支付攻击再卖一次而已。

所以,归根结底,POW的逻辑问题在于,理想中拥有超过50%算力的矿工应该是和系统利益保持一致的。例如,对于数字货币而言,系统的利益就是安全性,而矿工的利益是挖矿收入,那么挖矿的预期回报应该十分丰厚,使得矿工愿意维护系统的安全性,所以不愿意进行双重支付攻击。

然而,挖矿的回报要丰厚到什么程度才能够完全抵御双重支付攻击呢?

我们来仔细分析一下挖矿的投入和收益,以及双重支付的投入和收益。这里,我们假设第一个条件已经成立,即矿机除了挖这种币之外没有其他用途。

挖矿投入:矿机费用+电费*时间。

挖矿收益:算力单位算力挖矿获得的币数币价+收益带来的利息(现实货币或者虚拟货币)

双重支付投入:矿机费用(购买或者租用)+交易手续费+获得算力和双重支付期间造成的币价波动

双重支付收益:双重支付获利+利息-风险

首先,我们先把所有一次性的成本放在一旁——矿机费用,获得算力和双重支付攻击期间币价波动,以及双重支付攻击的风险。

两者相比我们发现,考虑长期收入的话,当有矿工已经拥有超过50%算力的时候,币价或者投资币的收益并不是阻碍他进行51%攻击的理由——因为他完全可以把进行51%攻击的得利来进行别的投资。

于是,“币价高”是不足以抵御双重支付攻击的,“币价持续走高”也不足以抵御双重支付攻击,因为单位算力的奖励币数还会随着总算力的提高而减少,甚至,“单位算力获益持续提高”都不足够,因为必须得是“单位算力的币价走高的程度要超过其他投资品,即:攻击者找不到比投资算力更合算的投资了”才能完全抵御双重支付攻击。否则的话,从理论上讲,总有某个程度的获益足以诱使51%的算力铤而走险进行双重支付攻击。

然而,如果预期挖矿收益能够跑赢其他投资品,如果这个系统足够去中心化,那么应该会有更多的人来挖矿,导致单位算力的收益降低。除非正在挖矿的人对于挖矿收益的预期和没有加入挖矿的人不一样——也就是“信仰”。

由于有信仰加持,再加上没有加入的人获得了“没有信仰”的减持,因此矿工认为投资算力是划算的,而没加入的人认为投资算力是不划算的,在这样的场景中,拥有了50%以上算力的矿工才不去进行双重支付攻击。

而相反,如果加密货币变得足够主流而算力变成了正常投资品中的一种,那么,正如大家在看到币价高涨的时候把自己从银行、股市、基金、理财中的钱拿出来投资虚拟货币一样,当挖矿的回报不佳的时候,还有什么可以驱使拥有51%的矿工不把自己的钱从算力市场抽出来投入别的行业呢?如果这个时候,他发现可以进行一次51%攻击,而攻击的获利会超过自己把算力卖掉能够抽出的钱,那么,他有什么理由不这么做?

这个结论本身就已经足够令人警醒了,但是它揭露出来的意义其实更加深远:当矿工拥有51%算力的时候,我们一厢情愿地认为他们的利益已经绑在这个区块链上了。然而事实是,支持着他们继续挖矿的理由和支持他们进行任何一个投资的理由的唯一区别,大概就只有信仰。

而这个“信仰”,其实也无非只是“挖矿能赚钱”,无论加密货币以后变得主流,还是最终变得式微,这个信仰都会慢慢褪掉。到了那个时候,只要当他们发现挖矿不划算的时候,捞一笔下车才是他们的最佳选择,唯一的问题只是这一笔他们能捞多少。

“矿机成本不是攻击成本的一部分”

那么,问题来了——我们能通过一笔双重支付捞多少呢?这个值不能太大,因为:1)你需要能够从市场上收购到这么多币;2)卖掉这么多币不足以引起市场立刻的警觉。

于是,之前很多我们忽略掉的东西变得不可忽略了,例如——矿机费用,交易费,币价波动,以及其他的风险……

而这里,矿机费用实际上是直观上最容易看到的门槛,也是很多人对于POW信心的根源——获得50%的算力哪有那么容易?你去看看现在这些POW链的算力然后去根据相应矿机的市场价格算一算就知道了。

但我们其实并不需要购买矿机,我们只要收购算力就够了。换句话说,我们只要买通控制算力的人。而对于拥有算力的人来说,别忘了我们之前的分析——从利益的角度讲,他们可并不是被绑在链上的,只要有足够的回报,他们随时可以下车。

这里又有两种情况:

1、他们的矿机除了挖这条链还有其他用途。

2、他们的矿机除了挖这条链没有其他用途。

通常,我们认为后者是更安全的。用实际中的例子来说就是,如果我们要发个POW的新币,那么采用和主流货币一样的算法是不安全的,而采用特殊的POW算法要更安全。

然而,实际上两者同样不安全——

首先,“有没有其他用途”的判断是完全主观的,因为本身“攻击者是否采用攻击”的判断就是主观的。如果我们判断这个矿机在攻击之后还有其他用途,那么矿机的成本不需要计入攻击成本之中。如果他们判断矿机在攻击之后没有其他用途,那么,既然攻击的前提条件是他们判断矿机的投资从长期看不划算了准备下车,那这个时候,矿机已经是沉没成本,并不需要计入攻击成本之中。

有人可能会说我在偷换概念——即便是继续挖矿不赚钱,也不代表矿工会把算力卖给攻击者啊!

但事实是,本来矿工就在把他们的算力卖给矿池,那么,谁能知道那些给你的奖励比别的矿池多的矿池不是攻击者呢?这点,我们会在后文中展开说。

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