双花

双花

Dash 也要被算力攻击?谁来保护 PoW 区块链

攻略blockbeats 发表了文章 • 2019-01-17 10:31 • 来自相关话题

达世币(DASH)是一款去中心化的加密数字货币,基于比特币的源代码改写而成。它的即时支付技术,还有不错的匿名性,让它在加密货币圈子里迅速走红。不仅如此,达世币主节点能够回馈投资者 10%+的年返利,并且对每月的预算提案进行投票。

但与此同时,这样一款基于 PoW 共识机制的区块链系统,其安全性却薄若蝉翼,随时有可能被攻陷下来。简单来说,算力下降的情况下 PoW 区块链将暴露在「51% 算力攻击机制」风险之下!

达世币的缔造者,埃文·达菲尔德,与近二十人所组成的「核心团队」,当然也知道这一风险,马不停蹄的正在设计一种名为 Chainlocks 的防御机制。前不久刚刚发生 51% 算力攻击的以太经典区块链正在讨论防范算法,BCHABC 也有类似的机制。

这似乎是一场分秒必争的游戏,赶在引信被燃尽之前,将炸弹拆除。

事实上,在 ETC 发生双花攻击之后的这段时间内,大量有关算力攻击的讨论甚嚣尘上。如,Reddit 论坛上的一位网友就发出了这样的一个热帖,迅速引来了无数网友的热议,他的大致意思是:

目前达世币的算力已经严重的集中于 NiceHash (世界上最大的加密货币挖矿算力市场)这里。如果达世币不尽快推出他们设计已久的安全机制 Chainlocks,那么针对达世币的一次「51% 攻击」将很快出现!跟达世币有关的服务的经营者们可得小心了!



至于,「51% 攻击」到底是怎样一回事?而「Chainlocks」防御机制究竟是怎样起作用的?

Reddit 论坛上的用户所发出的警告信是这么说的:

以下是 Reddit 最多讨论的原帖翻译:

开门见山,让我首先来证明一些观点。

我碰巧发现了「有关 ETC 51% 算力攻击」的一些真相,具体来说就是 Nicehash 已经一家独大,并且具备了颠覆区块链基本安全性的能力了!

因为,Nicehash 目前拥有 DASH 总计哈希值的 70%。你可以通过这个链接看到相关数据的对比。(Nicehash 拥有 1390 TH,而总的哈希值为 1790 TH)。

这就是我要说的第一个问题,它太不同寻常了,一般来说 Nicehash 占有 Pow 代币的 10% 到 20% 的的算力,就已经对 PoW 代币中一些规模较小的分叉币构成了安全威胁。

上面只是谈到的第一个问题。

第二个问题是:我们应该来去检查一下矿池。如果算力是导向到一些大家都知道的,而且受到信任的矿池上去,这其实就构不成什么问题。但不幸的是,事实恰恰相反。这个网站揭示出:1790TH/S 的算力中,只有 560TH/S 是来自于比较有声誉的矿池的,而其他的算力都来自一些我们根本不知道的,来历不明的地方,这同样也是极为不寻常的情况。

