随着区块奖励的不断降低,比特币在未来的安全性是否能得到足够的保障一直是我们关注的一个重点。
上个月,Hasu、James Prestwich和Brandon Curtis对这个问题进行了全面的论述。鉴于这个问题的重要性,我们对该论文进行了细致的全文翻译。全文如下:
我们感谢 Anthony Towns、Arjun Balaji、Brian Venturo、David Vorick、Joe Kendzicky、Lucas Nuzzi、Matthew Hammond、Nic Carter、Philip Daian、Steve Lee、Su Zhu、Tarun Chitra 和 Yassine Elmandjra 的编辑和很多有价值的想法。本论文进一步受到了 Andrew Miller、Arvind Narayanan、Ed Felten、Elaine Ou、Emin Gun Sirer、Eric Budish、Eric Lombrozo、Eric Voskuil、Fernando Nieto、Ittay Eyal、Joseph Bonneau、LaurentMT、Nick Szabo、Paul Sztorc 和 Raphael Auer 的优秀论文、博文和推文的启发。
如果一个应用或一个协议在对抗性环境中实现了它的目标,包括抵御那些愿意花费大量资源来损害系统的行动者,我们就将其称之为“安全” 。不幸的是,没有一种系统可以抵御万能的攻击者。因此,务实的安全性方法是最大化根据协议采取行动的动机,同时最小化针对协议采取行动的动机。比特币的目标是建立这样一种支付系统:
1)任何人都可以参与(无需许可的访问),
2)只有合法拥有者才能花掉币(安全),并且
3)所有有效交易最终都将进入账本(活性)
这些属性现在已经存在了10多年,表明比特币在实践上是安全的。另一方面,在理论上,比特币通常无法产生相同的保证。这导致学者们称其为“不完整的(broken)1 ” 和“ 注定失败的(doomed)2 ”,等等。
在本文中,我们希望通过引入我们的比特币安全模型来弥合理论与实践之间的鸿沟。我们证明了比特币目前可以承受非常高的攻击激励,这是少数出人意料的因素的作用。我们进一步证明了为什么学者们提出的许多攻击对矿工来说是不理性的。
在下半部分,我们证明了,相比任何外部攻击者,对比特币安全性的最大威胁更多在于协议本身。作为比特币固定发行计划的一部分,区块补贴计划的不断降低,将导致矿工的可预见收入降低。如果没有发展出一个健壮的区块空间市场,我们解释了为什么区块奖励的下降将对未来构成重大的风险。与普遍的看法相反,用户无法仅通过等待更多确认来弥补这一点。
最后,我们提供了思考该问题的一些一般方法,包括一些可供社区讨论的改进建议。
1. 为什么比特币需要挖矿
在过去的支付系统中,需要一台或一组受信任的中央服务器来处理交易。事实证明,这是一个重要的故障点,因为中央验证者通常会失效,或被迫排除某些人群或某些类型的交易。因此,一个旨在提供无需许可的访问的系统不能使用中心的一方。中本聪看到了这样一个解决方案,用扁平的点对点模型——该模型已经在诸如 BitTorrent 之类的极具弹性的分布式网络中证明了其价值——来代替流行的客户端-服务器模型。
借助公钥加密技术,我们已经可以证明和验证消息的所有权。在比特币中,一个币的所有者可以用他的私钥签名一条消息。然后,网络中的其他节点可以使用发送人的哈希公钥来验证消息,以证明消息确实有效。这满足了比特币系统中的“安全性”要求。但是,当节点收到两条分别有效但彼此不能同时有效的冲突消息时(例如,当某人尝试两次花同一枚币时),公钥加密几乎没有帮助。
比特币通过用一组计算能力的签名(节点可以遵循这些签名来在单条链上进行协调)来替换受信任的服务器的签名,从而优雅地解决了这个问题。节点可以高度信任此签名,因为它的生产成本很高,并且此成本很容易被验证。当节点从矿工那里收到两个相互冲突的签名时,他们会通过偏向价格更高的签名来区分它们。这种“分叉选择规则”现在被称为中本聪共识(Nakamoto consensus)。
贝克(Back)、科拉罗(Corallo)等人首先提出了将比特币挖矿视为动态多方成员身份签名(dynamic multiparty-membership signature,DMMS)的想法。3 DMMS 是由一群可变的匿名签名者——他们可以随时加入和离开——组成的签名。他们对比特币网络的算力份额加权了他们对签名的贡献。这些签名是累积性的,因为每个块都引用前一个块,从而创建了区块链。
计算签名的创建过程如下:首先,矿工通过生成随机输出来执行负载计算。当这些输出落入特定范围时,其他节点可以以此为依据,证明虚拟骰子必然已经被掷出了一定的平均次数(类似于必须将一个 1000 面的骰子平均掷出 100 次才会产生一个介于 1 到 10 之间的数字。4)接下来,一个矿工将其区块(包括工作量证明)发布给网络的其余部分。如果满足共识规则,则其他节点会将其添加到其区块链中,并以区块奖励和该区块中的所有交易费来补偿获胜的矿工。
1.1 密码学的局限性
虽然矿工在构建自己的区块上有一定的自由度,但他们不能给自己多发币,不能在同一条链上窃取别人的币,甚至无法追溯性地改变区块的收益。矿工必须像其他任何节点一样遵循比特币协议,并且节点会自动拒绝任何破坏协议的尝试。
但是,协议在一些重要方面无法通过密码学强制执行。一个节点不知道两笔互相冲突的交易里哪一笔是有效的,或者两条互相竞争的链里该支持哪一条,因此用户依赖于分叉选择规则在单条链上进行协调。虽然分叉选择规则是比特币保持共识所必需的,但它也赋予了矿工相当大的权力,而该权力不受协议本身的管控(且不可管控!)。
最著名的“激励失败”是双花攻击,多数矿工首先用比特币在原链上购买非比特币商品或服务。一旦他不可逆转地得到了商品或服务,他便产生一条更长的链,在这条链上该交易从未发生过,最终他钱货双收。勤奋地遵循最昂贵签名的节点会自动切换到新链,即使它包含了链下盗窃或其他恶意行为。
由此可见,诸如加密签名之类的“硬”协议规则不能完全确保交易排序的安全——它也依赖于对矿工的“软”经济激励来发布服务于比特币用户的更新。
2. 为比特币的安全性建立模型
如果用户不能信任协议来强制执行“正确的”交易历史,他们如何才能知道一笔交易是不可更改的(final)还是将来会被矿工撤消?在传统的金融系统中,交易是不可更改的,因为法律禁止将其撤消。在比特币中,法律无法覆盖矿工,矿工可以是匿名的,可以在世界任何地方运营,并可以随时加入和退出网络。
如果这对矿工们有利可图,那么我们就该认为他们会一直撤消交易,包括为此付费的其他人的交易。因此,用户不应将一笔付款视为不可更改的,除非撤消它无利可图。民间智慧已将这个问题表示为“一个人必须等多少次确认才能让一笔付款变成不可更改的”。我们证明了为什么额外的确认对比特币的安全性没有多大意义。相反,安全性主要是两个简单因素的结果。
2.1 安全假设
我们首先要设立一个基本的支付系统,该系统有 12.5 BTC 的区块补贴且没有交易费。挖矿所需的所有硬件和算力都可以按需租用,因此矿工对比特币网络没有长期的承诺。他们的行为不会影响比特币的交易价格,也没有用户会忽略中本聪共识选出的最昂贵的链。所有模型均使用比特币作为基础货币。
我们把遵循协议(或“诚实挖矿”)的比特币价值定义为 EV(诚实挖矿)。
比如,在一个持续 10 个区块的例子里,矿工收入(MR)将是 125 BTC。假定矿工之间免费进入挖矿并完全竞争,我们可以认为整个矿工会花 125 BTC的开采成本(MC) 来赢得这个奖励。
等式 1
|
挖矿收入(MR) - 挖矿成本(MC) = 0
|
因此,诚实采矿的 EV 被确定为 0 BTC的基线。
矿工可提取价值(Miner-extractable value,MEV)描述了一个矿工希望从他的攻击中赢得多少BTC。这一概念是达扬(Daian)、高德菲尔德(Goldfeder)等发明来描述矿工从智能合约中可提取的价值的5,但我们将其扩展到涵盖矿工通过操纵共识或交易订单可提取的任何价值。
重要的是,MEV 并不描述单个用户可以在一个区块中安全地交换多少,因为攻击者可以一次双花许多不同的用户。它甚至并不描述所有用户可以安全地在一个区块里交换多少,因为攻击者可能跨连续多个区块双花。MEV 描述的是攻击者的全部价值,对于等待六次确认的用户来说,攻击者的最低攻击持续时间为七个区块。因此,仅根据自己的个人交易来计算 MEV 的用户将低估矿工实际激励的数量级。
攻击挖矿的最终 EV(例如,双花)可以被建模为:
等式 3
|
EV(攻击挖矿) = MEV + MR - MC
|
只要 EV(诚实挖矿) > EV(攻击采矿),一个理性的矿工就将遵循协议而非攻击它。
因此,我们可以推导出,EV(诚实挖矿) > EV(攻击挖矿) 是比特币确保对理性攻击者安全的必要条件。
由此推论,EV(诚实挖矿)和 EV(攻击挖矿)之间的区别描述了比特币对非理性(“拜占庭”)攻击者——他们不关心利润,但会出于任意原因攻击比特币——的耐受性。值得注意的是,这种耐受性不必包括攻击者直接从攻击中获取的价值,例如,对比特币价格下重注而获得的价值。MEV 已经捕获了任何此类价值。
在这个简单的模型中,我们甚至不需要谈论拜占庭式攻击者。该系统已经无法抵御一个理性攻击者了,因为任何 MEV > 0 就足以让攻击比诚实挖矿更具吸引力。假设一名矿工可以从一次持续 10 个区块的攻击中提取 100 MEV,我们可以看到
示例1:EV(攻击挖矿) = MEV + MR - MC = 100 + 10 - 10 = 100; 100 > 0,因此比特币不安全
这一发现与直觉相吻合,因为攻击链对攻击者来说并没有实际成本。它的预算要求仅为 10 BTC。在攻击成功之后,他花在攻击上的所有资源都回本了。这里有三个值得注意的警告:
1)如果攻击者必须使他自己的某些区块无效,那么攻击将开始具有实际成本,因为他的有效 MR(攻击)下降,而 MC 保持不变。
2)如果少数矿工(“防御者”)继续挖原链,他可以增加攻击的持续时间。但是,只要攻击者最终赶上来,这不会降低其 EV;它只会提高预算要求。防御者的资源将被浪费。
3)在此模型中,我们假定攻击者具有多数算力,或者几个较小的攻击者之间的协调没有成本。在现实世界中,协调是有成本的,如果矿工对 MEV 的价值或需要的攻击持续时间意见不一,则协调的成本可能会增加。
2.2 市场治理
俗话说,作为经济行动者,我们一直在投票——通过在某些事而非其他事上花钱。区块链也是市场,因此,当用户(消费者)买卖比特币时,他们不断投票支持矿工(生产者或服务提供商)以某种方式行动。当用户对矿工提供的服务不满意时,对支付系统的信心可能会下降,与攻击前相比,比特币的交易价格可能会下降。
我们定义 p(攻击后价格)为攻击后的相对 BTCUSD 价格,例如,95% 的攻击后价格表示的价格在攻击中下降了 5%。
等式 4
|
EV(攻击挖矿) = p(攻击后价格) * (MEV + MR) - MC
|
在更新的等式中,由于比特币价格因攻击而下降,MR(区块奖励 + 交易费)和 MEV 都变小了,而 MC(攻击挖矿)保持不变。虽然在这里使用比特币而非法币作为基本单位可能并不常见,但我们发现推理起来更容易。实际上,在攻击后矿工的名义比特币并没有减少,但是由于它们损失了 5% 的购买力,因此他只能将其换成 95% 的攻击前比特币。
由于引入了市场治理,因此,只要 MR(诚实挖矿)大于 p(攻击后价格) * (MEV + MR(攻击挖矿)) ,则 EV(攻击挖矿)现在将无利可图。
等式 5
|
EV(攻击挖矿) < 0,如果
|
MR > p(攻击后价格) * (MEV + MR)
|
由此,我们可以得出系统安全的三种方式:
1)MEV 可以低,例如,因为很少有人在用比特币交易,或者用户在没有额外保证比如知道买家身份的情况下,不考虑最终支付。
2)p(攻击后价格)可以低,这意味着用户需要对比特币应该是做什么的非常敏感,并且,需要愿意转换到竞争对手,如果矿工停止做他们的工作。这有点像一个“站队”的参数,因为如果让比特币的价格崩溃很容易,其他形式的攻击(例如破坏活动)将变得更具吸引力,从而增加了 MEV。6
3)MR 可以高,因此,p(攻击后价格)对 MR 的影响开始超过来自 MEV 的潜在增益。
2.3 矿工承诺
到现在为止,我们做出了不切实际的假设,即挖矿所需的所有东西都可以按需租用(该观点主导了关于比特币安全性的学术评论。)实际上,挖矿并非如此。在一个激烈竞争的模型中,矿工们都在跑步机上奔跑。如果一个矿工加快速度,并以相同的成本并增加其收入,那么其他矿工就必须跟上步伐,否则就有可能完全破产。挖矿几乎没有可持续的护城河。结果,矿业的工业化速度可能超过历史上任何其他行业。
随着矿业的工业化,寻找一个区块的单位成本变得越来越重要。有几种降低企业单位成本的方法:
1)如果生产设施的运营低于产能,则企业可以卖更多产品,用更多的商品来分摊其经营费用。在挖矿中,每份算力都有比特币网络作为自动买家,因此这里没有什么要优化的。
2)该业务可以减少生产的日常材料成本。挖矿的等效目标是不断寻找更便宜的能源,更好地散热或冷却以及制造优化。
3)企业可以通过使其生产设施专业化来降低经营费用。在比特币挖矿中,这导致硬件针对一项工作进行了越来越多的优化:哈希 SHA-256。此硬件无法再挖比特币的那一刻,它实际上一文不值。值得注意的是,这甚至适用于以太坊等大型GPU挖矿网络。即使可以使用通用硬件来挖以太坊,对 GPU 的需求也不足以使供应突然骤然饱和。如果以太坊的价格崩溃,以太坊矿工的承诺也将失去其大部分价值。
4)矿工还可以通过签订越来越长的购电协议(PPA)来降低单位能源成本。
因此,为了降低单位成本来开始竞争性的挖矿,一名理性的矿工需要高度专业化的硬件,并且需要对网络采取长期的看法。矿工的专业化程度越高,其资产和支出就越不能改变用途。从等式 1 中,我们知道 MR + MC = 0。这意味着,我们可以从挖矿总收入中得出采矿总成本,这仅仅是所有区块奖励的总和。
矿工必须预先承担多少费用?在与比特币矿工和专家交谈之后,我们得出了一个粗略的估计,即普通矿工,乃至整个采矿业,其总成本中约有 50% 属于此类不可改变用途的资产。此外,我们了解到,这些资产平均会在 24 个月内折旧。
如果我们以此假设运行,那么整个矿业将获得一整年的区块奖励(两年* 50%),承诺在未来两年内挖比特币。在 12.5 BTC的区块奖励下,等于 658800 BTC。
换句话说,在矿工们开始挖矿前,他们不得不*预先*购买他们期望在两年时间内挖出的所有币的50%。
在这些币到手之前,任何有损于其价值的事都极具破坏力。
因此,我们可以说,矿工们都在坚定地致力于以最大化比特币价值和网络效用的方式挖比特币。
等式 6
|
EV(攻击挖矿) = p(攻击后价格) * (MEV + MR) - MC - [1 - p(攻击后价格)] * 承诺
|
在第一个例子里,算力仍然可以是租来的,95% 的 p(攻击后价格),对 MR 的影响只是持续 10 个区块的攻击。一旦矿工承诺了比特币,同样的价格下降影响整整一年的收入——52704块!5%的价格下降,在所有矿工来说现在将消灭相当于攻击前的 32940 BTC。
值得注意的是,攻击者无需拥有 100% 的算力即可使攻击成功。如果他用 60% 的算力进行攻击,那么他自己的承诺将仅占总承诺的 60%,即 395280 BTC。
示例2:EV(具有60%算力和100 MEV的10个区块的攻击) = 95% * (100 BTC + 10 * 12.5 BTC) - (100 * 12.5 BTC) - 5% * 395280 BTC = -19.675 BTC
对于一个具有 60% 算力的攻击者而言,MEV 大约为 21000 BTC,即按今天的价格计算为 1.87 亿美元,才能使攻击有利可图7。对 MEV 的高耐受性表明,今天的比特币网络确实安全。这些研究结果可以推广到所有使用 PoW 的加密货币,并说明矿工支出不可改变用途对安全来说是多么的重要。
2.4 暂停中本聪共识
我们已经证明,比特币网络今天可以耐受大量的 MEV,这为攻击获利制造了巨大的障碍。但是,为了完善我们的比特币安全模型,我们需要更新剩下的最后一个假设,也就是比特币用户永远不会质疑中本聪共识。
用户正在市场上寻求最小化信任的信号,该信号使他们可以在单条链上进行协调。他们为这些信号花费大量金钱,因为这样做比协调任何其他方式(例如,通过直接相互交谈直到出现类似的共识)都便宜。
但是,这并不意味着即使大多数用户对矿工不满意,用户也一定会遵循矿工产生的信号。比特币历史上有很多先例,用户忽略了中本聪的共识,因为由此产生的链条不再代表他们已签署的社会契约。
2010 年,区块 74638 中的整数溢出错误导致创建了高达 1840 亿个 BTC,比应该存在的 2100 万大得多。在三个小时内,中本聪发布了一个没有错误的新比特币客户端,“回滚”了这条超通胀的链。8
第二个例子是 2013 年的 0.7/0.8 共识错误,该错误让区块链在几个小时的时间里一分为二。当时最受欢迎的比特币实现 Bitcoind 新近发布了 0.8 更新。开发者并不知道的是,新软件还对共识规则进行了微小的改动,这导致区块 225430 与较旧的客户端不兼容。在比特币开发者和矿池们决定暂时中止分叉选择规则后,分叉得到了解决。他们手动支持了 0.7 分支并放弃了 0.8 链,这要求矿工们放弃 0.8 链中的任何区块奖励,以最大化网络的整体效用。9
最后,最著名的例子可能是2017年的用户激活软分叉(UASF)运动。代码发布一整年后,大多数矿工仍拒绝采用隔离见证(Segregated Witness)更新——可能是因为它破坏了 ASICBoost,一种提高挖矿硬件效率的专利技术10。为了无论如何也能推动这一改变,一些比特币用户安装了一个客户端,该客户端再次有了中止中本聪共识的威胁,因为它忽略了在某个日期之后拒绝 SegWit 的矿工的区块。如果矿工们任其发生,那将导致主网上的有争议分叉。比特币的效用和价值受到的威胁严重触及了矿工的底线,他们最终放弃了对 SegWit 更新的抵制。
这些示例表明,最终,用户将领导矿工。当他们不同意哪种治理决策将最大程度地利用整个网络效用时,用户可以运行自定义代码(例如 invalidateblock 参数)来暂时中止中本聪共识,从而“剥夺”矿工的权力。
即使满足协议规则,攻击者也必须考虑用户拒绝其链的风险。
我们将 p(遵循中本聪共识)定义为用户协调链下中止中本聪共识的概率。从攻击者的角度来看,这进一步降低了潜在报酬,而他的成本保持不变。
等式7
|
EV(攻击挖矿) = p(遵循中本聪共识) * p(攻击后价格) - MC - [1 - p(攻击后价格)] * 承诺
|
由于中止中本聪共识在攻击持续时间内仅影响 MR 和 MEV ,而对矿工承诺则没有影响,因此,中本聪共识中止所带来的安全性少于市场治理。但是,从理论上讲,用户不仅可以改变交易历史,还可以改变核心协议规则。如果有共识将挖矿算法从 SHA256 变为其他算法,则即使比特币价格不跌至零,用户也可能立即使整个矿工承诺无效。这使得社会干预成为抵御主动尝试降低比特币价格或破坏网络的攻击者的非常有用的防御手段。
2.5 总结
通过构建此模型并用真实数据填充它,我们可以获得一些关键的见解。
1)为了获得高度的安全性,在用户视为不可更改的任何持续时间内,诚实挖矿必须比攻击挖矿更有利可图。
2)如果用户希望能够进行大笔交易,则必须允许 MEV 高。
比特币安全性