OKCoin

比特币出了问题

He1l_Q 发布在 比特币 34 8731

比特币出问题了。并且不是浅层的,而是根本性的在核心协议层上的麻烦。我们在这里不是在谈论一个简单的缓冲溢出,或者一个可以被轻松修补上的糟糕API设计;相反,这个问题是整个比特币工作原理所固有的。所有其他的基于比特币理念的加密货币或者方案,包括Litecoin、Namecoin、以及所有灵感来自比特币的其他货币,都出了问题。mcduck1

特别是在一份我们在arXiv上发表的论文中,Ittaly Eyal和我概述了一种攻击方式,通过这种攻击,少数的矿工就可以获得超出他们应得份额的收入,并且数字不断增长直到他们成了多数。当触及这一时间点时,比特币的价值主张就崩溃了:该货币被单个实体所控制;它不再去中心化;掌握控制权的实体可以决定谁能参与到挖矿中来,以及哪比交易可以被处理,并甚至能够随意回滚交易。这样的雪球般越滚越大的崩溃并不需要一个居心不良的邦德式的坏蛋来启动;它可以作为人们尝试通过挖矿的努力挣得更多的一点钱的共同努力的结果而发生。

传统观点长期以来认为只要多数矿工是诚实的(这里说的诚实,我们是指他们尽职的遵守化名中本聪的那位提出来的协议。),比特币就能安全的抵抗成群的相互勾结的矿工的威胁。我们的论文证明那一说法是错误的。我们证明了,在当下,任何采用我们的攻击方法的节点群组都将成功挣得比他们应得份额更多的收入。我们还证明了一条新的可以让诚实的大多数的声明无效的底线:在最好的情况下,至少要有2/3的参与者节点是诚实的,才能成功抵抗我们的攻击。但取得这一2/3的底线在实践上是很困难的。我们描述了一个容易部署的对协议的实用补丁,只要3/4的矿工是诚实的,就可以抵御攻击。

我们需要比特币社区的帮助以部署这一补丁以使得比特币生态系统能够变得更加强壮,至少可以低于算力低于全网算力25%这一阈值的攻击。但是,就算部署了我们的补丁,也还有一个问题:现在有矿池占据着超过25%的全网算力,并且,在过去曾经有矿池的算力占比超过了全网算力的33%。我们需要比特币社区意识到并共同努力以保证没有矿池能够超过那个阈值。整个系统会进入一个易受攻击的状态的可能性,将阻碍比特币更广泛的为人们所接受。

如果想要一份对这种攻击手法的精确的全解析,你可以直接阅读这篇研究论文,尽管它可能有点洗练且枯燥无味。在这篇文章的余下部分,我们将为非铁杆参与者们勾勒出这个攻击手法,读完全文,任何人都应当能明白我们的攻击手法背后的直觉,添置装备以通过挖矿获得更高的收入,并获取掠夺这种货币所需要的工具。为了达到这一效果,我们需要一点点的关于比特币工作原理的背景知识。如果你对比特币挖矿熟悉,那么你可以跳过下一段对攻击原理的描述。如果你是一名对技术不感兴趣的比特币用户,你可以直接跳过到最后的关于影响的章节。

区块链mcduck2

比特币成功背后的核心概念是一个用以维持一本全球性的总账的去中心化协议,它被叫做区块链。区块链记录着比特币地址之间的交易,追踪着每一个比特币转手的举动。这样的追踪确保了没有人可以双花(double-spend)一个币,因为总账使得一名用户是否发送出了比他挣得的更多的比特币变得太明显。比特币追踪的特别方式,也使得交易记录不可被变更;一旦一笔比特币交易被处理并收录进了区块链,攻击者就很难逆转那笔交易了,所以商户可以在有信心交易不会被逆转的情况下发出货物。

协议通过一个叫做挖矿的流程来实现。简单讲,总账是由一条有序的区块所组成,每一个区块记录着一系列的交易。每个区块都包含了一个密码谜题,这是一个类似于CAPTCHA的难以计算的挑战。矿工自组织成一个松散的分布式网络,他们都同时在尝试在总账上添加一个新的块。为了做到这个,他们需要找到一个密码谜题的答案,谜题是由从总账初始到新区块被添加上去这段时间的内容所决定的。解决密码谜题是个艰难的工作;电脑必须尝试不同的值,并查看他们是否解决了新区块带来的密码谜题。有的人使用GPU来加速这一流程,同时还有其他人投资在了定制ASIC设备上以解决比特币密码谜题。

