币安被盗事件深度分析:区块重组,唯一受益人只有矿工!

互联网 2019-05-10 12:13:56

2019 年 5月7日,币安 (Binance) 遭遇黑客攻击并损失了 7,000 枚 BTC。之后我们很快看到了 Jeremy Rubin (比特币核心开发者) 发布推文建议币安 CEO 赵长鹏采用区块重组的方式来“撤销此次盗窃”:

推文译文:@cz_binance (赵长鹏) :如果你公开那些被攻击的币的私钥 (或者这些密钥的一部分),你就可零成本去中心化地协调一次区块重组 (reorg) 来撤销盗窃行为。
这显然使币安考虑进行区块重组,据币安 CEO 赵长鹏所说,在与一些人进行了协商之后,重组计划流产了:

推文译文:@cz_binance (赵长鹏) :如果你公开那些被攻击的币的私钥 (或者这些密钥的一部分),你就可零成本去中心化地协调一次区块重组 (reorg) 来撤销盗窃行为。

在本文中,本文作者 (Jimmy Song) 将详细介绍可能的链重组背后的激励因素。在某种意义上,Jimmy Song 已经通过之前的推文计算过币安如果进行区块重组将需要花费多少成本:

1/ 通过数学计算对58个区块进行重组的成本 (根据目前已经得到的有关币安被盗交易的确认哈希值):

最低成本:58*12.5 BTC = 725 BTC (假设每名矿工在重组的新链上获得大致相同的交易费用,并且100%的矿工都同意重组,备注:当前比特币区块挖矿奖励是12.5 BTC)

2/ 但是如果只有 75% 的矿工同意重组,这将平均需要 116个 区块 (相当于币安需要补偿给这些75%的矿工的挖矿奖励大约是 1,450 BTC,即116*12.5=1,450) 以此来赶超当前的主链。同理,如果 60% 的矿工同意重组,则平均需要 290 个区块 (需要补偿给这些矿工的挖矿奖励为 3,625 BTC) 来赶超当前的主链;如果 55% 矿工同意,则需要 580个区块 (需要补偿给这些矿工的挖矿奖励为 7,250 BTC)。

3/ 由于 7,250 BTC >7,000 BTC,因此至少需要 55% 的算力 (矿工) 同意链重组。如果重组的区块数超过58个,则需要的算力至少为 60%;如果重组的区块数为116个,则需要至少 65% 的算力;相应地,174个区块需要至少 70% 的算力,232个区块需要至少 75% 的算力。假设所有矿工都同意重组,那这个成本就会迅速增加。

4/ 但对于任何选择重组而放弃原始主链的矿工来说,也存在很大的风险,因为这大大增加浪费算力的风险,而这些算力本可以有效地用于开采原先那条更长的主链。

5/ 而跟据矿工对这一风险收取的额外费用,意味着作出重组的决定的时间要比 232 个区块产生时间短的多。如果重组,将最终从黑客手里拿钱付费给矿工。币安并未从中受益太多。

6/ 损失最小仍为725 BTC,这仍是一个不小的变化。

7/ 币安受到时间和风险的双重挤压。每一个新的区块都是另一个需要被赶超的区块,最低成本为12.5 BTC。要与现有的挖矿池迅速协调起来 (进行重组) 可能并不容易。单是达成协议可能就需要超过一天(144个区块)。(备注:当前比特币区块链平均每10分钟产生1个区块,24小时则是144个区块)。

下文中,作者将继续对重组后果进行更全面的讨论。

分歧

在下方的推文中,可以看到 Ari Paul (区块链投资公司 BlockTower Capital 的投资总监) 和 Adam Back (密码朋克,区块链初创公司 Blockstream 联合创始人) 就是否进行重组存在分歧:

Adam Black (下) 推文译文: 比特币重组是不会发生的。我对任何比特币领域、矿工或者是开发者会考虑重组表示怀疑。想想2014年 (Mt. Gox) 遭遇的4.73亿美元损失,2016年 Bitfinex 被攻击导致7,200万美元损失,还有2019年币安的4,000万美元损失等等,(重组)#都没有发生

