壞礦工的雙重支付攻擊,51%攻擊

news/2024/12/22 19:09:53/

https://www.bitcoin-info.guide/%E5%85%A5%E9%96%80%E6%8C%87%E5%BC%95/%E6%AF%94%E7%89%B9%E5%B9%A3%E9%81%8B%E4%BD%9C%E5%8E%9F%E7%90%86/%E9%9B%99%E9%87%8D%E6%94%AF%E4%BB%98%E6%94%BB%E6%93%8A

壞礦工的雙重支付攻擊,51%攻擊

在何謂區塊鏈(一)提過,如果世界上有太多壞礦工,就不能保障區塊鏈的安全。 那到底要有幾多個壞壙工才會有影響,壞壙工又可以如可攻擊區塊鏈,下面會詳細解釋。

先重溫一下挖礦的基本知識,所謂挖礦,是指壙工之間鬥快解出一條SHA256的不等式:
SHA256(tx1/tx2/tx3/…/nonce) < target

其中tx1/tx2/tx3是指區塊內的交易訊息,nonce是礦工是找出的數使得上述不等式成立。

為了找出答案nonce,礦工不停計算SHA256,最快找出答案的礦工會公佈答案,並將自己挖出的區塊加上現在的區塊鏈上。

偶而會發生兩個礦工同時成功挖出區塊,這候就要比併網絡速度了。 如果兩個礦工的區塊都是正確的區塊,則以先到先得的方式來決定。

挖得較慢的礦工如果不忿氣,堅持要基於自己挖出來的區塊繼續挖,如下圖:

blockchain confirm

全世界的礦工已經基於Block C 的結果去挖下一個區塊,唯獨是加拿大礦工不忿氣,明明挖到了Block B 卻因為比其他人慢,所以沒有人理會他的結果。

留意: 正常的礦工只會在最長的區塊鏈上工作,不在最長區塊鏈上的區塊叫做orphan block,孤兒區塊。

所以上圖Block B 就是一個孤兒block。

 

Double Spend Attack 雙重支付攻擊

那麼加拿大礦工死不認輸的性格有沒有可能得到回報呢? 有!

如果加拿大礦工非常幸運,當其他礦工仍未挖出基於區塊C 的下一個區塊,他獨力找出了基於Block B 之後的兩個Block,如下圖:

orphan block 孤兒區塊

那麼Block B/D/E 瞬間成為最長的區塊鏈,Block A/C 反而變成孤兒了。

孤兒block的下場是甚麼? 所有記載在孤兒Block的交易都不算數,跟沒發生過一樣。只有在最長區塊鏈(Longest Block Chain)上發生的交易才算數。

看到這裏開始感覺到有問題吧?

時光倒流一下,重回到Block B 仍然係孤兒區塊的時候,來看看Block A 入面包含了的交易:

Block A 區塊交易

上圖Block A 包含了一條交易: 加拿大礦工傳送了0.001BTC 給咖啡店

現實生活中的比特幣交易通常要等一次confirmation 才算成功。雖然Block A 已經包含了買咖啡的轉帳,但為了安全起見,咖啡店可能會等到Block C 出現之後才將咖啡交給加拿大礦工。

但是,如果加拿大礦工是壞人,在最後一個Block E 上寫上另一條交易: 用他本來買咖啡的0.001BTC 來買大家樂焗豬排飯,而且他有如神助地迅速挖到兩個區塊出來,如下圖:

Block E 區塊交易

那麼咖啡店就要虧大本了,因為寫在Block A上的交易突然間全部失效,取而代支的時買焗豬排飯的交易。

咖啡店送了咖啡出去,但原本已經到了wallet的bitcoin 卻消失了......

若同一個bitcoin,可以在多於一個地方消費,這就是惡名昭彰的double spend attack 雙重支付攻擊。

加拿大礦工要發動這種攻擊,不可能單靠幸運,靠的是算力hash rate。