当然,这一流程不是义务的,因为解决这些密码谜题耗费电力并需要冷却。为了让比特币变得切实可行,矿工们因为他们的辛勤工作而得到补偿。比特币矿工们通过两个机制获得补偿:他们拿走他们贡献给区块链的新区块里面记录着的交易的交易费,同时他们还拿走一整笔币。这一整笔的币就是新创造的比特币,新创造的币的数量基于一个随时间变化的公式。因此,“挖矿”就类似于挖金矿了——每隔一段时间,一名矿工就挖到了一个金块。密码谜题的难度是自动调整的以保证差不多每10分钟就有一个新区块添加到总账上,这保证了整个系统的比特币产出速率是可以被预测的,这也就阻止了通胀并且使得货币的供应更具可预测性。

密码谜题是如此的高难度所带来的好处在于,攻击者想要修改总账变得很困难。比如说,有人想要从比特币商户那里买点东西,商家发货了,然后改变那个区块,这个任务非常的困难:他们需要为那个区块以及随后的每一个区块找到替代性的答案。难度在于,矿工的主体都会在总账的尾端上努力工作添加新的区块,所以一个攻击者在有限的资源情况下,不能指望会为所有的之前的区块找到替代性的答案并追赶上其他的矿工。

现在的矿工们自组织成一个个叫做矿池的小组。一个矿池通常由一批共同合作的节点组成,他们不论什么时候发现新区块都把收入拿出来共享。矿池有点类似于旅馆的共享小费罐,一名矿工撞大运发现了一个密码谜题的答案并拿到一些收入,类似于一名为一大桌高额消费了的顾客提供服务的侍者。从任何给定矿工的角度来看,挖到矿这件事发生的频率相对不是那么频繁,共享这一流程则可以让矿工对于挖矿收入有更好的预测。

攻击mcduck3

诚实的比特币协议假设所有的矿工采取的是一个良性的策略,他们快速并如实的分享挖到的每一个区块。直到现在,每个人都假设这是占优策略;没有其他的已知策略能够为矿工带来更高的收入。

我们的文章证明存在着一个叫做“自私挖矿法Selfish-Mine”的替代性测量,可以使得矿池在伤害整个系统的风险之下获得额外的收入。在自私挖矿法中,矿工把他们的区块发现藏在他们自己的矿池中而不公开,并且在恰当的时候把隐藏着的区块向诚实的矿工们公开,以此迫使诚实矿工们的资源被浪费在最后不是区块链的一部分的区块上面。

以下是它在实践中的实现方法。自私的矿工们就如普通矿工们一样的开始挖矿,工作以找到一个可以链到区块链末端的新区块。就像其他的矿工,他们偶尔会发现一个新的区块并领先于其他的诚实矿工。诚实的矿工会立刻公布这个新的区块并使得其他诚实矿工转到最新确立的区块链末端进行挖矿,而自私的矿工把这个区块藏了起来。

从此开始,有两个事情可以发生。自私矿工可能再次走运,发现另一个区块而增加他们的领先程度。他们将领先其他的诚实矿工两个区块。他们继续把新发现的区块藏起来,并继续工作以扩大他们的领先优势。最后,诚实矿工快要赶上自私矿工的进度的时候,自私矿池公布了它的更长的区块链。结果就是所有的诚实矿工的工作都被抛弃了,并且自私矿工从他们之前的隐秘区块链中得到了收入。

关于收入的分析从这里开始变得技术性了,研究我们在论文中提出的算法和状态机是唯一的公正的办法。但最后的结果是,总的来讲自私矿池通过他们在适当时机的公开(之前隐藏的区块),可以让诚实矿池做过的工作无效化。

攻击的成功率,以及它所能产生的额外收入的数量,取决于自私矿池的规模大小。如果该矿池算力占比低于某一个阈值,它就不会成功。但在当前的实现(自私矿工可以即刻获得利润)之下,这样的阈值并不存在。我们提出的补丁如果被全局性的采用,可以把阈值提高到25%。并且,尽管可能还会有其他的补丁,但没有一个补丁可以把阈值提高到33%以上。也就是说至少要有2/3的比特币矿工是诚实的。以上所有的三个发现(0%、25%、33%)都比之前认为的可以保卫这种货币的50%要低得多。

影响mcduck4