Ari Paul (上) 推文译文:最后一个想法的灵感来自于 Adam Back (但我不同意他的观点)。过去的数据在这里是没有用的。激励重组是一个很难协调的问题,而相当简单的新技术也许就能解决这个问题。

本质上,Adam 认为这样的重组不会发生,Ari 则认为激励措施可以使重组成为可能。那谁是对的呢?这就是我们需要进行一些博弈论分析。让我们从最基本的场景开始:

一个简单的模型

让我们假设一个非常简单的模型,其中 100% 的算力 (矿工) 都愿意帮助币安进行区块重组。

这是最容易分析的场景。我们假设币安与每一个矿池取得了联系 (虽然这不太可能),并就每一个矿工的赔偿金额达成协议 (虽然一些矿工可能同意,但另一些矿工不太可能同意),并达成共识。我们假设目前没有人不同意 (虽然这极不可能),也没有人会建立一个备用矿池来继续开采当前这条更长的主链。

首先,让我们看看补偿矿工的合理金额是多少。假设一个矿工拥有 10% 的网络算力,并且此次攻击之后要对100个区块进行重组,这就意味着该矿工将要放弃自己已经在原始链上挖出的那10个区块的奖励 (即 100*10%=10) 和相应的交易费用,也即放弃 125 枚 BTC (即 10*12.5=125) 以及相应的区块交易费用。

(备注:区块重组(reorg)也即交易回滚,只要有超过51%算力,在盗币交易区块前,重新开始挖一个分叉,并且只剔除掉那笔被盗交易 (和后续的交易),正常打包原链上的其它交易,那在新分叉长度超过原来被盗链后,就会发生区块重组。重组可以简单理解为:新分叉覆盖了原被盗链,效果是:在不影响其它交易的情况下,单独回滚那一笔盗币交易。)

你也许会认为,该矿工将能够在那条重组的链上挖矿并获得大约10%的区块奖励,这样就可以抵消了,但事实并非如此。因为该矿工如果在区块重组的这段时间内,他本来就可以通过自己的算力在原始的那条主链上继续挖矿并获得10%的区块奖励 (以及交易费用),同时不用放弃之前在原始链上已经挖出的那10个区块的奖励 (以及交易费用), 这就意味着该矿工会因为帮助币安进行区块重组而损失至少 125 枚 BTC。

因此,帮助币安重组的矿工会要求币安将这些矿工在原始链上已经挖出的区块的奖励  (以及交易费用) 补偿给他们。在这个场景中,假设每个区块有 0.5 个 BTC费用,也即总共需要补偿给这位拥有10%算力的矿工 130 枚 BTC (即 125 + 0.5*10=130)。

这还不是全部!此外还存在风险溢价 (risk premium),以防出现问题。如果除了这个拥有10%算力的矿工之外,没有其他人愿意使用币安的那条新的重组链,那就浪费了这名矿工本来可以用于对原始链进行挖矿的算力。

如果重组的努力没有成功,币安将不得不同意要么补偿这种溢价风险,要么承担被浪费的算力带来的损失。这将是补偿的一个重要部分,但是为了让本文简短易懂,我们暂时忽略这方面的因素。

因此,如果币安在盗窃后开始试图重组 100 个区块,他们将不得不支付 1,300 BTC 的成本 (即 100*12.5+100*0.5=1,300,其中 12.5 是比特币链的区块奖励,0.5 是矿工每挖出1个区块之后能获得的交易费用),以此来回收被盗的 7,000 BTC,也即币安能挽回 5700 BTC。从币安的角度来看,你可以认为这是一个理想的场景,因为他们可以挽回一大笔钱。

这种情况的后果是什么?最明显的是,这样的事情将证明比特币是中心化的,因为如果币安可以强制对这100个区块进行重组,任何其他足够强大的实体也都可以做同样的事情。