Dash Explorer 网站展示出来了到底是哪些地址正产出挖矿奖励。你在上面可以看到有四个未知的「大家伙」正在收集所有来历不明的算力。我通过这个区块探测工具(https://dashradar.com/explorer/tx/31de30b48c9263544724c0e607a9cb1f7bf05dc2961119827c52571334506172)这一笔非常特别的交易,包含了上面四个地址中的三个,而这更意味着实际上这三个源源不断收集算力的矿池,其实都是被一个潜藏在「黑暗」中的实体(或机构、或团体、或个人)所控制。这还不是最为致命的,最值得让人担心的是:这三个矿池拥有着53% 甚至更多的算力。这三个地址分别是:

XbUutDsgJbf7Sjjq4omhusNtkT8ih1d7oQ

XkNPrBSJtrHZUvUqb3JF4g5rMB3uzaJfEL

XeMPcKeVDN9bkECGDC7ggtf9QsX5thgKAx

这三个矿池地址是从半年前,也就是去年 9 月份就开始积攒算力的,而且我认为第四个位置的矿池同样也属于这个隐藏在黑暗中的实体,哪怕它是独立于这一个区块链的。因为它几乎也是在同一时间,开始疯狂收集算力。

我们能从中得出什么结论呢?结论只有一个:

ASIC 矿机是区块链之癌。或者保守点说,对于那些只要规模比 BTC 要小的任何一种代币来说,就是如此。它们的安全性压根得不到保证,完全比不上我们现在所熟悉的网络。

而更明确点儿说:Nicehash 也是癌细胞。只要有一个人愿意,他可以立刻针对 DASH 收买大量的算力,只要达到 51% 的比例,那么他就可以为所欲为了。

不管是谁拥有这些矿池,他们挖出来的 DASH 绝对不会停在他们手上一秒,可以说下一秒钟,你就可以在交易所看到它们的身影了。

所以,在 DASH 配置自己的 Chainlocks 的时候,其实已经有人在此之前准备好「51% 算力攻击」了。只要你想去做,现在就可以开始干。任何人,只要你所提供的服务跟 DASH 有关,那么千万不能放松警惕,只要它没有做出相应的调整以及进一步的做出风险补救措施,切不可掉以轻心。



这一篇帖子 Po 出之后,一石激起千层浪。底下纷纷有小伙伴这样回复道:

一位叫 Zoden 的小伙伴就说:「不管是达世币,还是 ETC,它们都是排名前 20 的知名代币,如果它们都要被攻陷了,那么比特币离覆灭的那一天就不远了,整个加密货币圈子就要完蛋啦!」

底下有一个 tranceology3 的人冷言冷语的针对上面观点回复道:「是 POW 要完蛋了,谢谢!」

Savik519 说道:「我估计很快我们就要亲临 51% 攻击了,在不远的将来,将有越来越多的代币会暴露在风险之下。」


Dash 官方回应 51% 算力攻击


达世币的算法是否真的如帖子里面说的那样,可以花钱买得到吗?DASH 真的会遇到 51% 算力攻击问题吗?

首先,我们要明确一个事实:达世币目前是使用的 X11 算法,而要挖矿的话,唯一明智的做法就是使用 ASIC 矿机。

所以几乎所有的矿机目前都在满负荷的运转挖达世币,没有任何闲置的算力资源。当然,你是可以购买其中的一小部分算力,但是你买不了多少的,除非你完全不差钱。没有人会傻到用自己的 AISC 芯片去攻击整个加密货币链,尤其是像达世币这种,只有规模较小的代币更容易置于这样的风险之下。

一句话总结就是:理论上可行,但是现实中操作起来难度极大。

面对网友的质疑,Dash 团队很快就在 Telegram 群内回应:






管理员称:达世币在这五年的发展过程中,遭遇过这样的质疑和挑战已经数百次了,但是什么事情都没有发生过。

戏剧化的臆想遍地开花,事实上,达世币的 Chainlocks 几天之后就会推出 v0.13 版本,而紧随其后就会上 v0.14 版本!


Chainlocks 能保区块链安全吗?


上面的各种讨论的对象其实就是两个:我们刚刚讨论的是有可能网络遭受攻击的安全隐患,也就是「矛」的「51% 算力攻击」,那么大家津津乐道,翘首以盼的「盾」Chainlocks 又是怎样一回事呢?

达世币核心开发成员 Alexander Block 在达世币的官方博客上面做了一番非常细致的技术解释:

长效主节点群 Long Living Masternode Quorums (LLMQs)这个概念的出现,使得能够实施针对 51%挖矿攻击的全新保护机制。这种保护机制就被称为 ChainLocks。

ChainLocks 是按照「优先看到」规则进行可验证的网络范围内的测量 / 投票。每个区块都会选择几百个主节点组成的 LLMQ,每个参与成员都会选择当前高度处扩展活跃的链,对第一个区块进行签名。如果足够多的成员(例如 > = 60%)看到的第一个区块是相同的,他们就可以创建 P2P 消息(CLSIG),将其向网络中的所有节点传播。

有效的 CLSIG 消息的存在表明 LLMQ 的大多数成员(例如 60%)已将指定的区块视为第一个区块。由于 LLMQ 是由 Dash 的主节点集(当前大约 4,900 个节点)随机组成的,因此首先在网络中看到此区块分布的节点在统计上与 LLMQ 内部是相同的。这意味着,如果 60%的 LLMQ 成员首先看到该区块,那么网络上大约 60%也应该会先看到它。

如果节点收到有效的 CLSIG 消息,它应该拒绝在 CLSIG 消息中所有在同一高度没有匹配指定的区块。这使得对活跃链的决策快速、简单且明确。使得在该区块下的分叉变得不可能,也让 51% 算力攻击变得不可能,区块链网络看到不符合规定的区块,直接拒绝,保持了主网的统一性。

对于普通用户和商家而言,最重要的影响是,受 ChainLocks 保护的区块进行第一次链上确认后,则视为交易已经确认。由于无法重组已签名 / 锁定的区块,因此交易无法从链上被抹去。

对挖矿经济也产生了影响,它消除了矿工进行链分叉的所有诱因。基于私密或个人挖矿的攻击变得不再可能,因为这些攻击需要依赖于矿工隐瞒长时间的私密链。






PoW 区块链的安全谁来保护?


Dash 似乎有了防护方案,那么其他链怎么办?

ETC 的祸患似乎早在 3 年前就已经被人发现了,这是一只没有得到解决而已。早在 2016 年 8 月份(ETH、ETC 硬分叉后一周),ETHNews 记者 Brianne Rivlin 就发文称一个名叫 51Pool 的矿池准备发动 51% 算力攻击来摧毁 ETC 区块链,不过这件事情并没有发生。

但是该来的还是来了,如今 ETC 的 51% 算力攻击已经发生,ETC 团队给出的解决方案是:开发预警方案、建议用户等待 2500-5000 个区块确认、等待 ETH 升级到 PoS 算法后算力来到 ETC、采用 Keccack256 算法来防止矿机算力等。

其中,第一个方案还没有定论,第二个方案是用户自保,第三个方案是等待 ETH 转向 PoS,然后算力来到 ETC 之后算力提升,这样 51% 算力攻击难度就提升,最后一个方案其实已经被攻破,因为市场上早就有了 Keccack256 算法的矿机。

最著名的要数 BCH 硬分叉导致近半个多月 BCH 用户的资产安全问题和资产价值巨幅波动的问题,同样 BCH ABC 和 BCH SV 都面临了来自对方的算力攻击威胁。在 11 月份的客户端更新中,ABC 团队加入了 checkpoints 功能来防止 SV 对区块进行重组。

早在 2010 年,中本聪发布比特币 0.3.2 版本时就提到,「增加检查点(checkpoints)的可以起到安全作用,即便有人有超过 50% 的算力,他也无法回到昨天去对区块链进行逆转。」

发生 51% 算力攻击,这似乎是几乎所有算力流失、用户流失的 PoW 区块链都在遇到的问题。我们寄希望于开发者去解决这些问题,但却发现这个世界的开发者缺乏定性,一句「共识不合」就可以分叉干别的去了。

如果不靠社区或者开发团队去维护安全性,那么就只能靠社区共识了。然而,这 2 年的各种故事告诉我们,共识的建立是脆弱的,共识的消失也是迅速的。 查看全部
Berikut-3-Tips-Sukses-Menambang-Dash-Coin-yang-Bisa-Anda-Coba.jpg

达世币(DASH)是一款去中心化的加密数字货币,基于比特币的源代码改写而成。它的即时支付技术,还有不错的匿名性,让它在加密货币圈子里迅速走红。不仅如此,达世币主节点能够回馈投资者 10%+的年返利,并且对每月的预算提案进行投票。

但与此同时,这样一款基于 PoW 共识机制的区块链系统,其安全性却薄若蝉翼,随时有可能被攻陷下来。简单来说,算力下降的情况下 PoW 区块链将暴露在「51% 算力攻击机制」风险之下!

达世币的缔造者,埃文·达菲尔德,与近二十人所组成的「核心团队」,当然也知道这一风险,马不停蹄的正在设计一种名为 Chainlocks 的防御机制。前不久刚刚发生 51% 算力攻击的以太经典区块链正在讨论防范算法,BCHABC 也有类似的机制。

这似乎是一场分秒必争的游戏,赶在引信被燃尽之前,将炸弹拆除。

事实上,在 ETC 发生双花攻击之后的这段时间内,大量有关算力攻击的讨论甚嚣尘上。如,Reddit 论坛上的一位网友就发出了这样的一个热帖,迅速引来了无数网友的热议,他的大致意思是:


目前达世币的算力已经严重的集中于 NiceHash (世界上最大的加密货币挖矿算力市场)这里。如果达世币不尽快推出他们设计已久的安全机制 Chainlocks,那么针对达世币的一次「51% 攻击」将很快出现!跟达世币有关的服务的经营者们可得小心了!




至于,「51% 攻击」到底是怎样一回事?而「Chainlocks」防御机制究竟是怎样起作用的?

Reddit 论坛上的用户所发出的警告信是这么说的:

以下是 Reddit 最多讨论的原帖翻译:


开门见山,让我首先来证明一些观点。

我碰巧发现了「有关 ETC 51% 算力攻击」的一些真相,具体来说就是 Nicehash 已经一家独大,并且具备了颠覆区块链基本安全性的能力了!

因为,Nicehash 目前拥有 DASH 总计哈希值的 70%。你可以通过这个链接看到相关数据的对比。(Nicehash 拥有 1390 TH,而总的哈希值为 1790 TH)。

这就是我要说的第一个问题,它太不同寻常了,一般来说 Nicehash 占有 Pow 代币的 10% 到 20% 的的算力,就已经对 PoW 代币中一些规模较小的分叉币构成了安全威胁。

上面只是谈到的第一个问题。

第二个问题是:我们应该来去检查一下矿池。如果算力是导向到一些大家都知道的,而且受到信任的矿池上去,这其实就构不成什么问题。但不幸的是,事实恰恰相反。这个网站揭示出:1790TH/S 的算力中,只有 560TH/S 是来自于比较有声誉的矿池的,而其他的算力都来自一些我们根本不知道的,来历不明的地方,这同样也是极为不寻常的情况。

Dash Explorer 网站展示出来了到底是哪些地址正产出挖矿奖励。你在上面可以看到有四个未知的「大家伙」正在收集所有来历不明的算力。我通过这个区块探测工具(https://dashradar.com/explorer/tx/31de30b48c9263544724c0e607a9cb1f7bf05dc2961119827c52571334506172)这一笔非常特别的交易,包含了上面四个地址中的三个,而这更意味着实际上这三个源源不断收集算力的矿池,其实都是被一个潜藏在「黑暗」中的实体(或机构、或团体、或个人)所控制。这还不是最为致命的,最值得让人担心的是:这三个矿池拥有着53% 甚至更多的算力。这三个地址分别是:

XbUutDsgJbf7Sjjq4omhusNtkT8ih1d7oQ

XkNPrBSJtrHZUvUqb3JF4g5rMB3uzaJfEL

XeMPcKeVDN9bkECGDC7ggtf9QsX5thgKAx

这三个矿池地址是从半年前,也就是去年 9 月份就开始积攒算力的,而且我认为第四个位置的矿池同样也属于这个隐藏在黑暗中的实体,哪怕它是独立于这一个区块链的。因为它几乎也是在同一时间,开始疯狂收集算力。

我们能从中得出什么结论呢?结论只有一个:

ASIC 矿机是区块链之癌。或者保守点说,对于那些只要规模比 BTC 要小的任何一种代币来说,就是如此。它们的安全性压根得不到保证,完全比不上我们现在所熟悉的网络。

而更明确点儿说:Nicehash 也是癌细胞。只要有一个人愿意,他可以立刻针对 DASH 收买大量的算力,只要达到 51% 的比例,那么他就可以为所欲为了。

不管是谁拥有这些矿池,他们挖出来的 DASH 绝对不会停在他们手上一秒,可以说下一秒钟,你就可以在交易所看到它们的身影了。

所以,在 DASH 配置自己的 Chainlocks 的时候,其实已经有人在此之前准备好「51% 算力攻击」了。只要你想去做,现在就可以开始干。任何人,只要你所提供的服务跟 DASH 有关,那么千万不能放松警惕,只要它没有做出相应的调整以及进一步的做出风险补救措施,切不可掉以轻心。




这一篇帖子 Po 出之后,一石激起千层浪。底下纷纷有小伙伴这样回复道:

一位叫 Zoden 的小伙伴就说:「不管是达世币,还是 ETC,它们都是排名前 20 的知名代币,如果它们都要被攻陷了,那么比特币离覆灭的那一天就不远了,整个加密货币圈子就要完蛋啦!」

底下有一个 tranceology3 的人冷言冷语的针对上面观点回复道:「是 POW 要完蛋了,谢谢!」

Savik519 说道:「我估计很快我们就要亲临 51% 攻击了,在不远的将来,将有越来越多的代币会暴露在风险之下。」


Dash 官方回应 51% 算力攻击


达世币的算法是否真的如帖子里面说的那样,可以花钱买得到吗?DASH 真的会遇到 51% 算力攻击问题吗?

首先,我们要明确一个事实:达世币目前是使用的 X11 算法,而要挖矿的话,唯一明智的做法就是使用 ASIC 矿机。

所以几乎所有的矿机目前都在满负荷的运转挖达世币,没有任何闲置的算力资源。当然,你是可以购买其中的一小部分算力,但是你买不了多少的,除非你完全不差钱。没有人会傻到用自己的 AISC 芯片去攻击整个加密货币链,尤其是像达世币这种,只有规模较小的代币更容易置于这样的风险之下。

一句话总结就是:理论上可行,但是现实中操作起来难度极大。

面对网友的质疑,Dash 团队很快就在 Telegram 群内回应:

53a9769c13fe1652e9525713c48e9328.jpg


管理员称:达世币在这五年的发展过程中,遭遇过这样的质疑和挑战已经数百次了,但是什么事情都没有发生过。

戏剧化的臆想遍地开花,事实上,达世币的 Chainlocks 几天之后就会推出 v0.13 版本,而紧随其后就会上 v0.14 版本!


Chainlocks 能保区块链安全吗?


上面的各种讨论的对象其实就是两个:我们刚刚讨论的是有可能网络遭受攻击的安全隐患,也就是「矛」的「51% 算力攻击」,那么大家津津乐道,翘首以盼的「盾」Chainlocks 又是怎样一回事呢?

达世币核心开发成员 Alexander Block 在达世币的官方博客上面做了一番非常细致的技术解释:

长效主节点群 Long Living Masternode Quorums (LLMQs)这个概念的出现,使得能够实施针对 51%挖矿攻击的全新保护机制。这种保护机制就被称为 ChainLocks。

ChainLocks 是按照「优先看到」规则进行可验证的网络范围内的测量 / 投票。每个区块都会选择几百个主节点组成的 LLMQ,每个参与成员都会选择当前高度处扩展活跃的链,对第一个区块进行签名。如果足够多的成员(例如 > = 60%)看到的第一个区块是相同的,他们就可以创建 P2P 消息(CLSIG),将其向网络中的所有节点传播。

有效的 CLSIG 消息的存在表明 LLMQ 的大多数成员(例如 60%)已将指定的区块视为第一个区块。由于 LLMQ 是由 Dash 的主节点集(当前大约 4,900 个节点)随机组成的,因此首先在网络中看到此区块分布的节点在统计上与 LLMQ 内部是相同的。这意味着,如果 60%的 LLMQ 成员首先看到该区块,那么网络上大约 60%也应该会先看到它。

如果节点收到有效的 CLSIG 消息,它应该拒绝在 CLSIG 消息中所有在同一高度没有匹配指定的区块。这使得对活跃链的决策快速、简单且明确。使得在该区块下的分叉变得不可能,也让 51% 算力攻击变得不可能,区块链网络看到不符合规定的区块,直接拒绝,保持了主网的统一性。

对于普通用户和商家而言,最重要的影响是,受 ChainLocks 保护的区块进行第一次链上确认后,则视为交易已经确认。由于无法重组已签名 / 锁定的区块,因此交易无法从链上被抹去。

对挖矿经济也产生了影响,它消除了矿工进行链分叉的所有诱因。基于私密或个人挖矿的攻击变得不再可能,因为这些攻击需要依赖于矿工隐瞒长时间的私密链。

d946ebe084cddcdd72c344922a9cce8e.jpg


PoW 区块链的安全谁来保护?


Dash 似乎有了防护方案,那么其他链怎么办?

ETC 的祸患似乎早在 3 年前就已经被人发现了,这是一只没有得到解决而已。早在 2016 年 8 月份(ETH、ETC 硬分叉后一周),ETHNews 记者 Brianne Rivlin 就发文称一个名叫 51Pool 的矿池准备发动 51% 算力攻击来摧毁 ETC 区块链,不过这件事情并没有发生。

但是该来的还是来了,如今 ETC 的 51% 算力攻击已经发生,ETC 团队给出的解决方案是:开发预警方案、建议用户等待 2500-5000 个区块确认、等待 ETH 升级到 PoS 算法后算力来到 ETC、采用 Keccack256 算法来防止矿机算力等。

其中,第一个方案还没有定论,第二个方案是用户自保,第三个方案是等待 ETH 转向 PoS,然后算力来到 ETC 之后算力提升,这样 51% 算力攻击难度就提升,最后一个方案其实已经被攻破,因为市场上早就有了 Keccack256 算法的矿机。

最著名的要数 BCH 硬分叉导致近半个多月 BCH 用户的资产安全问题和资产价值巨幅波动的问题,同样 BCH ABC 和 BCH SV 都面临了来自对方的算力攻击威胁。在 11 月份的客户端更新中,ABC 团队加入了 checkpoints 功能来防止 SV 对区块进行重组。

早在 2010 年,中本聪发布比特币 0.3.2 版本时就提到,「增加检查点(checkpoints)的可以起到安全作用,即便有人有超过 50% 的算力,他也无法回到昨天去对区块链进行逆转。」

发生 51% 算力攻击,这似乎是几乎所有算力流失、用户流失的 PoW 区块链都在遇到的问题。我们寄希望于开发者去解决这些问题,但却发现这个世界的开发者缺乏定性,一句「共识不合」就可以分叉干别的去了。

如果不靠社区或者开发团队去维护安全性,那么就只能靠社区共识了。然而,这 2 年的各种故事告诉我们,共识的建立是脆弱的,共识的消失也是迅速的。

ETC开发者:算力异常波动或为自私挖矿,与51%攻击无关

资讯8btc 发表了文章 • 2019-01-08 10:30 • 来自相关话题

据巴比特昨日报道,某未知矿池由于掌握了Ethereum Classic(ETC)网络超过51%的算力而引发了社区的担忧。目前ETC开发者已经就这一情况给出回应,认为很有可能是自私挖矿。

ETC开发者发推表示,早前的算力集中并未导致51%攻击,也没有发现双花。而导致这一情况的原因是ASIC制造商Linzhi在测试一批新的1,400/Mh ethash矿机。






与此同时,加密货币交易所Coinbase发文表示其在1月5日“发现ETC区块链出现重组,包含了双花行为”。该交易所已经暂停ETC的充提,目前暂未恢复。

Coinbase还指出,其随后还发现另外8次的重组,同样包含双花,涉及金额达88500 ETC(价值约44.2万美元)。

而在最新发布的一条推文里,ETC开发者表示新矿机测试和Coinbase发现双花,两者均有可能是造成算力异常的原因,并表示“到时候我们就知道了”。






区块链重组指的是,当单个矿工或矿池持有的算力超过了网络中其他参与者,其就能创造新的交易历史。

去年5月,巴西研究者Husam Abboud表示,对ETC网络发动51%攻击所需资金大约“在5500万美元到8500万美元之间”。

截至发稿时,ETC的市值排名在第18位,价格为5美元,24小时跌幅达7.23%。


原文:Ethereum Classic Devs: Hashpower Consolidation on Network Is 'Not 51% Attack'
作者:Ana Alexandre
编译:Wendy 查看全部
740_aHR0cHM6Ly9zMy5jb2ludGVsZWdyYXBoLmNvbS9zdG9yYWdlL3VwbG9hZHMvdmlldy83OTczMWMxNWRlMTE1MTdmMDc4M2EzZTYzMmNhMGZmYi5qcGc.jpg

据巴比特昨日报道,某未知矿池由于掌握了Ethereum Classic(ETC)网络超过51%的算力而引发了社区的担忧。目前ETC开发者已经就这一情况给出回应,认为很有可能是自私挖矿。

ETC开发者发推表示,早前的算力集中并未导致51%攻击,也没有发现双花。而导致这一情况的原因是ASIC制造商Linzhi在测试一批新的1,400/Mh ethash矿机。

201901080205194706.png


与此同时,加密货币交易所Coinbase发文表示其在1月5日“发现ETC区块链出现重组,包含了双花行为”。该交易所已经暂停ETC的充提,目前暂未恢复。

Coinbase还指出,其随后还发现另外8次的重组,同样包含双花,涉及金额达88500 ETC(价值约44.2万美元)。

而在最新发布的一条推文里,ETC开发者表示新矿机测试和Coinbase发现双花,两者均有可能是造成算力异常的原因,并表示“到时候我们就知道了”。

201901080205398130.png


区块链重组指的是,当单个矿工或矿池持有的算力超过了网络中其他参与者,其就能创造新的交易历史。

去年5月,巴西研究者Husam Abboud表示,对ETC网络发动51%攻击所需资金大约“在5500万美元到8500万美元之间”。

截至发稿时,ETC的市值排名在第18位,价格为5美元,24小时跌幅达7.23%。


原文:Ethereum Classic Devs: Hashpower Consolidation on Network Is 'Not 51% Attack'
作者:Ana Alexandre
编译:Wendy

BSV更安全?研究人员上传视频打脸,演示如何在BSV上进行双花

项目8btc 发表了文章 • 2018-12-10 10:28 • 来自相关话题

虽然Craig Wright称Bitcoin SV为最初的比特币(original Bitcoin),但是他的BCH硬分叉并没有像他想象的那样发展,而且似乎这种加密货币并不像他声称的那样安全。

一位研究人员在某视频网站上发布了一个视频,提醒投资者他认为BSV可能会出现双花(double spending)问题。 12月8日发布的视频演示了BSV网络的“零确认交易(0-conf transaction)”如何使任何人都可以双花BSV代币。

比特币现金于2017年8月从比特币的硬分叉中诞生,使用零确认交易(0-conf或Zero-Conf)来实现快速交易。因此,几乎每一个交易都可以在下一个区块中确认。

在视频中演示的多阶段测试中,名为“Reizu”的用户设法在“零确认”中复制BSV代币。视频发布在视频网站Vimeo上,全长大约11分钟。

在这段视频中,Reizu演示了他是如何成功地实施攻击,从而否定了Craig Wright的说法,即比特币SV比分叉前的比特币现金更安全。

这名研究人员发文表示:

“我已经在比特币SV网络上进行了很多次双花。在几个区块挖掘出来以后,我发现正在被挖掘的交易就是那些一直被发送到相同节点的交易。”


除了双花问题以外,Reizu还表示BSV网络“非常中心化”。

当前ABC和SV的竞争还在持续进行中。根据coin dance的数据,截止发稿前,由于ABC算力大幅降低,目前SV的算力为1267PH/s,已经超过ABC的978PH/s,而ABC仅领先SV 3个区块。但是就挖矿利润而言,ABC还是大幅领先:ABC的挖矿利润超过比特币4.4%,而BSV则为BTC的69.88%,为ABC的66.93%。

 
什么是双花?
 

你可能会惊讶地发现,即使在2009年中本聪创建比特币之前,密码学家也多次尝试创建加密安全的数字货币。但是,所有这些尝试都失败了,因为数字货币可以复制并花费两次。 中本聪的比特币已经能够存活十多年,因为它解决了“双花问题”。


原文:https://coindoo.com/researcher-warns-investors-of-possible-bitcoin-cash-sv-double-spending-attack/
作者: Solomon Magawi
编译:Apatheticco 查看全部
201812100121382552.jpg

虽然Craig Wright称Bitcoin SV为最初的比特币(original Bitcoin),但是他的BCH硬分叉并没有像他想象的那样发展,而且似乎这种加密货币并不像他声称的那样安全。

一位研究人员在某视频网站上发布了一个视频,提醒投资者他认为BSV可能会出现双花(double spending)问题。 12月8日发布的视频演示了BSV网络的“零确认交易(0-conf transaction)”如何使任何人都可以双花BSV代币。

比特币现金于2017年8月从比特币的硬分叉中诞生,使用零确认交易(0-conf或Zero-Conf)来实现快速交易。因此,几乎每一个交易都可以在下一个区块中确认。

在视频中演示的多阶段测试中,名为“Reizu”的用户设法在“零确认”中复制BSV代币。视频发布在视频网站Vimeo上,全长大约11分钟。

在这段视频中,Reizu演示了他是如何成功地实施攻击,从而否定了Craig Wright的说法,即比特币SV比分叉前的比特币现金更安全。

这名研究人员发文表示:


“我已经在比特币SV网络上进行了很多次双花。在几个区块挖掘出来以后,我发现正在被挖掘的交易就是那些一直被发送到相同节点的交易。”



除了双花问题以外,Reizu还表示BSV网络“非常中心化”。

当前ABC和SV的竞争还在持续进行中。根据coin dance的数据,截止发稿前,由于ABC算力大幅降低,目前SV的算力为1267PH/s,已经超过ABC的978PH/s,而ABC仅领先SV 3个区块。但是就挖矿利润而言,ABC还是大幅领先:ABC的挖矿利润超过比特币4.4%,而BSV则为BTC的69.88%,为ABC的66.93%。

 
什么是双花?
 

你可能会惊讶地发现,即使在2009年中本聪创建比特币之前,密码学家也多次尝试创建加密安全的数字货币。但是,所有这些尝试都失败了,因为数字货币可以复制并花费两次。 中本聪的比特币已经能够存活十多年,因为它解决了“双花问题”。


原文:https://coindoo.com/researcher-warns-investors-of-possible-bitcoin-cash-sv-double-spending-attack/
作者: Solomon Magawi
编译:Apatheticco

矿工大量关机、大矿场整合或将使比特币面临双花攻击威胁

资讯odaily 发表了文章 • 2018-12-06 11:12 • 来自相关话题

但人们还是不习惯应对这种攻击方式。

比特币熊市直接地对矿工造成了影响。

从11月开始,比特币的价格就开始呈现自由落体式下降。截至发稿,火币行情报价 3878.72 美元。而支撑矿工盈利的比特币价格应该要超过 4500 美元。

个体散户矿工难以为继,纷纷关机。据彭博报道,独立调查机构 Autonomous Research LLP 的数据显示,目前至少有 10 万名矿工已经停产。研究机构 Fundstrat Global Advisors LLC 估计,自 9 月初以来,已经有大约 140 万台服务器被关闭。

研究机构 Diar 一项报告指出,尽管今年矿业收入超过 5 亿美元,但两家主要矿商 BTCC Pool 和 Giga Watt 已申请破产,后者负债约 1000 - 5000 万美元。蚂蚁矿机 S9 的挖矿成本和批发电力成本在最佳情况下,矿工需要 30 - 45% 的毛利率才能保持盈利。今年 8 月 - 11 月,矿工的平均毛利率约为 56% 。

由于大型采矿企业的电力成本较低,利润空间相对较大。比特币挖矿已经进入了财力雄厚的大玩家时代。

随着日益激烈的竞争,大矿场将面临整合以适应生存,但这种整合将可能使数字货币市场面临 51% 的双花攻击。

Group-IB 发布的一份新报告显示,恶意矿工今年利用一种“工作证明”( PoW )共识算法,针对较小的加密货币项目发起 51% 的攻击,迄今已获得 1950 万美元的利润。

51% 攻击,又被称为 Majority attack 。这种攻击是通过控制网络算力实现双花。如果攻击者控制了网络中50%以上的算力,那么在他控制算力的这段时间,他可以将区块逆转,进行反向交易,实现双花。

51%攻击可以由一名拥有大量算力的矿工或一组矿工组成的一个采矿池进行,控制 51% 的算力本身并不一定是攻击,除非有意使用此优势。

比特币黄金和ZenCash此前都曾遭遇过 51% 攻击,使他们的投资者损失了数百万美元。

为了让矿工执行攻击,他们必须首先牺牲网络通常奖励他们的利润丰厚的收入来合法地处理加密货币交易。攻击比特币的区块链并不便宜,但随着加密货币市场价格下跌,“51%攻击”成本也出现下降。根据Crypto51 的数据,目前每小时攻击成本是 300,067 美元。






2018年51%攻击频繁发生,但Awake Security的研究员 Troy Kent 本月早些时候在纽约InfoSecurity北美会议上发表他的研究结果表示,黑客通过加密挖矿工具进行网络攻击,尽管这是一种类似于僵尸网络或特洛伊木马那样的合法威胁,但人们还是不习惯应对这种攻击方式。另外,他建议公司需要实现基于行为和分析的更先进的检测方法。 查看全部
mining-attack-768x768.jpg

但人们还是不习惯应对这种攻击方式。

比特币熊市直接地对矿工造成了影响。

从11月开始,比特币的价格就开始呈现自由落体式下降。截至发稿,火币行情报价 3878.72 美元。而支撑矿工盈利的比特币价格应该要超过 4500 美元。

个体散户矿工难以为继,纷纷关机。据彭博报道,独立调查机构 Autonomous Research LLP 的数据显示,目前至少有 10 万名矿工已经停产。研究机构 Fundstrat Global Advisors LLC 估计,自 9 月初以来,已经有大约 140 万台服务器被关闭。

研究机构 Diar 一项报告指出,尽管今年矿业收入超过 5 亿美元,但两家主要矿商 BTCC Pool 和 Giga Watt 已申请破产,后者负债约 1000 - 5000 万美元。蚂蚁矿机 S9 的挖矿成本和批发电力成本在最佳情况下,矿工需要 30 - 45% 的毛利率才能保持盈利。今年 8 月 - 11 月,矿工的平均毛利率约为 56% 。

由于大型采矿企业的电力成本较低,利润空间相对较大。比特币挖矿已经进入了财力雄厚的大玩家时代。

随着日益激烈的竞争,大矿场将面临整合以适应生存,但这种整合将可能使数字货币市场面临 51% 的双花攻击。

Group-IB 发布的一份新报告显示,恶意矿工今年利用一种“工作证明”( PoW )共识算法,针对较小的加密货币项目发起 51% 的攻击,迄今已获得 1950 万美元的利润。

51% 攻击,又被称为 Majority attack 。这种攻击是通过控制网络算力实现双花。如果攻击者控制了网络中50%以上的算力,那么在他控制算力的这段时间,他可以将区块逆转,进行反向交易,实现双花。

51%攻击可以由一名拥有大量算力的矿工或一组矿工组成的一个采矿池进行,控制 51% 的算力本身并不一定是攻击,除非有意使用此优势。

比特币黄金和ZenCash此前都曾遭遇过 51% 攻击,使他们的投资者损失了数百万美元。

为了让矿工执行攻击,他们必须首先牺牲网络通常奖励他们的利润丰厚的收入来合法地处理加密货币交易。攻击比特币的区块链并不便宜,但随着加密货币市场价格下跌,“51%攻击”成本也出现下降。根据Crypto51 的数据,目前每小时攻击成本是 300,067 美元。

201812060145013328.jpg


2018年51%攻击频繁发生,但Awake Security的研究员 Troy Kent 本月早些时候在纽约InfoSecurity北美会议上发表他的研究结果表示,黑客通过加密挖矿工具进行网络攻击,尽管这是一种类似于僵尸网络或特洛伊木马那样的合法威胁,但人们还是不习惯应对这种攻击方式。另外,他建议公司需要实现基于行为和分析的更先进的检测方法。

比特币DoS漏洞和超发漏洞技术分析,攻击者或无法获利

攻略8btc 发表了文章 • 2018-09-29 17:12 • 来自相关话题

图片来自:Mowie Jak Jest


上周,bitcoin core 0.16.3 版本客户端的突然发布,以及开发者敦促大家尽快升级一事,令比特币世界的人们感到了惊讶。表面上的原因,在于0.14-0.16.2版本客户端中存在一个拒绝服务 (DoS) 向量需要被修补。到后来,我们才发现,在0.15-0.16.2版本core客户端中的另一个漏洞,可能会引起比特币的超发问题。

在这篇文章中,作者试图说明:到底发生了什么?潜在的危险是什么?以及如果有人利用这个漏洞,还将会发生什么?

 
双重支付的两种方式
 

在我们接触实际的漏洞之前,我们需要解释一些东西。我们首先需要定义一下双重支付,因为这个漏洞就可以用于双重支付。

所谓双重支付的情况,就比如说爱丽丝(Alice)向鲍勃(Bob)支付了一笔币,然后她又把相同的币再一次支付给了查利(Charlie),爱丽丝基本上试图进行两次支付,其中的一笔她知道会被拒回。当然,当我们考虑支付时,爱丽丝的某些账户通过写这两次支付被透支了。这很接近比特币的工作原理,但并不是十分准确。

比特币并不是基于帐户模型的,而是基于未花费交易输出(UTXO)。一笔交易的输出基本包含了一个地址以及数量。一旦输出被使用了,它就无法再次被花费。试想一下一个UTXO(作为一笔发送给你的币),它可以是任意数量的,比如说0.413 BTC。

比特币的双重支付意味着一笔币(UTXO)被花费了两次。通常,这意味着爱丽丝将她的0.413 BTC发送给了鲍勃,然后她又把同一笔比特币又发送给了查利。

比特币的解决方法是,其中一笔交易会纳入一个区块,由此来决定实际谁得到了报酬。如果两笔交易不知何故都传递到了多个区块,那么后面发生的区块,就会被软件给拒绝掉。如果两笔交易都在同一个区块当中,那么这个区块也会遭到软件的拒绝。

基本上,比特币软件会检测到双重支付行为,如果有双重支付行为的发生,则应该拒绝掉相应的区块。

然而,在两笔不同的交易中发送同一个UTXO,并不是唯一的双花方法。实际还存在着同一UTXO在同一交易进行双重支付的病态情况。在这种情况下,爱丽丝向鲍勃发送同一笔币两次。所以,爱丽丝实际支付的是0.413 BTC,但鲍勃收到的却是0.826 BTC。这显然不是一个有效的交易,因为只有一笔价值0.413 BTC的UTXO 是被发送的。这就相当于,爱丽丝用同一10美元向鲍勃发送了两次,而鲍勃收到的则是20美元。

 
定义漏洞
 

因此,总结一下我们所定义的两种类型的双重支付尝试:

使用两笔或更多的交易,来花费相同的UTXO;
使用一笔交易花费同一UTXO多次;


结果表明,Bitcoin Core 软件正确地处理了第一个问题,而第二个问题,正是我们要关心的。任何人都可以像这样构造出一笔双花交易,但要让节点接受这种交易,又是另一回事了。

目前有两种方法可以让交易被纳入一个区块当中: 

A. 支付足够的费用,将交易广播到网络上,那么矿工会负责把交易纳入区块当中;

B. 作为一名矿工,把交易纳入一个区块;

(A) 除了创建交易,并将其广播到网络上的节点之外,你不需要做太多的工作。 (B) 需要你找到足够的工作量证明。这也是这次漏洞的关键。

(A) 不是一个可能的攻击向量,因为这些交易会立即被标记为无效的,网络上的节点会拒绝它们。没有矿工们的合作,这种交易就无法进入矿工们的记忆库,因为它们不会得到传播。

(B)是漏洞显现的唯一情况。换句话说,想要利用这个漏洞,你就需要工作量证明,或者说足够的矿机设备和电力。

为了明确起见,双花交易有4种情况需要处理:

1A — 多笔 mempool交易花费了同一UTXO ;

1B — 多笔区块交易花费了同一UTXO ;

2A — 单笔mempool交易花费了同一UTXO多次;

2B — 单笔区块交易花费了同一UTXO多次;

该漏洞有两种表现形式。在0.14.x版本客户端中,存在着一个拒绝服务(DoS)的漏洞,而在0.15.x - 0.16.2版本的客户端,则存在一个超发漏洞。接下来,我们会分别分析它们。

 
拒绝服务攻击
 

故事始于2009年的Bitcoin 0.1版本客户端,这一版本的代码通过拒绝案例1B和案例2B(检查区块没有双重支付)来强制达成共识。





为了清晰起见,作者删除了很多代码


你可以看到“检查冲突”的注释,其代码负责检查每个输入没有被花费。“将输出标记为已使用”注释下面的代码,标记了UTXO的使用。如果任何UTXO的花费超过一次,则会导致错误。

在2011年,PR 443被合并到了比特币代码库。这一改变是为了处理通过mempool (上面的情况2A)传输单笔交易双重支付的情况。这个合并请求注释的目的非常明确:

    “而且,没有具有重复输入的交易会被纳入区块当中......几个星期前,有人尝试过了,但这些交易并没有被纳入区块。我假设某个地方存在了一个检查关,它会阻止这些重复交易进入区块,虽然我没有对这个问题进行任何挖掘。这实际上是为了防止这种明显无效的交易得到中继。”






实际的代码更改,或多或少与上面的ConnectInputs 中的“检查冲突”注释下的代码执行了相同的操作,但位于的是不同的位置。代码更改是在CheckTransaction 中运行的,其负责了所有上述的4种情况(1A, 1B, 2A, 2B)。因此,我们在区块双重支付共识代码中有了一些冗余,正如案例1B和2B都被检查了两次,其中一次检查是在CheckTransaction,另一次则发生在ConnectInputs。

到了2013年,PR 2224被纳入了比特币软件。这一改变的目的是区分共识错误(例如双重支付)和系统错误(例如磁盘空间耗尽)之间的差别,正如PR注释中所表明的那样:

“它引入了CValidationState,它会存储关于区块的元数据,或者正在执行的交易验证数据。它被用于区分验证错误(例如,未能满足网络规则)和运行时错误(比如磁盘空间的不足),从前这些可能会产生混淆,因磁盘空间用完会导致区块被标记为无效。此外,CValidationState还承担了跟踪 DoS级别的角色(因此它不需要存储于交易或区块当中...)”


实际的相关代码更改如下:






在那个时候,ConnectInputs已经被模块化成多个方法,并且这个函数成为了检查双重支付的函数。这里的关键改变是,曾经的error被改为了 assert

assert在C++中是做什么的?它会完全中止程序。程序员为什么要在这里停止程序?这就是Pull请求的目的所在。下面就是那个时候的代码片段:






它会像以前一样处理案例1B和2B。函数名则从ConnectInputs更改为ConnectBlock,但检查案例1B和2B的冗余性仍然在PR 443中保留。正如我们已经看到的,UpdateCoins做了第二次双重支付检查。其中CheckBlock通过调用CheckTransaction进行了第一次双重支付检查:











由于这是第二次检查相同的内容,所以要让UpdateCoins的双花检查失败的唯一方法,就是存在某种UTXO数据库或交易存储损坏。事实上,这似乎是改成assert的原因。因为CheckBlock通过CheckTransaction在UpdateCoins之前已经进行了检查,我们已知道某笔交易并不是双花交易。因此,PR 2224正确地推测到,UpdateCoins中的这个状态必然是一个系统错误,而不是一个共识错误。在这种情况下,为了防止进一步的数据损坏,正确的做法就是停止程序。

到了2017年,PR 9049作为Bitcoin 0.14的一部分被引入比特币网络。随着隔离见证(Segwit)的纳入,它是加快区块验证时间的诸多更改的其中之一,其代码更改实际是非常少的:






你可以看到布尔函数 fCheckDuplicateInputs被添加了进去,用于加快区块检查。我们将在下面看到,这是一个被认为是冗余的检查。不幸的是, UpdateCoins中的代码在PR 2224中被更改为系统损坏检查,而不是共识检查。到了0.14.0版本客户端,其代码进行了更多的模块化更改,而assert也发生了一些改变:






曾经是作为一个冗余检查,现在却成了负责区块单笔交易双重支付检查(案例2B),并负责停止程序。从技术上来说,它仍然是强制执行共识规则。只是在中止程序问题上,它表现地非常糟糕。

PR 9049是如何获得通过的? Greg Maxwell 给了我IRC上的聊天记录。






长话短说,开发者们在讨论PR 9049时,倾向于认为区块级单笔交易双重支付(案例2B)会在PR 443处遭到检查,而没有考虑PR 2224。这使得开发者们并没有密切关注PR 9049;

总而言之:

1、在2011年引入用于防止双重支付交易中继(案例2A)的 PR 443,实际产生了一个副作用,即对区块的双重支付共识规则检查创造了冗余校验(案例1B和 2B)。

2、PR 2224是在2013年引入的,作为一种副作用,将(1)中用于区块验证的代码,从冗余升级到了共识层;

3、PR 9049是在2017年被引入的,并且它跳过了(1)中用于单个区块单笔交易双重支付(案例1B)检查的代码。开发人员错误地认为代码是多余的,因为他们没有考虑到(2)。事实上,这种改变跳过了共识的关键部分。

公平地讲,这些事的汇合导致了这次漏洞。

 
DoS漏洞的严重性
 

这意味着 0.14.x 版本的Core软件可能会因为一个奇怪的区块而崩溃。而要让软件崩溃,攻击者需要做的事是:

创建一笔花费两次同一UTXO的交易;
通过足够的工作量证明,将(1)中的交易纳入一个比特币区块;
将这个区块广播到0.14.x版本软件的节点;


(1) 和 (3) 的成本并不高,而步骤(2)的最小成本为12.5 BTC。

如果你认为从博弈论的角度来看,分裂网络并不是那么好,那么利用这个漏洞的动机就相当低了。充其量,作为攻击者,你花费了12.5 BTC将部分全节点给搞崩溃。由于不可能从分裂网络中获利,攻击者无法轻易地补偿自己的攻击成本。

如果这是唯一的漏洞,那么攻击者可能给很多人带来一些不便,但这不会是持续的,因为这些被攻击的节点可以简单地重启,并连接到其它诚实节点。一旦有一个较长的链,那么恶意区块攻击就会完全失去它的威胁。除非攻击者以每区块12.5 BTC的代价继续创建区块,并将其传播给 0.14.x版本软件的节点,否则攻击就是不可持续的。

换句话说,虽然这个漏洞的确存在着,但对 DoS攻击的经济刺激却是相当低的。

 
超发漏洞
 

从0.15.0版本软件开始,core软件引入了一个新的特性,以便更快地查找和存储UTXO,而这恰恰又引入了另一个漏洞。当一笔具有双重支付单个交易的区块纳入区块链时,软件会将其视为有效,而不会出现崩溃的现象。

这就意味着一笔病理性交易(相同UTXO在同一交易中被使用多次,即案例2B),0.14版本的节点会因此而崩溃,而使用0.15版本软件的节点却会认为交易是有效的,这基本上是凭空在创建比特币。

谈谈它是如何发生的。在0.15中出现的PR 10195 ,引入了很多内容,但它的主要要点在于改变了 UTXO的存储方式,使得它们更有效地进行查找。因此,它出现了很多变化,包括对早期UpdateCoins函数的更改:






注意,assert(false) 周围的代码是如何被完全取出的。注意这一点,0.15.0中的PR 10537也更改了代码。






assert失败的条件现在取决于inputs.SpendCoin,它看起来是这样子的:






本质上,SpendCoin返回“ false”值的唯一方法,就是让币不存在于UTXO集中。但正如你所看到的,这需要币是FRESH的,而不是DIRTY的。这些不是常见的术语,但值得庆幸的是,core开发者Andrew Chow给出了解释:

“现在的问题是,什么时候UTXO会被标记为FRESH?当它们被添加到UTXO数据库时,它们就会被标记为FRESH。但是,UTXO数据库仍然只存在于存储当中的(作为缓存)。当它被保存到磁盘时,存储中的条目将不再被标记为FRESH……”


标记为FRESH的币,是进入交易存储池(memory pool)中的币。而攻击者可以通过 UpdateCoins函数中的assert语句来破坏节点。更糟的是,如果币是属于DIRTY的(基本上从磁盘上读取的),那么这就会导致比特币的超发。

因此,攻击者可以欺骗那些运行 0.15.0- 0.16.2版本软件的矿工接受一个奇怪的、无效的区块,从而导致比特币的供应超发。

 
超发漏洞的严重性
 

这种攻击的经济诱因似乎明显高于DoS攻击,因为攻击者可能会凭空制造出比特币。但你仍然需要有挖矿设备来执行攻击,但考虑到潜在的经济诱因,这可能是值得的,或者看起来是这样的。

下面是使用这种漏洞的一种简单攻击方式:

创造一笔带有双重支付交易的区块,其会向自己支付两次,比方说 50 BTC →100 BTC;
将该区块广播给0.15/0.16版本客户端的所有矿工;


下面是会发生的一些事:

    0.14.x 版本节点会崩溃;
    较旧版本的节点及其它替代客户端会拒绝这个区块;
    很多区块链浏览器是运行在自定义软件上的,而不是基于core,因此,至少有一些浏览器会拒绝该区块,并且不会显示来自该区块的任何交易。
    取决于矿工们运行的软件,我们可能会迎来链分裂;

有可能,所有的矿工都是运行的Bitcoin Core 0.15+版本软件,在这种情况下,不受攻击的客户端可能会停滞不前。也有可能矿工会运行其它东西,在这种情况下,当他们发现一个区块时,链就会发生分叉。

由于这些违规行为,网络上的人们很快就会追踪到这一点,可能已提醒一些开发人员,并且core开发者已经修复了它。如果存在分叉,那么在那个时候,关于哪条链是正确的共识链,将开始得到讨论,而出现意外超发的链,可能会遭到抛弃。如果真的发生了,那么社区可能会自愿进行一次回滚,以惩罚攻击者。

所以对于攻击者来说,这不会带来50 BTC的收入,更可能的是失去12.5 BTC。如果攻击者加倍花费,比如说200 BTC,那么超发漏洞将持续存在的可能性会更小,因为攻击会更明显。

因此,从攻击者的角度来看,这并不是一种好的获利方式。

攻击者可以获利的另一种方式,就是事先做空比特币,然后再执行攻击。这也是具有风险的,因为攻击不能保证比特币价格会下跌,特别是当危机得到迅速和果断处理时。此外,考虑到大多数交易所提供的杠杠交易,都需要AML/KYC,这可能导致攻击者很快暴露。

攻击者不仅面临着巨大的资金风险,而且还会有身体危险。从经济角度来看,这并不是一个容易获利的漏洞。

当然,有一些别有用心的人,可能会用这种漏洞来吓唬那些比特币持有者。投资回报率将变得更抽象,因此从理论上来讲,这可能会达到这些别有用心者的目的。

 
结论
 

毫无疑问,这是一个相当严重的漏洞。尽管我和Awemany之间有着分歧,但我很感激他选择公开地和我辩论。也就是说,考虑到经济博弈理论,我不认为这个漏洞会像他所描述的那样严重。

即使这个漏洞在被发现之前被坏人所利用,攻击者可能也不会选择利用它,因为从经济学上来讲,它是没有意义的。可以肯定的是,这一技术漏洞应该被修复,并且开发者应该做得更好,但真正能够利用这种漏洞的对象其实是非常少的,基本上,只有那些想要摧毁比特币的组织才会这么干。

Bitcoin Core开发者的教训有很多:

1、任何共识变化(即使是微小的变化,例如9049),也需要更多的人进行审查; 2、需要对病理交易进行更多的检查; 3、代码库中哪些检查是冗余的,哪些检查是不冗余的,以及实际代码将要做些什么,需要变得更加清晰; 4、过去存在漏洞,将来也会存在漏洞。现在重要的是,学习并反思这一教训;


原文:https://medium.com/@jimmysong/bitcoin-core-bug-cve-2018-17144-an-analysis-f80d9d373362
作者:Jimmy Song
编译:洒脱喜 查看全部
201809290449331285.jpg

图片来自:Mowie Jak Jest


上周,bitcoin core 0.16.3 版本客户端的突然发布,以及开发者敦促大家尽快升级一事,令比特币世界的人们感到了惊讶。表面上的原因,在于0.14-0.16.2版本客户端中存在一个拒绝服务 (DoS) 向量需要被修补。到后来,我们才发现,在0.15-0.16.2版本core客户端中的另一个漏洞,可能会引起比特币的超发问题。

在这篇文章中,作者试图说明:到底发生了什么?潜在的危险是什么?以及如果有人利用这个漏洞,还将会发生什么?

 
双重支付的两种方式
 

在我们接触实际的漏洞之前,我们需要解释一些东西。我们首先需要定义一下双重支付,因为这个漏洞就可以用于双重支付。

所谓双重支付的情况,就比如说爱丽丝(Alice)向鲍勃(Bob)支付了一笔币,然后她又把相同的币再一次支付给了查利(Charlie),爱丽丝基本上试图进行两次支付,其中的一笔她知道会被拒回。当然,当我们考虑支付时,爱丽丝的某些账户通过写这两次支付被透支了。这很接近比特币的工作原理,但并不是十分准确。

比特币并不是基于帐户模型的,而是基于未花费交易输出(UTXO)。一笔交易的输出基本包含了一个地址以及数量。一旦输出被使用了,它就无法再次被花费。试想一下一个UTXO(作为一笔发送给你的币),它可以是任意数量的,比如说0.413 BTC。

比特币的双重支付意味着一笔币(UTXO)被花费了两次。通常,这意味着爱丽丝将她的0.413 BTC发送给了鲍勃,然后她又把同一笔比特币又发送给了查利。

比特币的解决方法是,其中一笔交易会纳入一个区块,由此来决定实际谁得到了报酬。如果两笔交易不知何故都传递到了多个区块,那么后面发生的区块,就会被软件给拒绝掉。如果两笔交易都在同一个区块当中,那么这个区块也会遭到软件的拒绝。

基本上,比特币软件会检测到双重支付行为,如果有双重支付行为的发生,则应该拒绝掉相应的区块。

然而,在两笔不同的交易中发送同一个UTXO,并不是唯一的双花方法。实际还存在着同一UTXO在同一交易进行双重支付的病态情况。在这种情况下,爱丽丝向鲍勃发送同一笔币两次。所以,爱丽丝实际支付的是0.413 BTC,但鲍勃收到的却是0.826 BTC。这显然不是一个有效的交易,因为只有一笔价值0.413 BTC的UTXO 是被发送的。这就相当于,爱丽丝用同一10美元向鲍勃发送了两次,而鲍勃收到的则是20美元。

 
定义漏洞
 

因此,总结一下我们所定义的两种类型的双重支付尝试:


使用两笔或更多的交易,来花费相同的UTXO;
使用一笔交易花费同一UTXO多次;



结果表明,Bitcoin Core 软件正确地处理了第一个问题,而第二个问题,正是我们要关心的。任何人都可以像这样构造出一笔双花交易,但要让节点接受这种交易,又是另一回事了。

目前有两种方法可以让交易被纳入一个区块当中: 

A. 支付足够的费用,将交易广播到网络上,那么矿工会负责把交易纳入区块当中;

B. 作为一名矿工,把交易纳入一个区块;

(A) 除了创建交易,并将其广播到网络上的节点之外,你不需要做太多的工作。 (B) 需要你找到足够的工作量证明。这也是这次漏洞的关键。

(A) 不是一个可能的攻击向量,因为这些交易会立即被标记为无效的,网络上的节点会拒绝它们。没有矿工们的合作,这种交易就无法进入矿工们的记忆库,因为它们不会得到传播。

(B)是漏洞显现的唯一情况。换句话说,想要利用这个漏洞,你就需要工作量证明,或者说足够的矿机设备和电力。

为了明确起见,双花交易有4种情况需要处理:

1A — 多笔 mempool交易花费了同一UTXO ;

1B — 多笔区块交易花费了同一UTXO ;

2A — 单笔mempool交易花费了同一UTXO多次;

2B — 单笔区块交易花费了同一UTXO多次;

该漏洞有两种表现形式。在0.14.x版本客户端中,存在着一个拒绝服务(DoS)的漏洞,而在0.15.x - 0.16.2版本的客户端,则存在一个超发漏洞。接下来,我们会分别分析它们。

 
拒绝服务攻击
 

故事始于2009年的Bitcoin 0.1版本客户端,这一版本的代码通过拒绝案例1B和案例2B(检查区块没有双重支付)来强制达成共识。

201809290427248594.png

为了清晰起见,作者删除了很多代码


你可以看到“检查冲突”的注释,其代码负责检查每个输入没有被花费。“将输出标记为已使用”注释下面的代码,标记了UTXO的使用。如果任何UTXO的花费超过一次,则会导致错误。

在2011年,PR 443被合并到了比特币代码库。这一改变是为了处理通过mempool (上面的情况2A)传输单笔交易双重支付的情况。这个合并请求注释的目的非常明确:

    “而且,没有具有重复输入的交易会被纳入区块当中......几个星期前,有人尝试过了,但这些交易并没有被纳入区块。我假设某个地方存在了一个检查关,它会阻止这些重复交易进入区块,虽然我没有对这个问题进行任何挖掘。这实际上是为了防止这种明显无效的交易得到中继。”

201809290429217163.png


实际的代码更改,或多或少与上面的ConnectInputs 中的“检查冲突”注释下的代码执行了相同的操作,但位于的是不同的位置。代码更改是在CheckTransaction 中运行的,其负责了所有上述的4种情况(1A, 1B, 2A, 2B)。因此,我们在区块双重支付共识代码中有了一些冗余,正如案例1B和2B都被检查了两次,其中一次检查是在CheckTransaction,另一次则发生在ConnectInputs。

到了2013年,PR 2224被纳入了比特币软件。这一改变的目的是区分共识错误(例如双重支付)和系统错误(例如磁盘空间耗尽)之间的差别,正如PR注释中所表明的那样:


“它引入了CValidationState,它会存储关于区块的元数据,或者正在执行的交易验证数据。它被用于区分验证错误(例如,未能满足网络规则)和运行时错误(比如磁盘空间的不足),从前这些可能会产生混淆,因磁盘空间用完会导致区块被标记为无效。此外,CValidationState还承担了跟踪 DoS级别的角色(因此它不需要存储于交易或区块当中...)”



实际的相关代码更改如下:

201809290429287993.png


在那个时候,ConnectInputs已经被模块化成多个方法,并且这个函数成为了检查双重支付的函数。这里的关键改变是,曾经的error被改为了 assert

assert在C++中是做什么的?它会完全中止程序。程序员为什么要在这里停止程序?这就是Pull请求的目的所在。下面就是那个时候的代码片段:

201809290429336876.png


它会像以前一样处理案例1B和2B。函数名则从ConnectInputs更改为ConnectBlock,但检查案例1B和2B的冗余性仍然在PR 443中保留。正如我们已经看到的,UpdateCoins做了第二次双重支付检查。其中CheckBlock通过调用CheckTransaction进行了第一次双重支付检查:

201809290429374708.png


201809290429418890.png


由于这是第二次检查相同的内容,所以要让UpdateCoins的双花检查失败的唯一方法,就是存在某种UTXO数据库或交易存储损坏。事实上,这似乎是改成assert的原因。因为CheckBlock通过CheckTransaction在UpdateCoins之前已经进行了检查,我们已知道某笔交易并不是双花交易。因此,PR 2224正确地推测到,UpdateCoins中的这个状态必然是一个系统错误,而不是一个共识错误。在这种情况下,为了防止进一步的数据损坏,正确的做法就是停止程序。

到了2017年,PR 9049作为Bitcoin 0.14的一部分被引入比特币网络。随着隔离见证(Segwit)的纳入,它是加快区块验证时间的诸多更改的其中之一,其代码更改实际是非常少的:

201809290429465081.png


你可以看到布尔函数 fCheckDuplicateInputs被添加了进去,用于加快区块检查。我们将在下面看到,这是一个被认为是冗余的检查。不幸的是, UpdateCoins中的代码在PR 2224中被更改为系统损坏检查,而不是共识检查。到了0.14.0版本客户端,其代码进行了更多的模块化更改,而assert也发生了一些改变:

201809290429517782.png


曾经是作为一个冗余检查,现在却成了负责区块单笔交易双重支付检查(案例2B),并负责停止程序。从技术上来说,它仍然是强制执行共识规则。只是在中止程序问题上,它表现地非常糟糕。

PR 9049是如何获得通过的? Greg Maxwell 给了我IRC上的聊天记录。

201809290429561563.png


长话短说,开发者们在讨论PR 9049时,倾向于认为区块级单笔交易双重支付(案例2B)会在PR 443处遭到检查,而没有考虑PR 2224。这使得开发者们并没有密切关注PR 9049;

总而言之:

1、在2011年引入用于防止双重支付交易中继(案例2A)的 PR 443,实际产生了一个副作用,即对区块的双重支付共识规则检查创造了冗余校验(案例1B和 2B)。

2、PR 2224是在2013年引入的,作为一种副作用,将(1)中用于区块验证的代码,从冗余升级到了共识层;

3、PR 9049是在2017年被引入的,并且它跳过了(1)中用于单个区块单笔交易双重支付(案例1B)检查的代码。开发人员错误地认为代码是多余的,因为他们没有考虑到(2)。事实上,这种改变跳过了共识的关键部分。

公平地讲,这些事的汇合导致了这次漏洞。

 
DoS漏洞的严重性
 

这意味着 0.14.x 版本的Core软件可能会因为一个奇怪的区块而崩溃。而要让软件崩溃,攻击者需要做的事是:


创建一笔花费两次同一UTXO的交易;
通过足够的工作量证明,将(1)中的交易纳入一个比特币区块;
将这个区块广播到0.14.x版本软件的节点;



(1) 和 (3) 的成本并不高,而步骤(2)的最小成本为12.5 BTC。

如果你认为从博弈论的角度来看,分裂网络并不是那么好,那么利用这个漏洞的动机就相当低了。充其量,作为攻击者,你花费了12.5 BTC将部分全节点给搞崩溃。由于不可能从分裂网络中获利,攻击者无法轻易地补偿自己的攻击成本。

如果这是唯一的漏洞,那么攻击者可能给很多人带来一些不便,但这不会是持续的,因为这些被攻击的节点可以简单地重启,并连接到其它诚实节点。一旦有一个较长的链,那么恶意区块攻击就会完全失去它的威胁。除非攻击者以每区块12.5 BTC的代价继续创建区块,并将其传播给 0.14.x版本软件的节点,否则攻击就是不可持续的。

换句话说,虽然这个漏洞的确存在着,但对 DoS攻击的经济刺激却是相当低的。

 
超发漏洞
 

从0.15.0版本软件开始,core软件引入了一个新的特性,以便更快地查找和存储UTXO,而这恰恰又引入了另一个漏洞。当一笔具有双重支付单个交易的区块纳入区块链时,软件会将其视为有效,而不会出现崩溃的现象。

这就意味着一笔病理性交易(相同UTXO在同一交易中被使用多次,即案例2B),0.14版本的节点会因此而崩溃,而使用0.15版本软件的节点却会认为交易是有效的,这基本上是凭空在创建比特币。

谈谈它是如何发生的。在0.15中出现的PR 10195 ,引入了很多内容,但它的主要要点在于改变了 UTXO的存储方式,使得它们更有效地进行查找。因此,它出现了很多变化,包括对早期UpdateCoins函数的更改:

201809290430061888.png


注意,assert(false) 周围的代码是如何被完全取出的。注意这一点,0.15.0中的PR 10537也更改了代码。

201809290430102743.png


assert失败的条件现在取决于inputs.SpendCoin,它看起来是这样子的:

201809290430179759.png


本质上,SpendCoin返回“ false”值的唯一方法,就是让币不存在于UTXO集中。但正如你所看到的,这需要币是FRESH的,而不是DIRTY的。这些不是常见的术语,但值得庆幸的是,core开发者Andrew Chow给出了解释:


“现在的问题是,什么时候UTXO会被标记为FRESH?当它们被添加到UTXO数据库时,它们就会被标记为FRESH。但是,UTXO数据库仍然只存在于存储当中的(作为缓存)。当它被保存到磁盘时,存储中的条目将不再被标记为FRESH……”



标记为FRESH的币,是进入交易存储池(memory pool)中的币。而攻击者可以通过 UpdateCoins函数中的assert语句来破坏节点。更糟的是,如果币是属于DIRTY的(基本上从磁盘上读取的),那么这就会导致比特币的超发。

因此,攻击者可以欺骗那些运行 0.15.0- 0.16.2版本软件的矿工接受一个奇怪的、无效的区块,从而导致比特币的供应超发。

 
超发漏洞的严重性
 

这种攻击的经济诱因似乎明显高于DoS攻击,因为攻击者可能会凭空制造出比特币。但你仍然需要有挖矿设备来执行攻击,但考虑到潜在的经济诱因,这可能是值得的,或者看起来是这样的。

下面是使用这种漏洞的一种简单攻击方式:


创造一笔带有双重支付交易的区块,其会向自己支付两次,比方说 50 BTC →100 BTC;
将该区块广播给0.15/0.16版本客户端的所有矿工;



下面是会发生的一些事:

    0.14.x 版本节点会崩溃;
    较旧版本的节点及其它替代客户端会拒绝这个区块;
    很多区块链浏览器是运行在自定义软件上的,而不是基于core,因此,至少有一些浏览器会拒绝该区块,并且不会显示来自该区块的任何交易。
    取决于矿工们运行的软件,我们可能会迎来链分裂;

有可能,所有的矿工都是运行的Bitcoin Core 0.15+版本软件,在这种情况下,不受攻击的客户端可能会停滞不前。也有可能矿工会运行其它东西,在这种情况下,当他们发现一个区块时,链就会发生分叉。

由于这些违规行为,网络上的人们很快就会追踪到这一点,可能已提醒一些开发人员,并且core开发者已经修复了它。如果存在分叉,那么在那个时候,关于哪条链是正确的共识链,将开始得到讨论,而出现意外超发的链,可能会遭到抛弃。如果真的发生了,那么社区可能会自愿进行一次回滚,以惩罚攻击者。

所以对于攻击者来说,这不会带来50 BTC的收入,更可能的是失去12.5 BTC。如果攻击者加倍花费,比如说200 BTC,那么超发漏洞将持续存在的可能性会更小,因为攻击会更明显。

因此,从攻击者的角度来看,这并不是一种好的获利方式。

攻击者可以获利的另一种方式,就是事先做空比特币,然后再执行攻击。这也是具有风险的,因为攻击不能保证比特币价格会下跌,特别是当危机得到迅速和果断处理时。此外,考虑到大多数交易所提供的杠杠交易,都需要AML/KYC,这可能导致攻击者很快暴露。

攻击者不仅面临着巨大的资金风险,而且还会有身体危险。从经济角度来看,这并不是一个容易获利的漏洞。

当然,有一些别有用心的人,可能会用这种漏洞来吓唬那些比特币持有者。投资回报率将变得更抽象,因此从理论上来讲,这可能会达到这些别有用心者的目的。

 
结论
 

毫无疑问,这是一个相当严重的漏洞。尽管我和Awemany之间有着分歧,但我很感激他选择公开地和我辩论。也就是说,考虑到经济博弈理论,我不认为这个漏洞会像他所描述的那样严重。

即使这个漏洞在被发现之前被坏人所利用,攻击者可能也不会选择利用它,因为从经济学上来讲,它是没有意义的。可以肯定的是,这一技术漏洞应该被修复,并且开发者应该做得更好,但真正能够利用这种漏洞的对象其实是非常少的,基本上,只有那些想要摧毁比特币的组织才会这么干。

Bitcoin Core开发者的教训有很多:

1、任何共识变化(即使是微小的变化,例如9049),也需要更多的人进行审查; 2、需要对病理交易进行更多的检查; 3、代码库中哪些检查是冗余的,哪些检查是不冗余的,以及实际代码将要做些什么,需要变得更加清晰; 4、过去存在漏洞,将来也会存在漏洞。现在重要的是,学习并反思这一教训;


原文:https://medium.com/@jimmysong/bitcoin-core-bug-cve-2018-17144-an-analysis-f80d9d373362
作者:Jimmy Song
编译:洒脱喜

Dash 也要被算力攻击?谁来保护 PoW 区块链

攻略blockbeats 发表了文章 • 2019-01-17 10:31 • 来自相关话题

达世币(DASH)是一款去中心化的加密数字货币,基于比特币的源代码改写而成。它的即时支付技术,还有不错的匿名性,让它在加密货币圈子里迅速走红。不仅如此,达世币主节点能够回馈投资者 10%+的年返利,并且对每月的预算提案进行投票。

但与此同时,这样一款基于 PoW 共识机制的区块链系统,其安全性却薄若蝉翼,随时有可能被攻陷下来。简单来说,算力下降的情况下 PoW 区块链将暴露在「51% 算力攻击机制」风险之下!

达世币的缔造者,埃文·达菲尔德,与近二十人所组成的「核心团队」,当然也知道这一风险,马不停蹄的正在设计一种名为 Chainlocks 的防御机制。前不久刚刚发生 51% 算力攻击的以太经典区块链正在讨论防范算法,BCHABC 也有类似的机制。

这似乎是一场分秒必争的游戏,赶在引信被燃尽之前,将炸弹拆除。

事实上,在 ETC 发生双花攻击之后的这段时间内,大量有关算力攻击的讨论甚嚣尘上。如,Reddit 论坛上的一位网友就发出了这样的一个热帖,迅速引来了无数网友的热议,他的大致意思是:

目前达世币的算力已经严重的集中于 NiceHash (世界上最大的加密货币挖矿算力市场)这里。如果达世币不尽快推出他们设计已久的安全机制 Chainlocks,那么针对达世币的一次「51% 攻击」将很快出现!跟达世币有关的服务的经营者们可得小心了!



至于,「51% 攻击」到底是怎样一回事?而「Chainlocks」防御机制究竟是怎样起作用的?

Reddit 论坛上的用户所发出的警告信是这么说的:

以下是 Reddit 最多讨论的原帖翻译:

开门见山,让我首先来证明一些观点。

我碰巧发现了「有关 ETC 51% 算力攻击」的一些真相,具体来说就是 Nicehash 已经一家独大,并且具备了颠覆区块链基本安全性的能力了!

因为,Nicehash 目前拥有 DASH 总计哈希值的 70%。你可以通过这个链接看到相关数据的对比。(Nicehash 拥有 1390 TH,而总的哈希值为 1790 TH)。

这就是我要说的第一个问题,它太不同寻常了,一般来说 Nicehash 占有 Pow 代币的 10% 到 20% 的的算力,就已经对 PoW 代币中一些规模较小的分叉币构成了安全威胁。

上面只是谈到的第一个问题。

第二个问题是:我们应该来去检查一下矿池。如果算力是导向到一些大家都知道的,而且受到信任的矿池上去,这其实就构不成什么问题。但不幸的是,事实恰恰相反。这个网站揭示出:1790TH/S 的算力中,只有 560TH/S 是来自于比较有声誉的矿池的,而其他的算力都来自一些我们根本不知道的,来历不明的地方,这同样也是极为不寻常的情况。

Dash Explorer 网站展示出来了到底是哪些地址正产出挖矿奖励。你在上面可以看到有四个未知的「大家伙」正在收集所有来历不明的算力。我通过这个区块探测工具(https://dashradar.com/explorer/tx/31de30b48c9263544724c0e607a9cb1f7bf05dc2961119827c52571334506172)这一笔非常特别的交易,包含了上面四个地址中的三个,而这更意味着实际上这三个源源不断收集算力的矿池,其实都是被一个潜藏在「黑暗」中的实体(或机构、或团体、或个人)所控制。这还不是最为致命的,最值得让人担心的是:这三个矿池拥有着53% 甚至更多的算力。这三个地址分别是:

XbUutDsgJbf7Sjjq4omhusNtkT8ih1d7oQ

XkNPrBSJtrHZUvUqb3JF4g5rMB3uzaJfEL

XeMPcKeVDN9bkECGDC7ggtf9QsX5thgKAx

这三个矿池地址是从半年前,也就是去年 9 月份就开始积攒算力的,而且我认为第四个位置的矿池同样也属于这个隐藏在黑暗中的实体,哪怕它是独立于这一个区块链的。因为它几乎也是在同一时间,开始疯狂收集算力。

我们能从中得出什么结论呢?结论只有一个:

ASIC 矿机是区块链之癌。或者保守点说,对于那些只要规模比 BTC 要小的任何一种代币来说,就是如此。它们的安全性压根得不到保证,完全比不上我们现在所熟悉的网络。

而更明确点儿说:Nicehash 也是癌细胞。只要有一个人愿意,他可以立刻针对 DASH 收买大量的算力,只要达到 51% 的比例,那么他就可以为所欲为了。

不管是谁拥有这些矿池,他们挖出来的 DASH 绝对不会停在他们手上一秒,可以说下一秒钟,你就可以在交易所看到它们的身影了。

所以,在 DASH 配置自己的 Chainlocks 的时候,其实已经有人在此之前准备好「51% 算力攻击」了。只要你想去做,现在就可以开始干。任何人,只要你所提供的服务跟 DASH 有关,那么千万不能放松警惕,只要它没有做出相应的调整以及进一步的做出风险补救措施,切不可掉以轻心。



这一篇帖子 Po 出之后,一石激起千层浪。底下纷纷有小伙伴这样回复道:

一位叫 Zoden 的小伙伴就说:「不管是达世币,还是 ETC,它们都是排名前 20 的知名代币,如果它们都要被攻陷了,那么比特币离覆灭的那一天就不远了,整个加密货币圈子就要完蛋啦!」

底下有一个 tranceology3 的人冷言冷语的针对上面观点回复道:「是 POW 要完蛋了,谢谢!」

Savik519 说道:「我估计很快我们就要亲临 51% 攻击了,在不远的将来,将有越来越多的代币会暴露在风险之下。」


Dash 官方回应 51% 算力攻击


达世币的算法是否真的如帖子里面说的那样,可以花钱买得到吗?DASH 真的会遇到 51% 算力攻击问题吗?

首先,我们要明确一个事实:达世币目前是使用的 X11 算法,而要挖矿的话,唯一明智的做法就是使用 ASIC 矿机。

所以几乎所有的矿机目前都在满负荷的运转挖达世币,没有任何闲置的算力资源。当然,你是可以购买其中的一小部分算力,但是你买不了多少的,除非你完全不差钱。没有人会傻到用自己的 AISC 芯片去攻击整个加密货币链,尤其是像达世币这种,只有规模较小的代币更容易置于这样的风险之下。

一句话总结就是:理论上可行,但是现实中操作起来难度极大。

面对网友的质疑,Dash 团队很快就在 Telegram 群内回应:






管理员称:达世币在这五年的发展过程中,遭遇过这样的质疑和挑战已经数百次了,但是什么事情都没有发生过。

戏剧化的臆想遍地开花,事实上,达世币的 Chainlocks 几天之后就会推出 v0.13 版本,而紧随其后就会上 v0.14 版本!


Chainlocks 能保区块链安全吗?


上面的各种讨论的对象其实就是两个:我们刚刚讨论的是有可能网络遭受攻击的安全隐患,也就是「矛」的「51% 算力攻击」,那么大家津津乐道,翘首以盼的「盾」Chainlocks 又是怎样一回事呢?

达世币核心开发成员 Alexander Block 在达世币的官方博客上面做了一番非常细致的技术解释:

长效主节点群 Long Living Masternode Quorums (LLMQs)这个概念的出现,使得能够实施针对 51%挖矿攻击的全新保护机制。这种保护机制就被称为 ChainLocks。

ChainLocks 是按照「优先看到」规则进行可验证的网络范围内的测量 / 投票。每个区块都会选择几百个主节点组成的 LLMQ,每个参与成员都会选择当前高度处扩展活跃的链,对第一个区块进行签名。如果足够多的成员(例如 > = 60%)看到的第一个区块是相同的,他们就可以创建 P2P 消息(CLSIG),将其向网络中的所有节点传播。

有效的 CLSIG 消息的存在表明 LLMQ 的大多数成员(例如 60%)已将指定的区块视为第一个区块。由于 LLMQ 是由 Dash 的主节点集(当前大约 4,900 个节点)随机组成的,因此首先在网络中看到此区块分布的节点在统计上与 LLMQ 内部是相同的。这意味着,如果 60%的 LLMQ 成员首先看到该区块,那么网络上大约 60%也应该会先看到它。

如果节点收到有效的 CLSIG 消息,它应该拒绝在 CLSIG 消息中所有在同一高度没有匹配指定的区块。这使得对活跃链的决策快速、简单且明确。使得在该区块下的分叉变得不可能,也让 51% 算力攻击变得不可能,区块链网络看到不符合规定的区块,直接拒绝,保持了主网的统一性。

对于普通用户和商家而言,最重要的影响是,受 ChainLocks 保护的区块进行第一次链上确认后,则视为交易已经确认。由于无法重组已签名 / 锁定的区块,因此交易无法从链上被抹去。

对挖矿经济也产生了影响,它消除了矿工进行链分叉的所有诱因。基于私密或个人挖矿的攻击变得不再可能,因为这些攻击需要依赖于矿工隐瞒长时间的私密链。






PoW 区块链的安全谁来保护?


Dash 似乎有了防护方案,那么其他链怎么办?

ETC 的祸患似乎早在 3 年前就已经被人发现了,这是一只没有得到解决而已。早在 2016 年 8 月份(ETH、ETC 硬分叉后一周),ETHNews 记者 Brianne Rivlin 就发文称一个名叫 51Pool 的矿池准备发动 51% 算力攻击来摧毁 ETC 区块链,不过这件事情并没有发生。

但是该来的还是来了,如今 ETC 的 51% 算力攻击已经发生,ETC 团队给出的解决方案是:开发预警方案、建议用户等待 2500-5000 个区块确认、等待 ETH 升级到 PoS 算法后算力来到 ETC、采用 Keccack256 算法来防止矿机算力等。

其中,第一个方案还没有定论,第二个方案是用户自保,第三个方案是等待 ETH 转向 PoS,然后算力来到 ETC 之后算力提升,这样 51% 算力攻击难度就提升,最后一个方案其实已经被攻破,因为市场上早就有了 Keccack256 算法的矿机。

最著名的要数 BCH 硬分叉导致近半个多月 BCH 用户的资产安全问题和资产价值巨幅波动的问题,同样 BCH ABC 和 BCH SV 都面临了来自对方的算力攻击威胁。在 11 月份的客户端更新中,ABC 团队加入了 checkpoints 功能来防止 SV 对区块进行重组。

早在 2010 年,中本聪发布比特币 0.3.2 版本时就提到,「增加检查点(checkpoints)的可以起到安全作用,即便有人有超过 50% 的算力,他也无法回到昨天去对区块链进行逆转。」

发生 51% 算力攻击,这似乎是几乎所有算力流失、用户流失的 PoW 区块链都在遇到的问题。我们寄希望于开发者去解决这些问题,但却发现这个世界的开发者缺乏定性,一句「共识不合」就可以分叉干别的去了。

如果不靠社区或者开发团队去维护安全性,那么就只能靠社区共识了。然而,这 2 年的各种故事告诉我们,共识的建立是脆弱的,共识的消失也是迅速的。 查看全部
Berikut-3-Tips-Sukses-Menambang-Dash-Coin-yang-Bisa-Anda-Coba.jpg

达世币(DASH)是一款去中心化的加密数字货币,基于比特币的源代码改写而成。它的即时支付技术,还有不错的匿名性,让它在加密货币圈子里迅速走红。不仅如此,达世币主节点能够回馈投资者 10%+的年返利,并且对每月的预算提案进行投票。

但与此同时,这样一款基于 PoW 共识机制的区块链系统,其安全性却薄若蝉翼,随时有可能被攻陷下来。简单来说,算力下降的情况下 PoW 区块链将暴露在「51% 算力攻击机制」风险之下!

达世币的缔造者,埃文·达菲尔德,与近二十人所组成的「核心团队」,当然也知道这一风险,马不停蹄的正在设计一种名为 Chainlocks 的防御机制。前不久刚刚发生 51% 算力攻击的以太经典区块链正在讨论防范算法,BCHABC 也有类似的机制。

这似乎是一场分秒必争的游戏,赶在引信被燃尽之前,将炸弹拆除。

事实上,在 ETC 发生双花攻击之后的这段时间内,大量有关算力攻击的讨论甚嚣尘上。如,Reddit 论坛上的一位网友就发出了这样的一个热帖,迅速引来了无数网友的热议,他的大致意思是:


目前达世币的算力已经严重的集中于 NiceHash (世界上最大的加密货币挖矿算力市场)这里。如果达世币不尽快推出他们设计已久的安全机制 Chainlocks,那么针对达世币的一次「51% 攻击」将很快出现!跟达世币有关的服务的经营者们可得小心了!




至于,「51% 攻击」到底是怎样一回事?而「Chainlocks」防御机制究竟是怎样起作用的?

Reddit 论坛上的用户所发出的警告信是这么说的:

以下是 Reddit 最多讨论的原帖翻译:


开门见山,让我首先来证明一些观点。

我碰巧发现了「有关 ETC 51% 算力攻击」的一些真相,具体来说就是 Nicehash 已经一家独大,并且具备了颠覆区块链基本安全性的能力了!

因为,Nicehash 目前拥有 DASH 总计哈希值的 70%。你可以通过这个链接看到相关数据的对比。(Nicehash 拥有 1390 TH,而总的哈希值为 1790 TH)。

这就是我要说的第一个问题,它太不同寻常了,一般来说 Nicehash 占有 Pow 代币的 10% 到 20% 的的算力,就已经对 PoW 代币中一些规模较小的分叉币构成了安全威胁。

上面只是谈到的第一个问题。

第二个问题是:我们应该来去检查一下矿池。如果算力是导向到一些大家都知道的,而且受到信任的矿池上去,这其实就构不成什么问题。但不幸的是,事实恰恰相反。这个网站揭示出:1790TH/S 的算力中,只有 560TH/S 是来自于比较有声誉的矿池的,而其他的算力都来自一些我们根本不知道的,来历不明的地方,这同样也是极为不寻常的情况。

Dash Explorer 网站展示出来了到底是哪些地址正产出挖矿奖励。你在上面可以看到有四个未知的「大家伙」正在收集所有来历不明的算力。我通过这个区块探测工具(https://dashradar.com/explorer/tx/31de30b48c9263544724c0e607a9cb1f7bf05dc2961119827c52571334506172)这一笔非常特别的交易,包含了上面四个地址中的三个,而这更意味着实际上这三个源源不断收集算力的矿池,其实都是被一个潜藏在「黑暗」中的实体(或机构、或团体、或个人)所控制。这还不是最为致命的,最值得让人担心的是:这三个矿池拥有着53% 甚至更多的算力。这三个地址分别是:

XbUutDsgJbf7Sjjq4omhusNtkT8ih1d7oQ

XkNPrBSJtrHZUvUqb3JF4g5rMB3uzaJfEL

XeMPcKeVDN9bkECGDC7ggtf9QsX5thgKAx

这三个矿池地址是从半年前,也就是去年 9 月份就开始积攒算力的,而且我认为第四个位置的矿池同样也属于这个隐藏在黑暗中的实体,哪怕它是独立于这一个区块链的。因为它几乎也是在同一时间,开始疯狂收集算力。

我们能从中得出什么结论呢?结论只有一个:

ASIC 矿机是区块链之癌。或者保守点说,对于那些只要规模比 BTC 要小的任何一种代币来说,就是如此。它们的安全性压根得不到保证,完全比不上我们现在所熟悉的网络。

而更明确点儿说:Nicehash 也是癌细胞。只要有一个人愿意,他可以立刻针对 DASH 收买大量的算力,只要达到 51% 的比例,那么他就可以为所欲为了。

不管是谁拥有这些矿池,他们挖出来的 DASH 绝对不会停在他们手上一秒,可以说下一秒钟,你就可以在交易所看到它们的身影了。

所以,在 DASH 配置自己的 Chainlocks 的时候,其实已经有人在此之前准备好「51% 算力攻击」了。只要你想去做,现在就可以开始干。任何人,只要你所提供的服务跟 DASH 有关,那么千万不能放松警惕,只要它没有做出相应的调整以及进一步的做出风险补救措施,切不可掉以轻心。




这一篇帖子 Po 出之后,一石激起千层浪。底下纷纷有小伙伴这样回复道:

一位叫 Zoden 的小伙伴就说:「不管是达世币,还是 ETC,它们都是排名前 20 的知名代币,如果它们都要被攻陷了,那么比特币离覆灭的那一天就不远了,整个加密货币圈子就要完蛋啦!」

底下有一个 tranceology3 的人冷言冷语的针对上面观点回复道:「是 POW 要完蛋了,谢谢!」

Savik519 说道:「我估计很快我们就要亲临 51% 攻击了,在不远的将来,将有越来越多的代币会暴露在风险之下。」


Dash 官方回应 51% 算力攻击


达世币的算法是否真的如帖子里面说的那样,可以花钱买得到吗?DASH 真的会遇到 51% 算力攻击问题吗?

首先,我们要明确一个事实:达世币目前是使用的 X11 算法,而要挖矿的话,唯一明智的做法就是使用 ASIC 矿机。

所以几乎所有的矿机目前都在满负荷的运转挖达世币,没有任何闲置的算力资源。当然,你是可以购买其中的一小部分算力,但是你买不了多少的,除非你完全不差钱。没有人会傻到用自己的 AISC 芯片去攻击整个加密货币链,尤其是像达世币这种,只有规模较小的代币更容易置于这样的风险之下。

一句话总结就是:理论上可行,但是现实中操作起来难度极大。

面对网友的质疑,Dash 团队很快就在 Telegram 群内回应:

53a9769c13fe1652e9525713c48e9328.jpg


管理员称:达世币在这五年的发展过程中,遭遇过这样的质疑和挑战已经数百次了,但是什么事情都没有发生过。

戏剧化的臆想遍地开花,事实上,达世币的 Chainlocks 几天之后就会推出 v0.13 版本,而紧随其后就会上 v0.14 版本!


Chainlocks 能保区块链安全吗?


上面的各种讨论的对象其实就是两个:我们刚刚讨论的是有可能网络遭受攻击的安全隐患,也就是「矛」的「51% 算力攻击」,那么大家津津乐道,翘首以盼的「盾」Chainlocks 又是怎样一回事呢?

达世币核心开发成员 Alexander Block 在达世币的官方博客上面做了一番非常细致的技术解释:

长效主节点群 Long Living Masternode Quorums (LLMQs)这个概念的出现,使得能够实施针对 51%挖矿攻击的全新保护机制。这种保护机制就被称为 ChainLocks。

ChainLocks 是按照「优先看到」规则进行可验证的网络范围内的测量 / 投票。每个区块都会选择几百个主节点组成的 LLMQ,每个参与成员都会选择当前高度处扩展活跃的链,对第一个区块进行签名。如果足够多的成员(例如 > = 60%)看到的第一个区块是相同的,他们就可以创建 P2P 消息(CLSIG),将其向网络中的所有节点传播。

有效的 CLSIG 消息的存在表明 LLMQ 的大多数成员(例如 60%)已将指定的区块视为第一个区块。由于 LLMQ 是由 Dash 的主节点集(当前大约 4,900 个节点)随机组成的,因此首先在网络中看到此区块分布的节点在统计上与 LLMQ 内部是相同的。这意味着,如果 60%的 LLMQ 成员首先看到该区块,那么网络上大约 60%也应该会先看到它。

如果节点收到有效的 CLSIG 消息,它应该拒绝在 CLSIG 消息中所有在同一高度没有匹配指定的区块。这使得对活跃链的决策快速、简单且明确。使得在该区块下的分叉变得不可能,也让 51% 算力攻击变得不可能,区块链网络看到不符合规定的区块,直接拒绝,保持了主网的统一性。

对于普通用户和商家而言,最重要的影响是,受 ChainLocks 保护的区块进行第一次链上确认后,则视为交易已经确认。由于无法重组已签名 / 锁定的区块,因此交易无法从链上被抹去。

对挖矿经济也产生了影响,它消除了矿工进行链分叉的所有诱因。基于私密或个人挖矿的攻击变得不再可能,因为这些攻击需要依赖于矿工隐瞒长时间的私密链。

d946ebe084cddcdd72c344922a9cce8e.jpg


PoW 区块链的安全谁来保护?


Dash 似乎有了防护方案,那么其他链怎么办?

ETC 的祸患似乎早在 3 年前就已经被人发现了,这是一只没有得到解决而已。早在 2016 年 8 月份(ETH、ETC 硬分叉后一周),ETHNews 记者 Brianne Rivlin 就发文称一个名叫 51Pool 的矿池准备发动 51% 算力攻击来摧毁 ETC 区块链,不过这件事情并没有发生。

但是该来的还是来了,如今 ETC 的 51% 算力攻击已经发生,ETC 团队给出的解决方案是:开发预警方案、建议用户等待 2500-5000 个区块确认、等待 ETH 升级到 PoS 算法后算力来到 ETC、采用 Keccack256 算法来防止矿机算力等。

其中,第一个方案还没有定论,第二个方案是用户自保,第三个方案是等待 ETH 转向 PoS,然后算力来到 ETC 之后算力提升,这样 51% 算力攻击难度就提升,最后一个方案其实已经被攻破,因为市场上早就有了 Keccack256 算法的矿机。

最著名的要数 BCH 硬分叉导致近半个多月 BCH 用户的资产安全问题和资产价值巨幅波动的问题,同样 BCH ABC 和 BCH SV 都面临了来自对方的算力攻击威胁。在 11 月份的客户端更新中,ABC 团队加入了 checkpoints 功能来防止 SV 对区块进行重组。

早在 2010 年,中本聪发布比特币 0.3.2 版本时就提到,「增加检查点(checkpoints)的可以起到安全作用,即便有人有超过 50% 的算力,他也无法回到昨天去对区块链进行逆转。」

发生 51% 算力攻击,这似乎是几乎所有算力流失、用户流失的 PoW 区块链都在遇到的问题。我们寄希望于开发者去解决这些问题,但却发现这个世界的开发者缺乏定性,一句「共识不合」就可以分叉干别的去了。

如果不靠社区或者开发团队去维护安全性,那么就只能靠社区共识了。然而,这 2 年的各种故事告诉我们,共识的建立是脆弱的,共识的消失也是迅速的。

ETC开发者:算力异常波动或为自私挖矿,与51%攻击无关

资讯8btc 发表了文章 • 2019-01-08 10:30 • 来自相关话题

据巴比特昨日报道,某未知矿池由于掌握了Ethereum Classic(ETC)网络超过51%的算力而引发了社区的担忧。目前ETC开发者已经就这一情况给出回应,认为很有可能是自私挖矿。

ETC开发者发推表示,早前的算力集中并未导致51%攻击,也没有发现双花。而导致这一情况的原因是ASIC制造商Linzhi在测试一批新的1,400/Mh ethash矿机。






与此同时,加密货币交易所Coinbase发文表示其在1月5日“发现ETC区块链出现重组,包含了双花行为”。该交易所已经暂停ETC的充提,目前暂未恢复。

Coinbase还指出,其随后还发现另外8次的重组,同样包含双花,涉及金额达88500 ETC(价值约44.2万美元)。

而在最新发布的一条推文里,ETC开发者表示新矿机测试和Coinbase发现双花,两者均有可能是造成算力异常的原因,并表示“到时候我们就知道了”。






区块链重组指的是,当单个矿工或矿池持有的算力超过了网络中其他参与者,其就能创造新的交易历史。

去年5月,巴西研究者Husam Abboud表示,对ETC网络发动51%攻击所需资金大约“在5500万美元到8500万美元之间”。

截至发稿时,ETC的市值排名在第18位,价格为5美元,24小时跌幅达7.23%。


原文:Ethereum Classic Devs: Hashpower Consolidation on Network Is 'Not 51% Attack'
作者:Ana Alexandre
编译:Wendy 查看全部
740_aHR0cHM6Ly9zMy5jb2ludGVsZWdyYXBoLmNvbS9zdG9yYWdlL3VwbG9hZHMvdmlldy83OTczMWMxNWRlMTE1MTdmMDc4M2EzZTYzMmNhMGZmYi5qcGc.jpg

据巴比特昨日报道,某未知矿池由于掌握了Ethereum Classic(ETC)网络超过51%的算力而引发了社区的担忧。目前ETC开发者已经就这一情况给出回应,认为很有可能是自私挖矿。

ETC开发者发推表示,早前的算力集中并未导致51%攻击,也没有发现双花。而导致这一情况的原因是ASIC制造商Linzhi在测试一批新的1,400/Mh ethash矿机。

201901080205194706.png


与此同时,加密货币交易所Coinbase发文表示其在1月5日“发现ETC区块链出现重组,包含了双花行为”。该交易所已经暂停ETC的充提,目前暂未恢复。

Coinbase还指出,其随后还发现另外8次的重组,同样包含双花,涉及金额达88500 ETC(价值约44.2万美元)。

而在最新发布的一条推文里,ETC开发者表示新矿机测试和Coinbase发现双花,两者均有可能是造成算力异常的原因,并表示“到时候我们就知道了”。

201901080205398130.png


区块链重组指的是,当单个矿工或矿池持有的算力超过了网络中其他参与者,其就能创造新的交易历史。

去年5月,巴西研究者Husam Abboud表示,对ETC网络发动51%攻击所需资金大约“在5500万美元到8500万美元之间”。

截至发稿时,ETC的市值排名在第18位,价格为5美元,24小时跌幅达7.23%。


原文:Ethereum Classic Devs: Hashpower Consolidation on Network Is 'Not 51% Attack'
作者:Ana Alexandre
编译:Wendy

BSV更安全?研究人员上传视频打脸,演示如何在BSV上进行双花

项目8btc 发表了文章 • 2018-12-10 10:28 • 来自相关话题

虽然Craig Wright称Bitcoin SV为最初的比特币(original Bitcoin),但是他的BCH硬分叉并没有像他想象的那样发展,而且似乎这种加密货币并不像他声称的那样安全。

一位研究人员在某视频网站上发布了一个视频,提醒投资者他认为BSV可能会出现双花(double spending)问题。 12月8日发布的视频演示了BSV网络的“零确认交易(0-conf transaction)”如何使任何人都可以双花BSV代币。

比特币现金于2017年8月从比特币的硬分叉中诞生,使用零确认交易(0-conf或Zero-Conf)来实现快速交易。因此,几乎每一个交易都可以在下一个区块中确认。

在视频中演示的多阶段测试中,名为“Reizu”的用户设法在“零确认”中复制BSV代币。视频发布在视频网站Vimeo上,全长大约11分钟。

在这段视频中,Reizu演示了他是如何成功地实施攻击,从而否定了Craig Wright的说法,即比特币SV比分叉前的比特币现金更安全。

这名研究人员发文表示:

“我已经在比特币SV网络上进行了很多次双花。在几个区块挖掘出来以后,我发现正在被挖掘的交易就是那些一直被发送到相同节点的交易。”


除了双花问题以外,Reizu还表示BSV网络“非常中心化”。

当前ABC和SV的竞争还在持续进行中。根据coin dance的数据,截止发稿前,由于ABC算力大幅降低,目前SV的算力为1267PH/s,已经超过ABC的978PH/s,而ABC仅领先SV 3个区块。但是就挖矿利润而言,ABC还是大幅领先:ABC的挖矿利润超过比特币4.4%,而BSV则为BTC的69.88%,为ABC的66.93%。

 
什么是双花?
 

你可能会惊讶地发现,即使在2009年中本聪创建比特币之前,密码学家也多次尝试创建加密安全的数字货币。但是,所有这些尝试都失败了,因为数字货币可以复制并花费两次。 中本聪的比特币已经能够存活十多年,因为它解决了“双花问题”。


原文:https://coindoo.com/researcher-warns-investors-of-possible-bitcoin-cash-sv-double-spending-attack/
作者: Solomon Magawi
编译:Apatheticco 查看全部
201812100121382552.jpg

虽然Craig Wright称Bitcoin SV为最初的比特币(original Bitcoin),但是他的BCH硬分叉并没有像他想象的那样发展,而且似乎这种加密货币并不像他声称的那样安全。

一位研究人员在某视频网站上发布了一个视频,提醒投资者他认为BSV可能会出现双花(double spending)问题。 12月8日发布的视频演示了BSV网络的“零确认交易(0-conf transaction)”如何使任何人都可以双花BSV代币。

比特币现金于2017年8月从比特币的硬分叉中诞生,使用零确认交易(0-conf或Zero-Conf)来实现快速交易。因此,几乎每一个交易都可以在下一个区块中确认。

在视频中演示的多阶段测试中,名为“Reizu”的用户设法在“零确认”中复制BSV代币。视频发布在视频网站Vimeo上,全长大约11分钟。

在这段视频中,Reizu演示了他是如何成功地实施攻击,从而否定了Craig Wright的说法,即比特币SV比分叉前的比特币现金更安全。

这名研究人员发文表示:


“我已经在比特币SV网络上进行了很多次双花。在几个区块挖掘出来以后,我发现正在被挖掘的交易就是那些一直被发送到相同节点的交易。”



除了双花问题以外,Reizu还表示BSV网络“非常中心化”。

当前ABC和SV的竞争还在持续进行中。根据coin dance的数据,截止发稿前,由于ABC算力大幅降低,目前SV的算力为1267PH/s,已经超过ABC的978PH/s,而ABC仅领先SV 3个区块。但是就挖矿利润而言,ABC还是大幅领先:ABC的挖矿利润超过比特币4.4%,而BSV则为BTC的69.88%,为ABC的66.93%。

 
什么是双花?
 

你可能会惊讶地发现,即使在2009年中本聪创建比特币之前,密码学家也多次尝试创建加密安全的数字货币。但是,所有这些尝试都失败了,因为数字货币可以复制并花费两次。 中本聪的比特币已经能够存活十多年,因为它解决了“双花问题”。


原文:https://coindoo.com/researcher-warns-investors-of-possible-bitcoin-cash-sv-double-spending-attack/
作者: Solomon Magawi
编译:Apatheticco

Dash 也要被算力攻击?谁来保护 PoW 区块链

攻略blockbeats 发表了文章 • 2019-01-17 10:31 • 来自相关话题

达世币(DASH)是一款去中心化的加密数字货币,基于比特币的源代码改写而成。它的即时支付技术,还有不错的匿名性,让它在加密货币圈子里迅速走红。不仅如此,达世币主节点能够回馈投资者 10%+的年返利,并且对每月的预算提案进行投票。

但与此同时,这样一款基于 PoW 共识机制的区块链系统,其安全性却薄若蝉翼,随时有可能被攻陷下来。简单来说,算力下降的情况下 PoW 区块链将暴露在「51% 算力攻击机制」风险之下!

达世币的缔造者,埃文·达菲尔德,与近二十人所组成的「核心团队」,当然也知道这一风险,马不停蹄的正在设计一种名为 Chainlocks 的防御机制。前不久刚刚发生 51% 算力攻击的以太经典区块链正在讨论防范算法,BCHABC 也有类似的机制。

这似乎是一场分秒必争的游戏,赶在引信被燃尽之前,将炸弹拆除。

事实上,在 ETC 发生双花攻击之后的这段时间内,大量有关算力攻击的讨论甚嚣尘上。如,Reddit 论坛上的一位网友就发出了这样的一个热帖,迅速引来了无数网友的热议,他的大致意思是:

目前达世币的算力已经严重的集中于 NiceHash (世界上最大的加密货币挖矿算力市场)这里。如果达世币不尽快推出他们设计已久的安全机制 Chainlocks,那么针对达世币的一次「51% 攻击」将很快出现!跟达世币有关的服务的经营者们可得小心了!



至于,「51% 攻击」到底是怎样一回事?而「Chainlocks」防御机制究竟是怎样起作用的?

Reddit 论坛上的用户所发出的警告信是这么说的:

以下是 Reddit 最多讨论的原帖翻译:

开门见山,让我首先来证明一些观点。

我碰巧发现了「有关 ETC 51% 算力攻击」的一些真相,具体来说就是 Nicehash 已经一家独大,并且具备了颠覆区块链基本安全性的能力了!

因为,Nicehash 目前拥有 DASH 总计哈希值的 70%。你可以通过这个链接看到相关数据的对比。(Nicehash 拥有 1390 TH,而总的哈希值为 1790 TH)。

这就是我要说的第一个问题,它太不同寻常了,一般来说 Nicehash 占有 Pow 代币的 10% 到 20% 的的算力,就已经对 PoW 代币中一些规模较小的分叉币构成了安全威胁。

上面只是谈到的第一个问题。

第二个问题是:我们应该来去检查一下矿池。如果算力是导向到一些大家都知道的,而且受到信任的矿池上去,这其实就构不成什么问题。但不幸的是,事实恰恰相反。这个网站揭示出:1790TH/S 的算力中,只有 560TH/S 是来自于比较有声誉的矿池的,而其他的算力都来自一些我们根本不知道的,来历不明的地方,这同样也是极为不寻常的情况。

Dash Explorer 网站展示出来了到底是哪些地址正产出挖矿奖励。你在上面可以看到有四个未知的「大家伙」正在收集所有来历不明的算力。我通过这个区块探测工具(https://dashradar.com/explorer/tx/31de30b48c9263544724c0e607a9cb1f7bf05dc2961119827c52571334506172)这一笔非常特别的交易,包含了上面四个地址中的三个,而这更意味着实际上这三个源源不断收集算力的矿池,其实都是被一个潜藏在「黑暗」中的实体(或机构、或团体、或个人)所控制。这还不是最为致命的,最值得让人担心的是:这三个矿池拥有着53% 甚至更多的算力。这三个地址分别是:

XbUutDsgJbf7Sjjq4omhusNtkT8ih1d7oQ

XkNPrBSJtrHZUvUqb3JF4g5rMB3uzaJfEL

XeMPcKeVDN9bkECGDC7ggtf9QsX5thgKAx

这三个矿池地址是从半年前,也就是去年 9 月份就开始积攒算力的,而且我认为第四个位置的矿池同样也属于这个隐藏在黑暗中的实体,哪怕它是独立于这一个区块链的。因为它几乎也是在同一时间,开始疯狂收集算力。

我们能从中得出什么结论呢?结论只有一个:

ASIC 矿机是区块链之癌。或者保守点说,对于那些只要规模比 BTC 要小的任何一种代币来说,就是如此。它们的安全性压根得不到保证,完全比不上我们现在所熟悉的网络。

而更明确点儿说:Nicehash 也是癌细胞。只要有一个人愿意,他可以立刻针对 DASH 收买大量的算力,只要达到 51% 的比例,那么他就可以为所欲为了。

不管是谁拥有这些矿池,他们挖出来的 DASH 绝对不会停在他们手上一秒,可以说下一秒钟,你就可以在交易所看到它们的身影了。

所以,在 DASH 配置自己的 Chainlocks 的时候,其实已经有人在此之前准备好「51% 算力攻击」了。只要你想去做,现在就可以开始干。任何人,只要你所提供的服务跟 DASH 有关,那么千万不能放松警惕,只要它没有做出相应的调整以及进一步的做出风险补救措施,切不可掉以轻心。



这一篇帖子 Po 出之后,一石激起千层浪。底下纷纷有小伙伴这样回复道:

一位叫 Zoden 的小伙伴就说:「不管是达世币,还是 ETC,它们都是排名前 20 的知名代币,如果它们都要被攻陷了,那么比特币离覆灭的那一天就不远了,整个加密货币圈子就要完蛋啦!」

底下有一个 tranceology3 的人冷言冷语的针对上面观点回复道:「是 POW 要完蛋了,谢谢!」

Savik519 说道:「我估计很快我们就要亲临 51% 攻击了,在不远的将来,将有越来越多的代币会暴露在风险之下。」


Dash 官方回应 51% 算力攻击


达世币的算法是否真的如帖子里面说的那样,可以花钱买得到吗?DASH 真的会遇到 51% 算力攻击问题吗?

首先,我们要明确一个事实:达世币目前是使用的 X11 算法,而要挖矿的话,唯一明智的做法就是使用 ASIC 矿机。

所以几乎所有的矿机目前都在满负荷的运转挖达世币,没有任何闲置的算力资源。当然,你是可以购买其中的一小部分算力,但是你买不了多少的,除非你完全不差钱。没有人会傻到用自己的 AISC 芯片去攻击整个加密货币链,尤其是像达世币这种,只有规模较小的代币更容易置于这样的风险之下。

一句话总结就是:理论上可行,但是现实中操作起来难度极大。

面对网友的质疑,Dash 团队很快就在 Telegram 群内回应:






管理员称:达世币在这五年的发展过程中,遭遇过这样的质疑和挑战已经数百次了,但是什么事情都没有发生过。

戏剧化的臆想遍地开花,事实上,达世币的 Chainlocks 几天之后就会推出 v0.13 版本,而紧随其后就会上 v0.14 版本!


Chainlocks 能保区块链安全吗?


上面的各种讨论的对象其实就是两个:我们刚刚讨论的是有可能网络遭受攻击的安全隐患,也就是「矛」的「51% 算力攻击」,那么大家津津乐道,翘首以盼的「盾」Chainlocks 又是怎样一回事呢?

达世币核心开发成员 Alexander Block 在达世币的官方博客上面做了一番非常细致的技术解释:

长效主节点群 Long Living Masternode Quorums (LLMQs)这个概念的出现,使得能够实施针对 51%挖矿攻击的全新保护机制。这种保护机制就被称为 ChainLocks。

ChainLocks 是按照「优先看到」规则进行可验证的网络范围内的测量 / 投票。每个区块都会选择几百个主节点组成的 LLMQ,每个参与成员都会选择当前高度处扩展活跃的链,对第一个区块进行签名。如果足够多的成员(例如 > = 60%)看到的第一个区块是相同的,他们就可以创建 P2P 消息(CLSIG),将其向网络中的所有节点传播。

有效的 CLSIG 消息的存在表明 LLMQ 的大多数成员(例如 60%)已将指定的区块视为第一个区块。由于 LLMQ 是由 Dash 的主节点集(当前大约 4,900 个节点)随机组成的,因此首先在网络中看到此区块分布的节点在统计上与 LLMQ 内部是相同的。这意味着,如果 60%的 LLMQ 成员首先看到该区块,那么网络上大约 60%也应该会先看到它。

如果节点收到有效的 CLSIG 消息,它应该拒绝在 CLSIG 消息中所有在同一高度没有匹配指定的区块。这使得对活跃链的决策快速、简单且明确。使得在该区块下的分叉变得不可能,也让 51% 算力攻击变得不可能,区块链网络看到不符合规定的区块,直接拒绝,保持了主网的统一性。

对于普通用户和商家而言,最重要的影响是,受 ChainLocks 保护的区块进行第一次链上确认后,则视为交易已经确认。由于无法重组已签名 / 锁定的区块,因此交易无法从链上被抹去。

对挖矿经济也产生了影响,它消除了矿工进行链分叉的所有诱因。基于私密或个人挖矿的攻击变得不再可能,因为这些攻击需要依赖于矿工隐瞒长时间的私密链。






PoW 区块链的安全谁来保护?


Dash 似乎有了防护方案,那么其他链怎么办?

ETC 的祸患似乎早在 3 年前就已经被人发现了,这是一只没有得到解决而已。早在 2016 年 8 月份(ETH、ETC 硬分叉后一周),ETHNews 记者 Brianne Rivlin 就发文称一个名叫 51Pool 的矿池准备发动 51% 算力攻击来摧毁 ETC 区块链,不过这件事情并没有发生。

但是该来的还是来了,如今 ETC 的 51% 算力攻击已经发生,ETC 团队给出的解决方案是:开发预警方案、建议用户等待 2500-5000 个区块确认、等待 ETH 升级到 PoS 算法后算力来到 ETC、采用 Keccack256 算法来防止矿机算力等。

其中,第一个方案还没有定论,第二个方案是用户自保,第三个方案是等待 ETH 转向 PoS,然后算力来到 ETC 之后算力提升,这样 51% 算力攻击难度就提升,最后一个方案其实已经被攻破,因为市场上早就有了 Keccack256 算法的矿机。

最著名的要数 BCH 硬分叉导致近半个多月 BCH 用户的资产安全问题和资产价值巨幅波动的问题,同样 BCH ABC 和 BCH SV 都面临了来自对方的算力攻击威胁。在 11 月份的客户端更新中,ABC 团队加入了 checkpoints 功能来防止 SV 对区块进行重组。

早在 2010 年,中本聪发布比特币 0.3.2 版本时就提到,「增加检查点(checkpoints)的可以起到安全作用,即便有人有超过 50% 的算力,他也无法回到昨天去对区块链进行逆转。」

发生 51% 算力攻击,这似乎是几乎所有算力流失、用户流失的 PoW 区块链都在遇到的问题。我们寄希望于开发者去解决这些问题,但却发现这个世界的开发者缺乏定性,一句「共识不合」就可以分叉干别的去了。

如果不靠社区或者开发团队去维护安全性,那么就只能靠社区共识了。然而,这 2 年的各种故事告诉我们,共识的建立是脆弱的,共识的消失也是迅速的。 查看全部
Berikut-3-Tips-Sukses-Menambang-Dash-Coin-yang-Bisa-Anda-Coba.jpg

达世币(DASH)是一款去中心化的加密数字货币,基于比特币的源代码改写而成。它的即时支付技术,还有不错的匿名性,让它在加密货币圈子里迅速走红。不仅如此,达世币主节点能够回馈投资者 10%+的年返利,并且对每月的预算提案进行投票。

但与此同时,这样一款基于 PoW 共识机制的区块链系统,其安全性却薄若蝉翼,随时有可能被攻陷下来。简单来说,算力下降的情况下 PoW 区块链将暴露在「51% 算力攻击机制」风险之下!

达世币的缔造者,埃文·达菲尔德,与近二十人所组成的「核心团队」,当然也知道这一风险,马不停蹄的正在设计一种名为 Chainlocks 的防御机制。前不久刚刚发生 51% 算力攻击的以太经典区块链正在讨论防范算法,BCHABC 也有类似的机制。

这似乎是一场分秒必争的游戏,赶在引信被燃尽之前,将炸弹拆除。

事实上,在 ETC 发生双花攻击之后的这段时间内,大量有关算力攻击的讨论甚嚣尘上。如,Reddit 论坛上的一位网友就发出了这样的一个热帖,迅速引来了无数网友的热议,他的大致意思是:


目前达世币的算力已经严重的集中于 NiceHash (世界上最大的加密货币挖矿算力市场)这里。如果达世币不尽快推出他们设计已久的安全机制 Chainlocks,那么针对达世币的一次「51% 攻击」将很快出现!跟达世币有关的服务的经营者们可得小心了!




至于,「51% 攻击」到底是怎样一回事?而「Chainlocks」防御机制究竟是怎样起作用的?

Reddit 论坛上的用户所发出的警告信是这么说的:

以下是 Reddit 最多讨论的原帖翻译:


开门见山,让我首先来证明一些观点。

我碰巧发现了「有关 ETC 51% 算力攻击」的一些真相,具体来说就是 Nicehash 已经一家独大,并且具备了颠覆区块链基本安全性的能力了!

因为,Nicehash 目前拥有 DASH 总计哈希值的 70%。你可以通过这个链接看到相关数据的对比。(Nicehash 拥有 1390 TH,而总的哈希值为 1790 TH)。

这就是我要说的第一个问题,它太不同寻常了,一般来说 Nicehash 占有 Pow 代币的 10% 到 20% 的的算力,就已经对 PoW 代币中一些规模较小的分叉币构成了安全威胁。

上面只是谈到的第一个问题。

第二个问题是:我们应该来去检查一下矿池。如果算力是导向到一些大家都知道的,而且受到信任的矿池上去,这其实就构不成什么问题。但不幸的是,事实恰恰相反。这个网站揭示出:1790TH/S 的算力中,只有 560TH/S 是来自于比较有声誉的矿池的,而其他的算力都来自一些我们根本不知道的,来历不明的地方,这同样也是极为不寻常的情况。

Dash Explorer 网站展示出来了到底是哪些地址正产出挖矿奖励。你在上面可以看到有四个未知的「大家伙」正在收集所有来历不明的算力。我通过这个区块探测工具(https://dashradar.com/explorer/tx/31de30b48c9263544724c0e607a9cb1f7bf05dc2961119827c52571334506172)这一笔非常特别的交易,包含了上面四个地址中的三个,而这更意味着实际上这三个源源不断收集算力的矿池,其实都是被一个潜藏在「黑暗」中的实体(或机构、或团体、或个人)所控制。这还不是最为致命的,最值得让人担心的是:这三个矿池拥有着53% 甚至更多的算力。这三个地址分别是:

XbUutDsgJbf7Sjjq4omhusNtkT8ih1d7oQ

XkNPrBSJtrHZUvUqb3JF4g5rMB3uzaJfEL

XeMPcKeVDN9bkECGDC7ggtf9QsX5thgKAx

这三个矿池地址是从半年前,也就是去年 9 月份就开始积攒算力的,而且我认为第四个位置的矿池同样也属于这个隐藏在黑暗中的实体,哪怕它是独立于这一个区块链的。因为它几乎也是在同一时间,开始疯狂收集算力。

我们能从中得出什么结论呢?结论只有一个:

ASIC 矿机是区块链之癌。或者保守点说,对于那些只要规模比 BTC 要小的任何一种代币来说,就是如此。它们的安全性压根得不到保证,完全比不上我们现在所熟悉的网络。

而更明确点儿说:Nicehash 也是癌细胞。只要有一个人愿意,他可以立刻针对 DASH 收买大量的算力,只要达到 51% 的比例,那么他就可以为所欲为了。

不管是谁拥有这些矿池,他们挖出来的 DASH 绝对不会停在他们手上一秒,可以说下一秒钟,你就可以在交易所看到它们的身影了。

所以,在 DASH 配置自己的 Chainlocks 的时候,其实已经有人在此之前准备好「51% 算力攻击」了。只要你想去做,现在就可以开始干。任何人,只要你所提供的服务跟 DASH 有关,那么千万不能放松警惕,只要它没有做出相应的调整以及进一步的做出风险补救措施,切不可掉以轻心。




这一篇帖子 Po 出之后,一石激起千层浪。底下纷纷有小伙伴这样回复道:

一位叫 Zoden 的小伙伴就说:「不管是达世币,还是 ETC,它们都是排名前 20 的知名代币,如果它们都要被攻陷了,那么比特币离覆灭的那一天就不远了,整个加密货币圈子就要完蛋啦!」

底下有一个 tranceology3 的人冷言冷语的针对上面观点回复道:「是 POW 要完蛋了,谢谢!」

Savik519 说道:「我估计很快我们就要亲临 51% 攻击了,在不远的将来,将有越来越多的代币会暴露在风险之下。」


Dash 官方回应 51% 算力攻击


达世币的算法是否真的如帖子里面说的那样,可以花钱买得到吗?DASH 真的会遇到 51% 算力攻击问题吗?

首先,我们要明确一个事实:达世币目前是使用的 X11 算法,而要挖矿的话,唯一明智的做法就是使用 ASIC 矿机。

所以几乎所有的矿机目前都在满负荷的运转挖达世币,没有任何闲置的算力资源。当然,你是可以购买其中的一小部分算力,但是你买不了多少的,除非你完全不差钱。没有人会傻到用自己的 AISC 芯片去攻击整个加密货币链,尤其是像达世币这种,只有规模较小的代币更容易置于这样的风险之下。

一句话总结就是:理论上可行,但是现实中操作起来难度极大。

面对网友的质疑,Dash 团队很快就在 Telegram 群内回应:

53a9769c13fe1652e9525713c48e9328.jpg


管理员称:达世币在这五年的发展过程中,遭遇过这样的质疑和挑战已经数百次了,但是什么事情都没有发生过。

戏剧化的臆想遍地开花,事实上,达世币的 Chainlocks 几天之后就会推出 v0.13 版本,而紧随其后就会上 v0.14 版本!


Chainlocks 能保区块链安全吗?


上面的各种讨论的对象其实就是两个:我们刚刚讨论的是有可能网络遭受攻击的安全隐患,也就是「矛」的「51% 算力攻击」,那么大家津津乐道,翘首以盼的「盾」Chainlocks 又是怎样一回事呢?

达世币核心开发成员 Alexander Block 在达世币的官方博客上面做了一番非常细致的技术解释:

长效主节点群 Long Living Masternode Quorums (LLMQs)这个概念的出现,使得能够实施针对 51%挖矿攻击的全新保护机制。这种保护机制就被称为 ChainLocks。

ChainLocks 是按照「优先看到」规则进行可验证的网络范围内的测量 / 投票。每个区块都会选择几百个主节点组成的 LLMQ,每个参与成员都会选择当前高度处扩展活跃的链,对第一个区块进行签名。如果足够多的成员(例如 > = 60%)看到的第一个区块是相同的,他们就可以创建 P2P 消息(CLSIG),将其向网络中的所有节点传播。

有效的 CLSIG 消息的存在表明 LLMQ 的大多数成员(例如 60%)已将指定的区块视为第一个区块。由于 LLMQ 是由 Dash 的主节点集(当前大约 4,900 个节点)随机组成的,因此首先在网络中看到此区块分布的节点在统计上与 LLMQ 内部是相同的。这意味着,如果 60%的 LLMQ 成员首先看到该区块,那么网络上大约 60%也应该会先看到它。

如果节点收到有效的 CLSIG 消息,它应该拒绝在 CLSIG 消息中所有在同一高度没有匹配指定的区块。这使得对活跃链的决策快速、简单且明确。使得在该区块下的分叉变得不可能,也让 51% 算力攻击变得不可能,区块链网络看到不符合规定的区块,直接拒绝,保持了主网的统一性。

对于普通用户和商家而言,最重要的影响是,受 ChainLocks 保护的区块进行第一次链上确认后,则视为交易已经确认。由于无法重组已签名 / 锁定的区块,因此交易无法从链上被抹去。

对挖矿经济也产生了影响,它消除了矿工进行链分叉的所有诱因。基于私密或个人挖矿的攻击变得不再可能,因为这些攻击需要依赖于矿工隐瞒长时间的私密链。

d946ebe084cddcdd72c344922a9cce8e.jpg


PoW 区块链的安全谁来保护?


Dash 似乎有了防护方案,那么其他链怎么办?

ETC 的祸患似乎早在 3 年前就已经被人发现了,这是一只没有得到解决而已。早在 2016 年 8 月份(ETH、ETC 硬分叉后一周),ETHNews 记者 Brianne Rivlin 就发文称一个名叫 51Pool 的矿池准备发动 51% 算力攻击来摧毁 ETC 区块链,不过这件事情并没有发生。

但是该来的还是来了,如今 ETC 的 51% 算力攻击已经发生,ETC 团队给出的解决方案是:开发预警方案、建议用户等待 2500-5000 个区块确认、等待 ETH 升级到 PoS 算法后算力来到 ETC、采用 Keccack256 算法来防止矿机算力等。

其中,第一个方案还没有定论,第二个方案是用户自保,第三个方案是等待 ETH 转向 PoS,然后算力来到 ETC 之后算力提升,这样 51% 算力攻击难度就提升,最后一个方案其实已经被攻破,因为市场上早就有了 Keccack256 算法的矿机。

最著名的要数 BCH 硬分叉导致近半个多月 BCH 用户的资产安全问题和资产价值巨幅波动的问题,同样 BCH ABC 和 BCH SV 都面临了来自对方的算力攻击威胁。在 11 月份的客户端更新中,ABC 团队加入了 checkpoints 功能来防止 SV 对区块进行重组。

早在 2010 年,中本聪发布比特币 0.3.2 版本时就提到,「增加检查点(checkpoints)的可以起到安全作用,即便有人有超过 50% 的算力,他也无法回到昨天去对区块链进行逆转。」

发生 51% 算力攻击,这似乎是几乎所有算力流失、用户流失的 PoW 区块链都在遇到的问题。我们寄希望于开发者去解决这些问题,但却发现这个世界的开发者缺乏定性,一句「共识不合」就可以分叉干别的去了。

如果不靠社区或者开发团队去维护安全性,那么就只能靠社区共识了。然而,这 2 年的各种故事告诉我们,共识的建立是脆弱的,共识的消失也是迅速的。

ETC开发者:算力异常波动或为自私挖矿,与51%攻击无关

资讯8btc 发表了文章 • 2019-01-08 10:30 • 来自相关话题

据巴比特昨日报道,某未知矿池由于掌握了Ethereum Classic(ETC)网络超过51%的算力而引发了社区的担忧。目前ETC开发者已经就这一情况给出回应,认为很有可能是自私挖矿。

ETC开发者发推表示,早前的算力集中并未导致51%攻击,也没有发现双花。而导致这一情况的原因是ASIC制造商Linzhi在测试一批新的1,400/Mh ethash矿机。






与此同时,加密货币交易所Coinbase发文表示其在1月5日“发现ETC区块链出现重组,包含了双花行为”。该交易所已经暂停ETC的充提,目前暂未恢复。

Coinbase还指出,其随后还发现另外8次的重组,同样包含双花,涉及金额达88500 ETC(价值约44.2万美元)。

而在最新发布的一条推文里,ETC开发者表示新矿机测试和Coinbase发现双花,两者均有可能是造成算力异常的原因,并表示“到时候我们就知道了”。






区块链重组指的是,当单个矿工或矿池持有的算力超过了网络中其他参与者,其就能创造新的交易历史。

去年5月,巴西研究者Husam Abboud表示,对ETC网络发动51%攻击所需资金大约“在5500万美元到8500万美元之间”。

截至发稿时,ETC的市值排名在第18位,价格为5美元,24小时跌幅达7.23%。


原文:Ethereum Classic Devs: Hashpower Consolidation on Network Is 'Not 51% Attack'
作者:Ana Alexandre
编译:Wendy 查看全部
740_aHR0cHM6Ly9zMy5jb2ludGVsZWdyYXBoLmNvbS9zdG9yYWdlL3VwbG9hZHMvdmlldy83OTczMWMxNWRlMTE1MTdmMDc4M2EzZTYzMmNhMGZmYi5qcGc.jpg

据巴比特昨日报道,某未知矿池由于掌握了Ethereum Classic(ETC)网络超过51%的算力而引发了社区的担忧。目前ETC开发者已经就这一情况给出回应,认为很有可能是自私挖矿。

ETC开发者发推表示,早前的算力集中并未导致51%攻击,也没有发现双花。而导致这一情况的原因是ASIC制造商Linzhi在测试一批新的1,400/Mh ethash矿机。

201901080205194706.png


与此同时,加密货币交易所Coinbase发文表示其在1月5日“发现ETC区块链出现重组,包含了双花行为”。该交易所已经暂停ETC的充提,目前暂未恢复。

Coinbase还指出,其随后还发现另外8次的重组,同样包含双花,涉及金额达88500 ETC(价值约44.2万美元)。

而在最新发布的一条推文里,ETC开发者表示新矿机测试和Coinbase发现双花,两者均有可能是造成算力异常的原因,并表示“到时候我们就知道了”。

201901080205398130.png


区块链重组指的是,当单个矿工或矿池持有的算力超过了网络中其他参与者,其就能创造新的交易历史。

去年5月,巴西研究者Husam Abboud表示,对ETC网络发动51%攻击所需资金大约“在5500万美元到8500万美元之间”。

截至发稿时,ETC的市值排名在第18位,价格为5美元,24小时跌幅达7.23%。


原文:Ethereum Classic Devs: Hashpower Consolidation on Network Is 'Not 51% Attack'
作者:Ana Alexandre
编译:Wendy

BSV更安全?研究人员上传视频打脸,演示如何在BSV上进行双花

项目8btc 发表了文章 • 2018-12-10 10:28 • 来自相关话题

虽然Craig Wright称Bitcoin SV为最初的比特币(original Bitcoin),但是他的BCH硬分叉并没有像他想象的那样发展,而且似乎这种加密货币并不像他声称的那样安全。

一位研究人员在某视频网站上发布了一个视频,提醒投资者他认为BSV可能会出现双花(double spending)问题。 12月8日发布的视频演示了BSV网络的“零确认交易(0-conf transaction)”如何使任何人都可以双花BSV代币。

比特币现金于2017年8月从比特币的硬分叉中诞生,使用零确认交易(0-conf或Zero-Conf)来实现快速交易。因此,几乎每一个交易都可以在下一个区块中确认。

在视频中演示的多阶段测试中,名为“Reizu”的用户设法在“零确认”中复制BSV代币。视频发布在视频网站Vimeo上,全长大约11分钟。

在这段视频中,Reizu演示了他是如何成功地实施攻击,从而否定了Craig Wright的说法,即比特币SV比分叉前的比特币现金更安全。

这名研究人员发文表示:

“我已经在比特币SV网络上进行了很多次双花。在几个区块挖掘出来以后,我发现正在被挖掘的交易就是那些一直被发送到相同节点的交易。”


除了双花问题以外,Reizu还表示BSV网络“非常中心化”。

当前ABC和SV的竞争还在持续进行中。根据coin dance的数据,截止发稿前,由于ABC算力大幅降低,目前SV的算力为1267PH/s,已经超过ABC的978PH/s,而ABC仅领先SV 3个区块。但是就挖矿利润而言,ABC还是大幅领先:ABC的挖矿利润超过比特币4.4%,而BSV则为BTC的69.88%,为ABC的66.93%。

 
什么是双花?
 

你可能会惊讶地发现,即使在2009年中本聪创建比特币之前,密码学家也多次尝试创建加密安全的数字货币。但是,所有这些尝试都失败了,因为数字货币可以复制并花费两次。 中本聪的比特币已经能够存活十多年,因为它解决了“双花问题”。


原文:https://coindoo.com/researcher-warns-investors-of-possible-bitcoin-cash-sv-double-spending-attack/
作者: Solomon Magawi
编译:Apatheticco 查看全部
201812100121382552.jpg

虽然Craig Wright称Bitcoin SV为最初的比特币(original Bitcoin),但是他的BCH硬分叉并没有像他想象的那样发展,而且似乎这种加密货币并不像他声称的那样安全。

一位研究人员在某视频网站上发布了一个视频,提醒投资者他认为BSV可能会出现双花(double spending)问题。 12月8日发布的视频演示了BSV网络的“零确认交易(0-conf transaction)”如何使任何人都可以双花BSV代币。

比特币现金于2017年8月从比特币的硬分叉中诞生,使用零确认交易(0-conf或Zero-Conf)来实现快速交易。因此,几乎每一个交易都可以在下一个区块中确认。

在视频中演示的多阶段测试中,名为“Reizu”的用户设法在“零确认”中复制BSV代币。视频发布在视频网站Vimeo上,全长大约11分钟。

在这段视频中,Reizu演示了他是如何成功地实施攻击,从而否定了Craig Wright的说法,即比特币SV比分叉前的比特币现金更安全。

这名研究人员发文表示:


“我已经在比特币SV网络上进行了很多次双花。在几个区块挖掘出来以后,我发现正在被挖掘的交易就是那些一直被发送到相同节点的交易。”



除了双花问题以外,Reizu还表示BSV网络“非常中心化”。

当前ABC和SV的竞争还在持续进行中。根据coin dance的数据,截止发稿前,由于ABC算力大幅降低,目前SV的算力为1267PH/s,已经超过ABC的978PH/s,而ABC仅领先SV 3个区块。但是就挖矿利润而言,ABC还是大幅领先:ABC的挖矿利润超过比特币4.4%,而BSV则为BTC的69.88%,为ABC的66.93%。

 
什么是双花?
 

你可能会惊讶地发现,即使在2009年中本聪创建比特币之前,密码学家也多次尝试创建加密安全的数字货币。但是,所有这些尝试都失败了,因为数字货币可以复制并花费两次。 中本聪的比特币已经能够存活十多年,因为它解决了“双花问题”。


原文:https://coindoo.com/researcher-warns-investors-of-possible-bitcoin-cash-sv-double-spending-attack/
作者: Solomon Magawi
编译:Apatheticco

矿工大量关机、大矿场整合或将使比特币面临双花攻击威胁

资讯odaily 发表了文章 • 2018-12-06 11:12 • 来自相关话题

但人们还是不习惯应对这种攻击方式。

比特币熊市直接地对矿工造成了影响。

从11月开始,比特币的价格就开始呈现自由落体式下降。截至发稿,火币行情报价 3878.72 美元。而支撑矿工盈利的比特币价格应该要超过 4500 美元。

个体散户矿工难以为继,纷纷关机。据彭博报道,独立调查机构 Autonomous Research LLP 的数据显示,目前至少有 10 万名矿工已经停产。研究机构 Fundstrat Global Advisors LLC 估计,自 9 月初以来,已经有大约 140 万台服务器被关闭。

研究机构 Diar 一项报告指出,尽管今年矿业收入超过 5 亿美元,但两家主要矿商 BTCC Pool 和 Giga Watt 已申请破产,后者负债约 1000 - 5000 万美元。蚂蚁矿机 S9 的挖矿成本和批发电力成本在最佳情况下,矿工需要 30 - 45% 的毛利率才能保持盈利。今年 8 月 - 11 月,矿工的平均毛利率约为 56% 。

由于大型采矿企业的电力成本较低,利润空间相对较大。比特币挖矿已经进入了财力雄厚的大玩家时代。

随着日益激烈的竞争,大矿场将面临整合以适应生存,但这种整合将可能使数字货币市场面临 51% 的双花攻击。

Group-IB 发布的一份新报告显示,恶意矿工今年利用一种“工作证明”( PoW )共识算法,针对较小的加密货币项目发起 51% 的攻击,迄今已获得 1950 万美元的利润。

51% 攻击,又被称为 Majority attack 。这种攻击是通过控制网络算力实现双花。如果攻击者控制了网络中50%以上的算力,那么在他控制算力的这段时间,他可以将区块逆转,进行反向交易,实现双花。

51%攻击可以由一名拥有大量算力的矿工或一组矿工组成的一个采矿池进行,控制 51% 的算力本身并不一定是攻击,除非有意使用此优势。

比特币黄金和ZenCash此前都曾遭遇过 51% 攻击,使他们的投资者损失了数百万美元。

为了让矿工执行攻击,他们必须首先牺牲网络通常奖励他们的利润丰厚的收入来合法地处理加密货币交易。攻击比特币的区块链并不便宜,但随着加密货币市场价格下跌,“51%攻击”成本也出现下降。根据Crypto51 的数据,目前每小时攻击成本是 300,067 美元。






2018年51%攻击频繁发生,但Awake Security的研究员 Troy Kent 本月早些时候在纽约InfoSecurity北美会议上发表他的研究结果表示,黑客通过加密挖矿工具进行网络攻击,尽管这是一种类似于僵尸网络或特洛伊木马那样的合法威胁,但人们还是不习惯应对这种攻击方式。另外,他建议公司需要实现基于行为和分析的更先进的检测方法。 查看全部
mining-attack-768x768.jpg

但人们还是不习惯应对这种攻击方式。

比特币熊市直接地对矿工造成了影响。

从11月开始,比特币的价格就开始呈现自由落体式下降。截至发稿,火币行情报价 3878.72 美元。而支撑矿工盈利的比特币价格应该要超过 4500 美元。

个体散户矿工难以为继,纷纷关机。据彭博报道,独立调查机构 Autonomous Research LLP 的数据显示,目前至少有 10 万名矿工已经停产。研究机构 Fundstrat Global Advisors LLC 估计,自 9 月初以来,已经有大约 140 万台服务器被关闭。

研究机构 Diar 一项报告指出,尽管今年矿业收入超过 5 亿美元,但两家主要矿商 BTCC Pool 和 Giga Watt 已申请破产,后者负债约 1000 - 5000 万美元。蚂蚁矿机 S9 的挖矿成本和批发电力成本在最佳情况下,矿工需要 30 - 45% 的毛利率才能保持盈利。今年 8 月 - 11 月,矿工的平均毛利率约为 56% 。

由于大型采矿企业的电力成本较低,利润空间相对较大。比特币挖矿已经进入了财力雄厚的大玩家时代。

随着日益激烈的竞争,大矿场将面临整合以适应生存,但这种整合将可能使数字货币市场面临 51% 的双花攻击。

Group-IB 发布的一份新报告显示,恶意矿工今年利用一种“工作证明”( PoW )共识算法,针对较小的加密货币项目发起 51% 的攻击,迄今已获得 1950 万美元的利润。

51% 攻击,又被称为 Majority attack 。这种攻击是通过控制网络算力实现双花。如果攻击者控制了网络中50%以上的算力,那么在他控制算力的这段时间,他可以将区块逆转,进行反向交易,实现双花。

51%攻击可以由一名拥有大量算力的矿工或一组矿工组成的一个采矿池进行,控制 51% 的算力本身并不一定是攻击,除非有意使用此优势。

比特币黄金和ZenCash此前都曾遭遇过 51% 攻击,使他们的投资者损失了数百万美元。

为了让矿工执行攻击,他们必须首先牺牲网络通常奖励他们的利润丰厚的收入来合法地处理加密货币交易。攻击比特币的区块链并不便宜,但随着加密货币市场价格下跌,“51%攻击”成本也出现下降。根据Crypto51 的数据,目前每小时攻击成本是 300,067 美元。

201812060145013328.jpg


2018年51%攻击频繁发生,但Awake Security的研究员 Troy Kent 本月早些时候在纽约InfoSecurity北美会议上发表他的研究结果表示,黑客通过加密挖矿工具进行网络攻击,尽管这是一种类似于僵尸网络或特洛伊木马那样的合法威胁,但人们还是不习惯应对这种攻击方式。另外,他建议公司需要实现基于行为和分析的更先进的检测方法。

比特币DoS漏洞和超发漏洞技术分析,攻击者或无法获利

攻略8btc 发表了文章 • 2018-09-29 17:12 • 来自相关话题

图片来自:Mowie Jak Jest


上周,bitcoin core 0.16.3 版本客户端的突然发布,以及开发者敦促大家尽快升级一事,令比特币世界的人们感到了惊讶。表面上的原因,在于0.14-0.16.2版本客户端中存在一个拒绝服务 (DoS) 向量需要被修补。到后来,我们才发现,在0.15-0.16.2版本core客户端中的另一个漏洞,可能会引起比特币的超发问题。

在这篇文章中,作者试图说明:到底发生了什么?潜在的危险是什么?以及如果有人利用这个漏洞,还将会发生什么?

 
双重支付的两种方式
 

在我们接触实际的漏洞之前,我们需要解释一些东西。我们首先需要定义一下双重支付,因为这个漏洞就可以用于双重支付。

所谓双重支付的情况,就比如说爱丽丝(Alice)向鲍勃(Bob)支付了一笔币,然后她又把相同的币再一次支付给了查利(Charlie),爱丽丝基本上试图进行两次支付,其中的一笔她知道会被拒回。当然,当我们考虑支付时,爱丽丝的某些账户通过写这两次支付被透支了。这很接近比特币的工作原理,但并不是十分准确。

比特币并不是基于帐户模型的,而是基于未花费交易输出(UTXO)。一笔交易的输出基本包含了一个地址以及数量。一旦输出被使用了,它就无法再次被花费。试想一下一个UTXO(作为一笔发送给你的币),它可以是任意数量的,比如说0.413 BTC。

比特币的双重支付意味着一笔币(UTXO)被花费了两次。通常,这意味着爱丽丝将她的0.413 BTC发送给了鲍勃,然后她又把同一笔比特币又发送给了查利。

比特币的解决方法是,其中一笔交易会纳入一个区块,由此来决定实际谁得到了报酬。如果两笔交易不知何故都传递到了多个区块,那么后面发生的区块,就会被软件给拒绝掉。如果两笔交易都在同一个区块当中,那么这个区块也会遭到软件的拒绝。

基本上,比特币软件会检测到双重支付行为,如果有双重支付行为的发生,则应该拒绝掉相应的区块。

然而,在两笔不同的交易中发送同一个UTXO,并不是唯一的双花方法。实际还存在着同一UTXO在同一交易进行双重支付的病态情况。在这种情况下,爱丽丝向鲍勃发送同一笔币两次。所以,爱丽丝实际支付的是0.413 BTC,但鲍勃收到的却是0.826 BTC。这显然不是一个有效的交易,因为只有一笔价值0.413 BTC的UTXO 是被发送的。这就相当于,爱丽丝用同一10美元向鲍勃发送了两次,而鲍勃收到的则是20美元。

 
定义漏洞
 

因此,总结一下我们所定义的两种类型的双重支付尝试:

使用两笔或更多的交易,来花费相同的UTXO;
使用一笔交易花费同一UTXO多次;


结果表明,Bitcoin Core 软件正确地处理了第一个问题,而第二个问题,正是我们要关心的。任何人都可以像这样构造出一笔双花交易,但要让节点接受这种交易,又是另一回事了。

目前有两种方法可以让交易被纳入一个区块当中: 

A. 支付足够的费用,将交易广播到网络上,那么矿工会负责把交易纳入区块当中;

B. 作为一名矿工,把交易纳入一个区块;

(A) 除了创建交易,并将其广播到网络上的节点之外,你不需要做太多的工作。 (B) 需要你找到足够的工作量证明。这也是这次漏洞的关键。

(A) 不是一个可能的攻击向量,因为这些交易会立即被标记为无效的,网络上的节点会拒绝它们。没有矿工们的合作,这种交易就无法进入矿工们的记忆库,因为它们不会得到传播。

(B)是漏洞显现的唯一情况。换句话说,想要利用这个漏洞,你就需要工作量证明,或者说足够的矿机设备和电力。

为了明确起见,双花交易有4种情况需要处理:

1A — 多笔 mempool交易花费了同一UTXO ;

1B — 多笔区块交易花费了同一UTXO ;

2A — 单笔mempool交易花费了同一UTXO多次;

2B — 单笔区块交易花费了同一UTXO多次;

该漏洞有两种表现形式。在0.14.x版本客户端中,存在着一个拒绝服务(DoS)的漏洞,而在0.15.x - 0.16.2版本的客户端,则存在一个超发漏洞。接下来,我们会分别分析它们。

 
拒绝服务攻击
 

故事始于2009年的Bitcoin 0.1版本客户端,这一版本的代码通过拒绝案例1B和案例2B(检查区块没有双重支付)来强制达成共识。





为了清晰起见,作者删除了很多代码


你可以看到“检查冲突”的注释,其代码负责检查每个输入没有被花费。“将输出标记为已使用”注释下面的代码,标记了UTXO的使用。如果任何UTXO的花费超过一次,则会导致错误。

在2011年,PR 443被合并到了比特币代码库。这一改变是为了处理通过mempool (上面的情况2A)传输单笔交易双重支付的情况。这个合并请求注释的目的非常明确:

    “而且,没有具有重复输入的交易会被纳入区块当中......几个星期前,有人尝试过了,但这些交易并没有被纳入区块。我假设某个地方存在了一个检查关,它会阻止这些重复交易进入区块,虽然我没有对这个问题进行任何挖掘。这实际上是为了防止这种明显无效的交易得到中继。”






实际的代码更改,或多或少与上面的ConnectInputs 中的“检查冲突”注释下的代码执行了相同的操作,但位于的是不同的位置。代码更改是在CheckTransaction 中运行的,其负责了所有上述的4种情况(1A, 1B, 2A, 2B)。因此,我们在区块双重支付共识代码中有了一些冗余,正如案例1B和2B都被检查了两次,其中一次检查是在CheckTransaction,另一次则发生在ConnectInputs。

到了2013年,PR 2224被纳入了比特币软件。这一改变的目的是区分共识错误(例如双重支付)和系统错误(例如磁盘空间耗尽)之间的差别,正如PR注释中所表明的那样:

“它引入了CValidationState,它会存储关于区块的元数据,或者正在执行的交易验证数据。它被用于区分验证错误(例如,未能满足网络规则)和运行时错误(比如磁盘空间的不足),从前这些可能会产生混淆,因磁盘空间用完会导致区块被标记为无效。此外,CValidationState还承担了跟踪 DoS级别的角色(因此它不需要存储于交易或区块当中...)”


实际的相关代码更改如下:






在那个时候,ConnectInputs已经被模块化成多个方法,并且这个函数成为了检查双重支付的函数。这里的关键改变是,曾经的error被改为了 assert

assert在C++中是做什么的?它会完全中止程序。程序员为什么要在这里停止程序?这就是Pull请求的目的所在。下面就是那个时候的代码片段:






它会像以前一样处理案例1B和2B。函数名则从ConnectInputs更改为ConnectBlock,但检查案例1B和2B的冗余性仍然在PR 443中保留。正如我们已经看到的,UpdateCoins做了第二次双重支付检查。其中CheckBlock通过调用CheckTransaction进行了第一次双重支付检查:











由于这是第二次检查相同的内容,所以要让UpdateCoins的双花检查失败的唯一方法,就是存在某种UTXO数据库或交易存储损坏。事实上,这似乎是改成assert的原因。因为CheckBlock通过CheckTransaction在UpdateCoins之前已经进行了检查,我们已知道某笔交易并不是双花交易。因此,PR 2224正确地推测到,UpdateCoins中的这个状态必然是一个系统错误,而不是一个共识错误。在这种情况下,为了防止进一步的数据损坏,正确的做法就是停止程序。

到了2017年,PR 9049作为Bitcoin 0.14的一部分被引入比特币网络。随着隔离见证(Segwit)的纳入,它是加快区块验证时间的诸多更改的其中之一,其代码更改实际是非常少的:






你可以看到布尔函数 fCheckDuplicateInputs被添加了进去,用于加快区块检查。我们将在下面看到,这是一个被认为是冗余的检查。不幸的是, UpdateCoins中的代码在PR 2224中被更改为系统损坏检查,而不是共识检查。到了0.14.0版本客户端,其代码进行了更多的模块化更改,而assert也发生了一些改变:






曾经是作为一个冗余检查,现在却成了负责区块单笔交易双重支付检查(案例2B),并负责停止程序。从技术上来说,它仍然是强制执行共识规则。只是在中止程序问题上,它表现地非常糟糕。

PR 9049是如何获得通过的? Greg Maxwell 给了我IRC上的聊天记录。






长话短说,开发者们在讨论PR 9049时,倾向于认为区块级单笔交易双重支付(案例2B)会在PR 443处遭到检查,而没有考虑PR 2224。这使得开发者们并没有密切关注PR 9049;

总而言之:

1、在2011年引入用于防止双重支付交易中继(案例2A)的 PR 443,实际产生了一个副作用,即对区块的双重支付共识规则检查创造了冗余校验(案例1B和 2B)。

2、PR 2224是在2013年引入的,作为一种副作用,将(1)中用于区块验证的代码,从冗余升级到了共识层;

3、PR 9049是在2017年被引入的,并且它跳过了(1)中用于单个区块单笔交易双重支付(案例1B)检查的代码。开发人员错误地认为代码是多余的,因为他们没有考虑到(2)。事实上,这种改变跳过了共识的关键部分。

公平地讲,这些事的汇合导致了这次漏洞。

 
DoS漏洞的严重性
 

这意味着 0.14.x 版本的Core软件可能会因为一个奇怪的区块而崩溃。而要让软件崩溃,攻击者需要做的事是:

创建一笔花费两次同一UTXO的交易;
通过足够的工作量证明,将(1)中的交易纳入一个比特币区块;
将这个区块广播到0.14.x版本软件的节点;


(1) 和 (3) 的成本并不高,而步骤(2)的最小成本为12.5 BTC。

如果你认为从博弈论的角度来看,分裂网络并不是那么好,那么利用这个漏洞的动机就相当低了。充其量,作为攻击者,你花费了12.5 BTC将部分全节点给搞崩溃。由于不可能从分裂网络中获利,攻击者无法轻易地补偿自己的攻击成本。

如果这是唯一的漏洞,那么攻击者可能给很多人带来一些不便,但这不会是持续的,因为这些被攻击的节点可以简单地重启,并连接到其它诚实节点。一旦有一个较长的链,那么恶意区块攻击就会完全失去它的威胁。除非攻击者以每区块12.5 BTC的代价继续创建区块,并将其传播给 0.14.x版本软件的节点,否则攻击就是不可持续的。

换句话说,虽然这个漏洞的确存在着,但对 DoS攻击的经济刺激却是相当低的。

 
超发漏洞
 

从0.15.0版本软件开始,core软件引入了一个新的特性,以便更快地查找和存储UTXO,而这恰恰又引入了另一个漏洞。当一笔具有双重支付单个交易的区块纳入区块链时,软件会将其视为有效,而不会出现崩溃的现象。

这就意味着一笔病理性交易(相同UTXO在同一交易中被使用多次,即案例2B),0.14版本的节点会因此而崩溃,而使用0.15版本软件的节点却会认为交易是有效的,这基本上是凭空在创建比特币。

谈谈它是如何发生的。在0.15中出现的PR 10195 ,引入了很多内容,但它的主要要点在于改变了 UTXO的存储方式,使得它们更有效地进行查找。因此,它出现了很多变化,包括对早期UpdateCoins函数的更改:






注意,assert(false) 周围的代码是如何被完全取出的。注意这一点,0.15.0中的PR 10537也更改了代码。






assert失败的条件现在取决于inputs.SpendCoin,它看起来是这样子的:






本质上,SpendCoin返回“ false”值的唯一方法,就是让币不存在于UTXO集中。但正如你所看到的,这需要币是FRESH的,而不是DIRTY的。这些不是常见的术语,但值得庆幸的是,core开发者Andrew Chow给出了解释:

“现在的问题是,什么时候UTXO会被标记为FRESH?当它们被添加到UTXO数据库时,它们就会被标记为FRESH。但是,UTXO数据库仍然只存在于存储当中的(作为缓存)。当它被保存到磁盘时,存储中的条目将不再被标记为FRESH……”


标记为FRESH的币,是进入交易存储池(memory pool)中的币。而攻击者可以通过 UpdateCoins函数中的assert语句来破坏节点。更糟的是,如果币是属于DIRTY的(基本上从磁盘上读取的),那么这就会导致比特币的超发。

因此,攻击者可以欺骗那些运行 0.15.0- 0.16.2版本软件的矿工接受一个奇怪的、无效的区块,从而导致比特币的供应超发。

 
超发漏洞的严重性
 

这种攻击的经济诱因似乎明显高于DoS攻击,因为攻击者可能会凭空制造出比特币。但你仍然需要有挖矿设备来执行攻击,但考虑到潜在的经济诱因,这可能是值得的,或者看起来是这样的。

下面是使用这种漏洞的一种简单攻击方式:

创造一笔带有双重支付交易的区块,其会向自己支付两次,比方说 50 BTC →100 BTC;
将该区块广播给0.15/0.16版本客户端的所有矿工;


下面是会发生的一些事:

    0.14.x 版本节点会崩溃;
    较旧版本的节点及其它替代客户端会拒绝这个区块;
    很多区块链浏览器是运行在自定义软件上的,而不是基于core,因此,至少有一些浏览器会拒绝该区块,并且不会显示来自该区块的任何交易。
    取决于矿工们运行的软件,我们可能会迎来链分裂;

有可能,所有的矿工都是运行的Bitcoin Core 0.15+版本软件,在这种情况下,不受攻击的客户端可能会停滞不前。也有可能矿工会运行其它东西,在这种情况下,当他们发现一个区块时,链就会发生分叉。

由于这些违规行为,网络上的人们很快就会追踪到这一点,可能已提醒一些开发人员,并且core开发者已经修复了它。如果存在分叉,那么在那个时候,关于哪条链是正确的共识链,将开始得到讨论,而出现意外超发的链,可能会遭到抛弃。如果真的发生了,那么社区可能会自愿进行一次回滚,以惩罚攻击者。

所以对于攻击者来说,这不会带来50 BTC的收入,更可能的是失去12.5 BTC。如果攻击者加倍花费,比如说200 BTC,那么超发漏洞将持续存在的可能性会更小,因为攻击会更明显。

因此,从攻击者的角度来看,这并不是一种好的获利方式。

攻击者可以获利的另一种方式,就是事先做空比特币,然后再执行攻击。这也是具有风险的,因为攻击不能保证比特币价格会下跌,特别是当危机得到迅速和果断处理时。此外,考虑到大多数交易所提供的杠杠交易,都需要AML/KYC,这可能导致攻击者很快暴露。

攻击者不仅面临着巨大的资金风险,而且还会有身体危险。从经济角度来看,这并不是一个容易获利的漏洞。

当然,有一些别有用心的人,可能会用这种漏洞来吓唬那些比特币持有者。投资回报率将变得更抽象,因此从理论上来讲,这可能会达到这些别有用心者的目的。

 
结论
 

毫无疑问,这是一个相当严重的漏洞。尽管我和Awemany之间有着分歧,但我很感激他选择公开地和我辩论。也就是说,考虑到经济博弈理论,我不认为这个漏洞会像他所描述的那样严重。

即使这个漏洞在被发现之前被坏人所利用,攻击者可能也不会选择利用它,因为从经济学上来讲,它是没有意义的。可以肯定的是,这一技术漏洞应该被修复,并且开发者应该做得更好,但真正能够利用这种漏洞的对象其实是非常少的,基本上,只有那些想要摧毁比特币的组织才会这么干。

Bitcoin Core开发者的教训有很多:

1、任何共识变化(即使是微小的变化,例如9049),也需要更多的人进行审查; 2、需要对病理交易进行更多的检查; 3、代码库中哪些检查是冗余的,哪些检查是不冗余的,以及实际代码将要做些什么,需要变得更加清晰; 4、过去存在漏洞,将来也会存在漏洞。现在重要的是,学习并反思这一教训;


原文:https://medium.com/@jimmysong/bitcoin-core-bug-cve-2018-17144-an-analysis-f80d9d373362
作者:Jimmy Song
编译:洒脱喜 查看全部
201809290449331285.jpg

图片来自:Mowie Jak Jest


上周,bitcoin core 0.16.3 版本客户端的突然发布,以及开发者敦促大家尽快升级一事,令比特币世界的人们感到了惊讶。表面上的原因,在于0.14-0.16.2版本客户端中存在一个拒绝服务 (DoS) 向量需要被修补。到后来,我们才发现,在0.15-0.16.2版本core客户端中的另一个漏洞,可能会引起比特币的超发问题。

在这篇文章中,作者试图说明:到底发生了什么?潜在的危险是什么?以及如果有人利用这个漏洞,还将会发生什么?

 
双重支付的两种方式
 

在我们接触实际的漏洞之前,我们需要解释一些东西。我们首先需要定义一下双重支付,因为这个漏洞就可以用于双重支付。

所谓双重支付的情况,就比如说爱丽丝(Alice)向鲍勃(Bob)支付了一笔币,然后她又把相同的币再一次支付给了查利(Charlie),爱丽丝基本上试图进行两次支付,其中的一笔她知道会被拒回。当然,当我们考虑支付时,爱丽丝的某些账户通过写这两次支付被透支了。这很接近比特币的工作原理,但并不是十分准确。

比特币并不是基于帐户模型的,而是基于未花费交易输出(UTXO)。一笔交易的输出基本包含了一个地址以及数量。一旦输出被使用了,它就无法再次被花费。试想一下一个UTXO(作为一笔发送给你的币),它可以是任意数量的,比如说0.413 BTC。

比特币的双重支付意味着一笔币(UTXO)被花费了两次。通常,这意味着爱丽丝将她的0.413 BTC发送给了鲍勃,然后她又把同一笔比特币又发送给了查利。

比特币的解决方法是,其中一笔交易会纳入一个区块,由此来决定实际谁得到了报酬。如果两笔交易不知何故都传递到了多个区块,那么后面发生的区块,就会被软件给拒绝掉。如果两笔交易都在同一个区块当中,那么这个区块也会遭到软件的拒绝。

基本上,比特币软件会检测到双重支付行为,如果有双重支付行为的发生,则应该拒绝掉相应的区块。

然而,在两笔不同的交易中发送同一个UTXO,并不是唯一的双花方法。实际还存在着同一UTXO在同一交易进行双重支付的病态情况。在这种情况下,爱丽丝向鲍勃发送同一笔币两次。所以,爱丽丝实际支付的是0.413 BTC,但鲍勃收到的却是0.826 BTC。这显然不是一个有效的交易,因为只有一笔价值0.413 BTC的UTXO 是被发送的。这就相当于,爱丽丝用同一10美元向鲍勃发送了两次,而鲍勃收到的则是20美元。

 
定义漏洞
 

因此,总结一下我们所定义的两种类型的双重支付尝试:


使用两笔或更多的交易,来花费相同的UTXO;
使用一笔交易花费同一UTXO多次;



结果表明,Bitcoin Core 软件正确地处理了第一个问题,而第二个问题,正是我们要关心的。任何人都可以像这样构造出一笔双花交易,但要让节点接受这种交易,又是另一回事了。

目前有两种方法可以让交易被纳入一个区块当中: 

A. 支付足够的费用,将交易广播到网络上,那么矿工会负责把交易纳入区块当中;

B. 作为一名矿工,把交易纳入一个区块;

(A) 除了创建交易,并将其广播到网络上的节点之外,你不需要做太多的工作。 (B) 需要你找到足够的工作量证明。这也是这次漏洞的关键。

(A) 不是一个可能的攻击向量,因为这些交易会立即被标记为无效的,网络上的节点会拒绝它们。没有矿工们的合作,这种交易就无法进入矿工们的记忆库,因为它们不会得到传播。

(B)是漏洞显现的唯一情况。换句话说,想要利用这个漏洞,你就需要工作量证明,或者说足够的矿机设备和电力。

为了明确起见,双花交易有4种情况需要处理:

1A — 多笔 mempool交易花费了同一UTXO ;

1B — 多笔区块交易花费了同一UTXO ;

2A — 单笔mempool交易花费了同一UTXO多次;

2B — 单笔区块交易花费了同一UTXO多次;

该漏洞有两种表现形式。在0.14.x版本客户端中,存在着一个拒绝服务(DoS)的漏洞,而在0.15.x - 0.16.2版本的客户端,则存在一个超发漏洞。接下来,我们会分别分析它们。

 
拒绝服务攻击
 

故事始于2009年的Bitcoin 0.1版本客户端,这一版本的代码通过拒绝案例1B和案例2B(检查区块没有双重支付)来强制达成共识。

201809290427248594.png

为了清晰起见,作者删除了很多代码


你可以看到“检查冲突”的注释,其代码负责检查每个输入没有被花费。“将输出标记为已使用”注释下面的代码,标记了UTXO的使用。如果任何UTXO的花费超过一次,则会导致错误。

在2011年,PR 443被合并到了比特币代码库。这一改变是为了处理通过mempool (上面的情况2A)传输单笔交易双重支付的情况。这个合并请求注释的目的非常明确:

    “而且,没有具有重复输入的交易会被纳入区块当中......几个星期前,有人尝试过了,但这些交易并没有被纳入区块。我假设某个地方存在了一个检查关,它会阻止这些重复交易进入区块,虽然我没有对这个问题进行任何挖掘。这实际上是为了防止这种明显无效的交易得到中继。”

201809290429217163.png


实际的代码更改,或多或少与上面的ConnectInputs 中的“检查冲突”注释下的代码执行了相同的操作,但位于的是不同的位置。代码更改是在CheckTransaction 中运行的,其负责了所有上述的4种情况(1A, 1B, 2A, 2B)。因此,我们在区块双重支付共识代码中有了一些冗余,正如案例1B和2B都被检查了两次,其中一次检查是在CheckTransaction,另一次则发生在ConnectInputs。

到了2013年,PR 2224被纳入了比特币软件。这一改变的目的是区分共识错误(例如双重支付)和系统错误(例如磁盘空间耗尽)之间的差别,正如PR注释中所表明的那样:


“它引入了CValidationState,它会存储关于区块的元数据,或者正在执行的交易验证数据。它被用于区分验证错误(例如,未能满足网络规则)和运行时错误(比如磁盘空间的不足),从前这些可能会产生混淆,因磁盘空间用完会导致区块被标记为无效。此外,CValidationState还承担了跟踪 DoS级别的角色(因此它不需要存储于交易或区块当中...)”



实际的相关代码更改如下:

201809290429287993.png


在那个时候,ConnectInputs已经被模块化成多个方法,并且这个函数成为了检查双重支付的函数。这里的关键改变是,曾经的error被改为了 assert

assert在C++中是做什么的?它会完全中止程序。程序员为什么要在这里停止程序?这就是Pull请求的目的所在。下面就是那个时候的代码片段:

201809290429336876.png


它会像以前一样处理案例1B和2B。函数名则从ConnectInputs更改为ConnectBlock,但检查案例1B和2B的冗余性仍然在PR 443中保留。正如我们已经看到的,UpdateCoins做了第二次双重支付检查。其中CheckBlock通过调用CheckTransaction进行了第一次双重支付检查:

201809290429374708.png


201809290429418890.png


由于这是第二次检查相同的内容,所以要让UpdateCoins的双花检查失败的唯一方法,就是存在某种UTXO数据库或交易存储损坏。事实上,这似乎是改成assert的原因。因为CheckBlock通过CheckTransaction在UpdateCoins之前已经进行了检查,我们已知道某笔交易并不是双花交易。因此,PR 2224正确地推测到,UpdateCoins中的这个状态必然是一个系统错误,而不是一个共识错误。在这种情况下,为了防止进一步的数据损坏,正确的做法就是停止程序。

到了2017年,PR 9049作为Bitcoin 0.14的一部分被引入比特币网络。随着隔离见证(Segwit)的纳入,它是加快区块验证时间的诸多更改的其中之一,其代码更改实际是非常少的:

201809290429465081.png


你可以看到布尔函数 fCheckDuplicateInputs被添加了进去,用于加快区块检查。我们将在下面看到,这是一个被认为是冗余的检查。不幸的是, UpdateCoins中的代码在PR 2224中被更改为系统损坏检查,而不是共识检查。到了0.14.0版本客户端,其代码进行了更多的模块化更改,而assert也发生了一些改变:

201809290429517782.png


曾经是作为一个冗余检查,现在却成了负责区块单笔交易双重支付检查(案例2B),并负责停止程序。从技术上来说,它仍然是强制执行共识规则。只是在中止程序问题上,它表现地非常糟糕。

PR 9049是如何获得通过的? Greg Maxwell 给了我IRC上的聊天记录。

201809290429561563.png


长话短说,开发者们在讨论PR 9049时,倾向于认为区块级单笔交易双重支付(案例2B)会在PR 443处遭到检查,而没有考虑PR 2224。这使得开发者们并没有密切关注PR 9049;

总而言之:

1、在2011年引入用于防止双重支付交易中继(案例2A)的 PR 443,实际产生了一个副作用,即对区块的双重支付共识规则检查创造了冗余校验(案例1B和 2B)。

2、PR 2224是在2013年引入的,作为一种副作用,将(1)中用于区块验证的代码,从冗余升级到了共识层;

3、PR 9049是在2017年被引入的,并且它跳过了(1)中用于单个区块单笔交易双重支付(案例1B)检查的代码。开发人员错误地认为代码是多余的,因为他们没有考虑到(2)。事实上,这种改变跳过了共识的关键部分。

公平地讲,这些事的汇合导致了这次漏洞。

 
DoS漏洞的严重性
 

这意味着 0.14.x 版本的Core软件可能会因为一个奇怪的区块而崩溃。而要让软件崩溃,攻击者需要做的事是:


创建一笔花费两次同一UTXO的交易;
通过足够的工作量证明,将(1)中的交易纳入一个比特币区块;
将这个区块广播到0.14.x版本软件的节点;



(1) 和 (3) 的成本并不高,而步骤(2)的最小成本为12.5 BTC。

如果你认为从博弈论的角度来看,分裂网络并不是那么好,那么利用这个漏洞的动机就相当低了。充其量,作为攻击者,你花费了12.5 BTC将部分全节点给搞崩溃。由于不可能从分裂网络中获利,攻击者无法轻易地补偿自己的攻击成本。

如果这是唯一的漏洞,那么攻击者可能给很多人带来一些不便,但这不会是持续的,因为这些被攻击的节点可以简单地重启,并连接到其它诚实节点。一旦有一个较长的链,那么恶意区块攻击就会完全失去它的威胁。除非攻击者以每区块12.5 BTC的代价继续创建区块,并将其传播给 0.14.x版本软件的节点,否则攻击就是不可持续的。

换句话说,虽然这个漏洞的确存在着,但对 DoS攻击的经济刺激却是相当低的。

 
超发漏洞
 

从0.15.0版本软件开始,core软件引入了一个新的特性,以便更快地查找和存储UTXO,而这恰恰又引入了另一个漏洞。当一笔具有双重支付单个交易的区块纳入区块链时,软件会将其视为有效,而不会出现崩溃的现象。

这就意味着一笔病理性交易(相同UTXO在同一交易中被使用多次,即案例2B),0.14版本的节点会因此而崩溃,而使用0.15版本软件的节点却会认为交易是有效的,这基本上是凭空在创建比特币。

谈谈它是如何发生的。在0.15中出现的PR 10195 ,引入了很多内容,但它的主要要点在于改变了 UTXO的存储方式,使得它们更有效地进行查找。因此,它出现了很多变化,包括对早期UpdateCoins函数的更改:

201809290430061888.png


注意,assert(false) 周围的代码是如何被完全取出的。注意这一点,0.15.0中的PR 10537也更改了代码。

201809290430102743.png


assert失败的条件现在取决于inputs.SpendCoin,它看起来是这样子的:

201809290430179759.png


本质上,SpendCoin返回“ false”值的唯一方法,就是让币不存在于UTXO集中。但正如你所看到的,这需要币是FRESH的,而不是DIRTY的。这些不是常见的术语,但值得庆幸的是,core开发者Andrew Chow给出了解释:


“现在的问题是,什么时候UTXO会被标记为FRESH?当它们被添加到UTXO数据库时,它们就会被标记为FRESH。但是,UTXO数据库仍然只存在于存储当中的(作为缓存)。当它被保存到磁盘时,存储中的条目将不再被标记为FRESH……”



标记为FRESH的币,是进入交易存储池(memory pool)中的币。而攻击者可以通过 UpdateCoins函数中的assert语句来破坏节点。更糟的是,如果币是属于DIRTY的(基本上从磁盘上读取的),那么这就会导致比特币的超发。

因此,攻击者可以欺骗那些运行 0.15.0- 0.16.2版本软件的矿工接受一个奇怪的、无效的区块,从而导致比特币的供应超发。

 
超发漏洞的严重性
 

这种攻击的经济诱因似乎明显高于DoS攻击,因为攻击者可能会凭空制造出比特币。但你仍然需要有挖矿设备来执行攻击,但考虑到潜在的经济诱因,这可能是值得的,或者看起来是这样的。

下面是使用这种漏洞的一种简单攻击方式:


创造一笔带有双重支付交易的区块,其会向自己支付两次,比方说 50 BTC →100 BTC;
将该区块广播给0.15/0.16版本客户端的所有矿工;



下面是会发生的一些事:

    0.14.x 版本节点会崩溃;
    较旧版本的节点及其它替代客户端会拒绝这个区块;
    很多区块链浏览器是运行在自定义软件上的,而不是基于core,因此,至少有一些浏览器会拒绝该区块,并且不会显示来自该区块的任何交易。
    取决于矿工们运行的软件,我们可能会迎来链分裂;

有可能,所有的矿工都是运行的Bitcoin Core 0.15+版本软件,在这种情况下,不受攻击的客户端可能会停滞不前。也有可能矿工会运行其它东西,在这种情况下,当他们发现一个区块时,链就会发生分叉。

由于这些违规行为,网络上的人们很快就会追踪到这一点,可能已提醒一些开发人员,并且core开发者已经修复了它。如果存在分叉,那么在那个时候,关于哪条链是正确的共识链,将开始得到讨论,而出现意外超发的链,可能会遭到抛弃。如果真的发生了,那么社区可能会自愿进行一次回滚,以惩罚攻击者。

所以对于攻击者来说,这不会带来50 BTC的收入,更可能的是失去12.5 BTC。如果攻击者加倍花费,比如说200 BTC,那么超发漏洞将持续存在的可能性会更小,因为攻击会更明显。

因此,从攻击者的角度来看,这并不是一种好的获利方式。

攻击者可以获利的另一种方式,就是事先做空比特币,然后再执行攻击。这也是具有风险的,因为攻击不能保证比特币价格会下跌,特别是当危机得到迅速和果断处理时。此外,考虑到大多数交易所提供的杠杠交易,都需要AML/KYC,这可能导致攻击者很快暴露。

攻击者不仅面临着巨大的资金风险,而且还会有身体危险。从经济角度来看,这并不是一个容易获利的漏洞。

当然,有一些别有用心的人,可能会用这种漏洞来吓唬那些比特币持有者。投资回报率将变得更抽象,因此从理论上来讲,这可能会达到这些别有用心者的目的。

 
结论
 

毫无疑问,这是一个相当严重的漏洞。尽管我和Awemany之间有着分歧,但我很感激他选择公开地和我辩论。也就是说,考虑到经济博弈理论,我不认为这个漏洞会像他所描述的那样严重。

即使这个漏洞在被发现之前被坏人所利用,攻击者可能也不会选择利用它,因为从经济学上来讲,它是没有意义的。可以肯定的是,这一技术漏洞应该被修复,并且开发者应该做得更好,但真正能够利用这种漏洞的对象其实是非常少的,基本上,只有那些想要摧毁比特币的组织才会这么干。

Bitcoin Core开发者的教训有很多:

1、任何共识变化(即使是微小的变化,例如9049),也需要更多的人进行审查; 2、需要对病理交易进行更多的检查; 3、代码库中哪些检查是冗余的,哪些检查是不冗余的,以及实际代码将要做些什么,需要变得更加清晰; 4、过去存在漏洞,将来也会存在漏洞。现在重要的是,学习并反思这一教训;


原文:https://medium.com/@jimmysong/bitcoin-core-bug-cve-2018-17144-an-analysis-f80d9d373362
作者:Jimmy Song
编译:洒脱喜