对比特币系统而言,自私挖矿测量有着极其深刻的影响:

  • 自私矿池的成员将比诚实的参与者拿到更多的收入:这意味着理性的利己的矿工(他们通常都在设备上投入了大量的金钱),将会想要加入自私矿工而不是继续遵守诚实策略。
  • 一旦开始并成功,自私矿池的规模将增大:没有任何机制可以对自私矿池施加压力以拆散他们。
  • 自私挖矿对比特币社区是有害的:自私矿工们把每个人都收入都拉低了。自私矿工可以发动攻击,以及一个自私矿池的规模将增长知道它控制了这一货币的事实,对于人们(比如说被比特币去中心化的特性所吸引的Winklevoss兄弟)来说具有相当的威慑力。
  • 这一攻击在当前对于任何规模的矿池都是可行的:任何人都可以在现在成功的发动这样的攻击,并且赚得超过他们应得的收入。
  • 在最好的情况下,比特币也要求至少2/3的矿工是诚实的:之前认为只要多数人是诚实的,比特币生态系统就是安全的。我们的分析说明那一想法是错误的。一个拥有超过全网算力33%的自私矿池,将总是可以挣得超过诚实矿工的收入。
  • 我们提出了一个可用的补丁,只要自私矿池的算力低于全网算力的25%,它就可以保护比特币网络抵御自私挖矿的攻击:这一补丁很容易部署。比特币社区采用它将是个不错的主意。
  • 现在存在着几个可以设想成功发动自私挖矿攻击的矿池:在当下,任何矿池都课程发起成功的攻击。用上我们的补丁之后,之后算力超过25%的矿池可以发动攻击,但现在已经存在着这个规模的矿池了。并且曾经存在过拥有超过33%全网算力的矿池。

 

FAQmcduck5

一些经常被问到的问题:

  • 当一个自私挖矿组织组成的时候,会发生什么?

一旦出现了一群自私矿工,理性的矿工将更愿意加入他们以攫取更好的收入。并且他们的收入将随着组织规模的变大而变得更高。这使得攻击者可以快速的获得多数的算力,而在那个时候比特币去中心化的特性就崩溃了,因为攻击者获得了对所有交易的控制权。

  • 单个矿池控制这一货币的时候,比特币的价值会归零吗?

不。这取决于掌握控制权的矿池如何运营这一货币。但在我们看来对比特币能否为人们所接受的最重要的去中心化特性就丢失了。这对比特币生态系统而言一点也不健康。

  • 这会影响X吗?X是另外一种加密货币。

有可能。它影响着每一个从比特币的区块链概念中获得灵感的货币系统。这包括Litecoin、 PPcoin、Novacoin、Namecoin、Primecoin、Terracoin、Worldcoin、以及其他一堆拥有相似的全局总账概念的货币

  • 这里的核心发现是什么?

我们是第一个发现比特币协议和激励机制不兼容的。协议可以为自私的人群所玩弄。并且一旦系统脱离了每个人都是诚实的欢乐模式,没有力量可以阻挡一个可以控制这一货币的真正的大型矿池的崛起。

  • 自私挖矿现在正在发生吗?

我们没办法确定,但我们认为还没有。我们的论文是第一份公开研究替代性挖矿策略的文章。

  • 那两个阈值是什么情况?是不是2/3的节点必须是诚实的?还是说是3/4?为什么这两个阈值之间有差距。

在当下,阈值是不存在的。部署了我们提出的补丁(使用并且容易部署)之后,阈值升到25%;也就是3/4的矿工必须是诚实的。可能有人能提出进一步提高阈值的补丁,但我们已经证明阈值不会超过33%。

  • 我们是否可以分辨自私矿池和其他的矿池?

不容易。自私矿池可以通过使用一次性的地址来掩饰它的身份。并且尽管自私矿池揭露它之前隐藏的区块的时候,会看起来会有些不同,但分辨谁是真正的第一个发现区块的矿工很困难,因为几乎同时发生的挖到区块将会以不同的顺序抵达主机。

  • 把这一攻击手法公布于众会不会招致什么危险?

保护这一系统抵御自私挖矿攻击的唯一途径就是让每个人改变他们当前的实现。所以我们只能通过公布这一潜在的攻击手法来保卫这一系统。我们选择了不自己发动这样的攻击,因为我们关心这一货币的长期可行性。

  • 比特币还可能是一个可行的货币吗?

可能吧。我们已经证明只要自私矿工的算力低于某一个阈值,他们就不会成功。并且尽管目前这一阈值还不存在(因为不论规模大小的自私挖矿都将立马获得收益),我们已经提出了一个可以把阈值提高到25%的补丁。

原文 http://hackingdistributed.com/2013/11/04/bitcoin-is-broken/

作者 Ittay Eyal 与 Emin Gün Sirer

翻译 He1l_Q