这将会导致许多双花 (double spending) 的尝试,而且任何在这100个区块中进行了交易的人,都将不得不为了弄清楚到底发生了什么事情而劳心费神。事实上,通过重组有可能会导致出现比当前损失的 7,000 BTC 更大规模的双花问题!对于在比特币网络上进行交易的所有人来说,这都将造成重大的干扰,因为考虑到币安本来能够做到的事情,没有人会接受3-6次的交易确认次数。

换句话说,交易所、商家、用户都至少要承受很大的头疼,更糟的是,要处理更多的痛苦来应对可能的双花问题。

等等,我们还没讲到小偷(黑客)会做什么呢!

因此,重组的情况是非常不可能的,因为所有在这种情况下会经历痛苦的人都会加以抵抗。

一个更有争议的选择

重组将会带来一次受争议的分叉和一场争夺成为更长链的竞争。拥有55%的算力对这100个区块进行重组,并赶超当前的主链,这意味着需要大约在新链上挖出 1,000 个区块 (这种情况下需要2周时间)。这个数字的变化幅度也相当大,在这个场景中,不管是需要挖出 500 个区块还是 1,500 个区块都不足为奇。

即便是拥有 99% 的算力,也需要在新链上挖出 101 个区块 (约需要 20 个小时)。(备注:当前比特币链平均约每10分钟挖出一个区块,因此101个区块所需时间约为20小时)

在这种情况下,原始主链和重组的新链都希望吸引对方的矿工。原始的那条主链更具优势,因为这条链在开始竞争的时候就领先了100个区块。

支持原始的那条主链的是诸多不想要对这100个区块进行重组的交易所、商家、用户。他们都有可能会补偿原始主链上的矿工。他们可以轻易地补偿矿工:在原始主链上以一笔高手续费花费一个 UTXO (未使用交易输出),而这个 UTXO 只在原始主链上有效。如果这笔手续费足够高,那很多矿工都会被诱惑转而在原始主链上挖矿。

这里需要指出在原始主链上还有一个特殊的用户——就是发起攻击的黑客。他可能也会发起类似的交易 (涉及被盗交易的 UTXO 就可以),以此在原始的主链上通过更高的手续费来补偿矿工。

另一方面是币安。币安必须与所有这些交易所、商家以及用户进行斗争,更不用说还要与发起攻击的黑客进行斗争了。

黑客已经从币安盗取了 7,000 BTC,因此黑客可以将这个金额全部用于激励矿工继续在原始主链上挖矿,组织区块重组。

相比之下,币安必须花费 1,300 BTC + 黑客为了阻止重组而愿意花费的金额+其他交易所/商家/用户用于阻止重组而愿意花费的金额。这显然是一场失败的斗争。除非币安认为值得花费 1,300 BTC 来惩罚这个黑客 (或者 13 BTC * 被盗交易的确认次数),否则重组并不对币安有利。

总结

还存在更复杂的情况,尤其是还有很多离线采矿设备,但所有这些都很容易分析。黑客可以激励矿工,因此所以对币安来说,这是一场失败的战斗,币安必须承担重组每一个区块以及在此次盗窃中损失的资金。

就像一场旷日持久的诉讼实际上只对律师有利一样,在区块重组方案中唯一受益的人就是矿工。这些钱通过有争议的交易 (来自币安或者黑客) 流向矿工。从深层次上讲,这就是比特币协议的设计初衷,改变它的成本非常高昂。

人们不去尝试重组是有原因的,即使是在大规模盗窃之后也是如此。重组不仅伤害了盗币者,也伤害了其他人。存在一个巨大的集体动机不去改变比特币的交易历史。

参考链接:

https://medium.com/@jimmysong/reorg-scenarios-binance-hack-edition-849fc7e7df07

作者 | Jimmy Song

编译 | Jhonny

相关资讯Relevent