說到底挖礦就是鬥快計SHA256的比賽,只要算得夠快就可以發動攻擊。 何謂之夠快? 這是壞礦工與正義礦工的hash rate 比賽。

 

51% Attack 攻擊

假設全世界的礦工加起來每秒可以算100次SHA256,其中10次是壞礦工算出來的,那麼壞礦工就佔10% hash rate,正義礦工佔90%。在這種算力分佈情況下,每10個新區塊裏面,就有一個是壞礦工挖出來的。

如果壞礦工的運算力是10%,而咖啡店會等待2次confirmation才送出咖啡的話,壞礦工發動Double Spend attack的成功機會是5.6%。

如果壞礦工的運算力是10%,而咖啡店會等待6次confirmation才送出咖啡的話,壞礦工發動Double Spend attack的成功機會是0.05%。

Confirm次數越高咖啡店就越安全,因為壞礦工的運算能力始終不及正義礦工。暫時公認是6次confirmation 為最佳。

但如果壞礦工的運算力提升至40%,而咖啡店仍然等待6次confirmation才送出咖啡的話,壞礦工發動Double Spend attack的成功機會則提升至50%。

下圖是壞礦工算力比率,咖啡店等待確認次數,與Double Spend Attack成功機會的關係:

double spend attack

(ref: https://bitcoil.co.il/Doublespend.pdf)

如果壞礦工的運算力提升至全個網絡的51%,會發生甚麼事情?

Double Spend Attack 一定會成功,只是時間問題!這就是51% 攻擊。

代價太大沒有人會是嬴家

這聽上去很恐怖,設計Bitcoin的時候已經知道會有這個問題。 礦工/Bitcoin developer全部都知道,偶而會有反對Bitcoin的人以此攻擊Bitcoin的安全性。

但要發動51%攻擊的代價實在太高了…

以2018年4月中計,假設用上AntMiner S5+,每一部價值2307美金,S5+的hash rate是7722GHash/s,3436W。

光是買礦機你就要花上9,198,641,021美金,還未計礦機電費! 假設電費是每千瓦時0.05美金,每天電費已經要16,440,327美金,是每天!(ref: https://gobitcoin.io/tools/cost-51-attack/)

還有租地方放置礦機呢? 冷氣費呢? 要同時cool down 上千萬部螞蟻礦機可不是簡單的事花上上百億美金發動一次51%攻擊,然後呢?

同一個bitcoin 可以多花一次吧...然後呢?

最懷的情況是,所有人都知道51%攻擊發生了,然後世人對bitcoin的瞬間信心消失,“原來用bitcoin消費是這麼沒保障的啊"...

bitcoin 價值歸0

然後你花上百億買回來的礦機就可以送到堆填區啦^_^~

歷史上有沒有發生過成功的51% Attack呢? 有,不過不是Bitcoin。

2018年4月初,有黑客發現Verge (另一種加密貨幣)的掘礦算法中有bug,令他可以短時間內挖出大量區塊(1秒1個區塊),模擬了51% hash rate的情況。(ref: https://bitcointalk.org/index.php?topic=3256693.0)

原理跟51% Attack非常相似,不同之處是他無需購置大量礦機,只是偽做了區塊上的Timestamp。

Verge Team 3小時內透過硬分叉HardFork 排除了攻擊期間生成的區塊。 但Verge不算是甚麼出名的加密貨幣,所以hard fork的影響還不算很大。

Appendix:

上面提到壞礦工算力比率,咖啡店等待確認次數,與Double Spend Attack成功機會的關係。

計算這個機會率需要統計學的知識,特別係Poisson Distribution泊松分佈,及discrete time Markov chain 馬可夫鏈。

在中本聰所寫的Bitcoin White Paper,Chapter 11詳細解釋了算力分佈與雙重支付攻擊的關係。(ref: https://bitcoin.org/bitcoin.pdf)


p = 正義礦工佔全網絡的算力比率
q = 壞礦工佔全網絡的算力比率
(p+q=1)

咖啡店會等待z次confirmation才送出咖啡,
然後用Poisson distribution,其中λ=z*(q/p)
λ是指每挖出一個新區塊的時候,壞礦工從後追上區塊的機會。

double spend attack 機會率

如果現時壞礦工落後了z個block,用上面這算式就可以計算出壞礦工從後趕上的機會率。


http://www.ppmy.cn/news/715349.html

相关文章

什么是ASIC芯片?与CPU、GPU、FPGA相比如何?

继4月初联发科宣布扩大ASIC产品阵线&#xff0c;推出业内首个7nm 56G PAM4 SerDes IP之后&#xff0c;4月24日&#xff0c;在联发科深圳办公室&#xff0c;联发科举行了一场小型的媒体会&#xff0c;联发科副总经理暨智能设备事业群总经理 游人杰及联发科智能显示暨客制化芯片事…

相比于 PoW,PoS 会让富人更富?

撰文&#xff1a;Just a Doggie 编辑&#xff1a;南风 对 PoS (权益证明) 共识算法的一种常见批评是它让「富人更富」&#xff0c;大致可以解释为「规模经济有利于既有的富人&#xff0c;而不利于资源匮乏的人」。 通过观察任何大规模运营的行业&#xff0c;我们可以很容易地看…

以太坊入门手册(附各类工具链接)

本文将围绕以太坊&#xff0c;介绍相关基础知识&#xff0c;提供各种查询工具、社群链接&#xff0c;帮助大家更加深入学习以及在以太坊上进行开发。 从 2008 年诞生以来&#xff0c;区块链走过了十多年的风雨路&#xff0c;繁衍出比特币、以太坊、EOS等诸多公有链。诞生于 20…

AM335x Beaglebone black 蚂蚁矿机L3+控制板 u-Boot 启动分析

AM335x 可以通过控制上电是sysboot 引脚的电平选择启动顺序&#xff0c;官方的beaglebone black 电路如下&#xff1a; 矿板的SYSBOOT[4:0] 10011,默认启动顺序如下&#xff1a; 默认是从NAND 启动&#xff0c;所以如果想改变启动顺序就必须改SYSBOOT[4:0]这几个的电阻控制上电…

廉价bb_black ubot编译

开发环境 操作系统&#xff1a;ubuntu 12.04 LTS 64 bit 用户&#xff1a;root 硬件&#xff1a;阉割版bb_black ti am3352 主芯片&#xff1a;AM3352BZCZ100 &#xff08;cortex-A8&#xff0c;1GHz) 内存: DDR3 256M 闪存&#xff1a;NAND flash 2Gbit 注&#xff1a;…

【ZYNQ】T9+控制板硬件概览与修复 (持续更新中)

文章目录 前言一、硬件细节二、原始固件LOG 前言 之前就有买过EBAZ4205控制板当开发板使&#xff0c;但是那块板子怎么说都是个四层板的丐板&#xff0c;板子还被抄了&#xff0c;立创0元打个板也一样能用。上面的内存还是杂牌的128M 16bit位宽内存&#xff0c;就连SD卡槽都没…

ANTMINER KA3参数成谜,静待9月13日

在 ANTMINER KA3 线上发布会期间&#xff0c;我们将讨论 KDA 生态系统的发展&#xff0c;细说ANTMINER KA3的性能和优势。为初始版本推出特别优惠提供购买 KA3 计算服务器的一站式指南&#xff01; 这次发布的KDA矿机&#xff0c;蚂蚁KA3的算力突破3位数&#xff0c;横扫市面上…

ANTMINER KA3 166T能否颠覆Polkadot未来

算力之王166t的蚂蚁ka3因何而发生?非洲在不经意间这样说过&#xff0c;最灵繁的人也看不见自己的背脊。这句话语虽然很短&#xff0c;但令我浮想联翩。 叔本华在不经意间这样说过&#xff0c;意志是一个强壮的盲人&#xff0c;倚靠在明眼的跛子肩上。我希望诸位也能好好地体会…