本文如有帮助,请考虑捐助:15X9AMhccjqqPRkhpgraoj7fgdqymW3iSC

欢迎转载,转载时请注明作者翻译者和出处,谢谢支持!

版权声明: by nc" sa 作者保留权利。文章为作者独立观点,不代表巴比特立场。

评论:34

您需要登录后才可以回复 登录|注册
    锐火
    锐火 1018 天前

    实际上……我要说的是…… selfish mining已经在发生了

    +1
    +1
    我要点评
    gamebugs
    gamebugs 1104 天前

    自私者发现了一个合法的块,没有公布,继续寻找下一个合法的块,那么在这个时间段内,如果正义矿工发现了块,并且及时公布了呢?

    +1
    +1
    我要点评
      fifixu
      fifixu 1092 天前

      文章中解释了——自私挖矿者领先了理性挖矿者,当理性挖矿者挖到并公布后,自私挖矿者会用更长的区块链(在这个区块之后加上新的区块)的公布,来使理性挖矿者的公布作废的。不过如果理性挖矿者从挖矿中获得的btc已经用于交易,这些交易是否会全都作废呢?如果是这样的话,只要一次这种自私挖矿行为就会大大的打击比特币的信用的。

      +1
      +1
      我要点评
    张江鲜果直送
    张江鲜果直送 1117 天前

    请教一个问题,矿池的运营者是否能够操纵矿工进行攻击?假设可以,并且假设有人出于盈利以外的目的,胁迫数个大矿池联合起来操纵矿工对网络发动攻击,也会引发价值崩溃。这种可能性存在吗?

    +1
    +1
    我要点评
    天上星╭★
    天上星╭★ 1117 天前

    回复@馒头妖在金宁:别忘了这世界上还会有恐怖分子的存在

    +1
    +1
    我要点评
    Mr_文lJ
    Mr_文lJ 1117 天前

    //@阿than://@睡神白小小: =.=

    +1
    +1
    我要点评
    真聊比特币
    真聊比特币 1117 天前

    认同,限制本身就不自由,不应刻意追求平等,人与人本来就不平等,也不应该过于追求平等,更多倾向自由竞争就好。//@胡翌霖:”启示:把挖矿限制成只能通过CPU运算来进行是个非常糟糕的想法。”

    +1
    +1
    我要点评
    胖三阿
    胖三阿 1117 天前

    还真不习惯

    +1
    +1
    我要点评
    胡翌霖
    胡翌霖 1117 天前

    “启示:把挖矿限制成只能通过CPU运算来进行是个非常糟糕的想法。”

    +1
    +1
    我要点评
    馒头妖在金宁
    馒头妖在金宁 1117 天前

    会有捞一票就走的吧。

    +1
    +1
    我要点评
    长铗
    长铗 1117 天前

    我在11月8日指出,攻击比特币网络引发价值崩溃的损失将远大于加入自私挖矿的所得。所以,在这个动态博弈中,自私挖矿不是一个均衡点http://t.cn/zRl6CBP 现在有人给出了博弈论证明,如果矿工选择了欺骗,那么他将在一个时间段内获得不错的收益,同时余生的报酬都将变糟糕。http://t.cn/8DsC58l

    +1
    +1
    我要点评
    没空解释的NPC
    没空解释的NPC 1121 天前

    手动转发

    +1
    +1
    我要点评
    胡吉阳
    胡吉阳 1125 天前

    非常不错的表述

    +1
    +1
    我要点评
    Author Image
    Really 1125 天前

    算力过于集中确实不是什么好事,所谓理性人假设很多时候不成立,总有人理性,有人疯狂。算力过于集中,增大了挖矿界出现狂人疯子的概率。计算力分散仍然是比特币社区的追求。要将疯子出现的概率降低到足够小才行。

    +1
    +1
    我要点评
    Author Image
    changjia 1125 天前

    资助 0.15BTC
    交易ID a1059b52c0a3a3acae0fa1a9f45649b8b83fdc4143dbb94f0c6ba2738da7b29e

    +1
    +1
    我要点评
    风季灵-btcbbs
    风季灵-btcbbs 1125 天前

    挖出的矿可以隐藏起来不发布,这是个技术问题

    +1
    +1
    我要点评
    天上星╭★
    天上星╭★ 1125 天前

    你要考虑世界上总会有希特勒这样的疯子存在。

    +1
    +1
    我要点评
    瑞波支付
    瑞波支付 1125 天前

    太棒了

    +1
    +1
    我要点评
    曾小普2
    曾小普2 1126 天前

    这个角度的辩解很无力,小规模的自私者才不管这么多,问题总是问题。

    +1
    +1
    我要点评
    无关风月529600
    无关风月529600 1126 天前

    三个人吃个全家桶真的有点压力,可惜你不在。@静如止水love

    +1
    +1
    我要点评
    TonyBitcoin
    TonyBitcoin 1126 天前

    他们的理论就好比控制美元总量的四分之一就能摧毁美国一样。非常非常假设性的东西,完全不懂为什么有人那么敏感//@暴走恭亲王:转发微博

    +1
    +1
    我要点评
    TonyBitcoin
    TonyBitcoin 1126 天前

    他们的理论就好比控制美元总量的四分之一就能摧毁美国一样。非常非常假设性的东西,完全不懂为什么有人那么敏感

    +1
    +1
    我要点评
    Bitcoin酱
    Bitcoin酱 1126 天前

    回复@真的陈二狗:要大量砸钱的攻击其实也就跟51%攻击一个性质了

    +1
    +1
    我要点评

    //@Jayden_曹艺振: //@FashionEmpress:[爱你] cosplay的小法斗

    +1
    +1
    我要点评
    长铗
    长铗 1126 天前

    回复@真的陈二狗:你可以再造一个互联网吗?

    +1
    +1
    我要点评
    真的陈二狗
    真的陈二狗 1126 天前

    回复@长铗:可是这种行为只要砸钱就行,没有门槛,买上一层皮南瓜机,实在不行自己造个西瓜机来不就可以实现了吗

    +1
    +1
    我要点评
    长铗
    长铗 1126 天前

    回复@真的陈二狗:政府在比特币网络不具任何特殊性,他若要控制网络也要像普通矿工一样进行计算。

    +1
    +1
    我要点评
    Author Image
    changjia 1126 天前

    这其实是一个博弈论问题,他假设矿工都是理性利己主义者,追求更高利润会导致这一漏洞像雪球般滚大。但这其实是一种伪理性,因为攻击比特币网络引发价值崩溃的损失将远大于加入自私挖矿的所得。所以,真正的理性矿工不可能加入自私者行列。

    +1
    +1
    我要点评
      Author Image
      一听风雨 1126 天前

      利己主义者只要一次赚到足够的钱,比特币是否崩溃对他们毫无影响,那时他们早已兑换,跑到别的投资项目上了。
      应该赶紧加装补丁,并制定规则把每个矿池控制在算力的25%以下。

      +1
      +1
      我要点评
        Author Image
        胡翌霖 1126 天前

        你是说买矿机或造矿机的人费半天劲把矿机部署好,挖了几下就不管了?一次性矿机?部署矿机需要成本,这是中本聪为比特币51%攻击设置的物理限制,矿机的寿命再短,也不足以支持投机者如此短视。而且,一旦区块链发生分支,除了硬拼,社区也可以随时采取更新补丁等方式,在自私区块成熟前就强行拒认自私者分支(新块的成熟要比交易的验证需求远远更多的确认,时间长到足以开一个研讨会来确定应对方案。),最终自私矿工可能一无所得。而且,不仅诚实者会抵制自私者,另一些自私者也可能各自为政,互相干扰,最终自私者失败的风险非常高,即便成功也不过是毫微之利而已,目光稍微长远点的理性自私者也不会如此冒险。

        +1
        +1
        我要点评
          Author Image
          达鸿飞 1125 天前

          问题就出在这里。

          如果比特币归根结底要依赖于少数几个几十个挖矿者的经济理性,那么设计一套工作量证明的必要性就减弱了许多。

          +1
          +1
          我要点评
        Author Image
        changjia 1117 天前

        这是一次动态博弈,不是决策一次就结束了。这篇文章给出了子博弈完美均衡的解释:http://www.8btc.com/cuniculais-game-theory-primer-for-computer-scientists-invovled-in-bitcoin

        +1
        +1
        我要点评
    乐子_微博
    乐子_微博 1126 天前

    发表了一篇转载博文 《[转载]国学大师黄宾虹书法》 – http://t.cn/zRl6C1L

    +1
    +1
    我要点评
    长铗
    长铗 1126 天前

    关于自私挖矿攻击的文章终于翻译好了!http://t.cn/zRl6CBP 这其实是一个博弈论问题,他假设矿工都是理性利己主义者,追求更高利润会导致这一漏洞像雪球般滚大。但这其实是一种伪理性,因为攻击比特币网络引发价值崩溃的损失将远大于加入自私挖矿的所得。所以,真正的理性矿工不可能加入自私者行列。

    +1
    +1
    我要点评