密碼學/加密貨幣原理

467 回覆
844 Like 6 Dislike
2017-08-10 11:23:31
pish
2017-08-10 11:44:05
--------51% Attack--------

講到呢度,大家應該會問,如果契弟既運算能力真係好高好高
高到超過一半,咁會發生咩事?

Alternative History Attack會100%成功
即係話契弟可以呃曬全世界,同一個bitcoin佢可以用無限次
而大家都吹佢唔脹

但係 呢個時大家又要由契弟既角度諗下
佢要佔據到網絡上51%既運算能力
淨係買挖礦機既錢都講緊唔知幾多錢
都未計買地開廠擺機開冷氣電氣既錢
當真係有人願意拎成億港紙出黎發動51% attack
佢會得到乜野?

佢會徹底催毀左所有人對bitcoin既信心
世界上唔會再有人信/用bitcoin
bitcoin既價值直跌到落0

不過呢,有樣野可以放心
就係51% attacker都唔會偷到你以前已經有既bitcoin
佢最多可以狂用同一個bitcoin
或者見到你樣衰,就filter走曬所有你發起既交易
咁你既交易可能永遠入唔到條chain
等等
雖然到時你keep 住幾多個bitcoin都無用

攻擊完之後佢用成億買番黎既挖礦機就可以擺起度曬太陽
會唔會有人做D咁戇居既野
你可能會話:chur 美國佬整支核彈出黎都億億聲啦
如果美國佬覺得太多人用bitcoin黎逃稅
有心想收你bitcoin皮,幾十億佢都肯拎出黎做低你啦
理論上係arm既

實際上仲有人計左條數(用美金計)
https://gobitcoin.io/tools/cost-51-attack/
$2,313,650,728 Hardware cost only, at cheapest rate
That would consume 82,701,731 kWh per day ($4,135,086 per day)
用廿幾億美金黎買機,每日交四百萬美金電費
我就唔係好知道中國/美國/俄羅斯有無咁既能力
如果有咁多錢淨,我估Donald Trump會索性mine多幾個bitcoin比自己好過啦

實際上如果有人起網絡上壟斷到運算能力
其他miner一定知道,到時大家會用咩對策應付呢個攻擊無人估到
51% attack都係純粹理論,實行時會有咩困難,會遇到咩反抗,god knows
作為普通人既我地只有一樣野可以做,就係幫手掘礦
越多人做礦工,51% attacker既成本就越高

如果有咁強既hasing power 夠唔夠反推返人地條private key 出黎
等自己可以偽造埋交易?

要再次提提大家
hashing power係同其他miner比較
如果呢個世界初初只有一個CPU挖緊bitcoin
你只需要兩個CPU就可以發動攻擊

但係要brute force 搵條private key出黎係independent of 其他miner
就算脫離bitcoin既世界
要搵番條key出黎 所需既energy同computing power係遠遠超出而家人類能力範圍
就算你用曬全世界每一個processing unit都要計幾到太陽熄滅先計得完
所需要既energy更加係超出成個世界既GDP

source: https://crypto.stackexchange.com/questions/1145/how-much-would-it-cost-in-u-s-dollars-to-brute-force-a-256-bit-key-in-a-year

隨非你有quantum computing processor啦
但係而家仲研究緊

係喎 犯左低級邏輯錯誤添

Btw 因為真係未用過bitcoin 想問多個白痴問題

係咪啲wallet software 會自己收miner 既信息再show 比user 睇宜家唔同account 有幾多bitcoin 係入邊

大致上正確
講深入d , wallet software 起bitcoin既network係叫做SPV node, Simplified Payment Verification node
礙於硬體限制(你唔會想儲曬成條blockchain入電話),SPV node 會問full node (aka 礦工)某個address既錢用左未
2017-08-10 14:11:05
LM
2017-08-10 18:33:15
想問miner 每次收到人地send 過黎既block 係咪都mandatory 要用每條交易既public key 去verify 個block 入邊既所有transaction 嫁?

Public key 本身會包含左係條transaction 度?
2017-08-10 21:34:50
想問miner 每次收到人地send 過黎既block 係咪都mandatory 要用每條交易既public key 去verify 個block 入邊既所有transaction 嫁?

Public key 本身會包含左係條transaction 度?

差唔多正確
唯一我會挑剔既係唔應該用"mandatory"
因為bitcoin既世界無人會mandate你去做任何一件事
你鍾意唔verify D transaction都無人會鬧你
其他礦工承唔承認呢個miner既result係另一回事
礦工可以唔verify, 而且咁arm呢個block既交易都係合法既
咁咪無所謂
如果礦工唔verify得黎個block係錯既,照樣propagate比其他礦工
都無所謂既,其他正直既礦工會ignore呢個block者

講多少少
bitcoin address = public key hash
你比bitcoin另一個人, 即係意思係
「比1BTC呢個address, 可以動用呢1BTC既人必須証明用cryptographic signature同public key黎証明佢係呢個address既owner」

我諗緊下個chapter 就講transaction既detail
2017-08-11 08:04:01
想問miner 每次收到人地send 過黎既block 係咪都mandatory 要用每條交易既public key 去verify 個block 入邊既所有transaction 嫁?

Public key 本身會包含左係條transaction 度?

差唔多正確
唯一我會挑剔既係唔應該用"mandatory"
因為bitcoin既世界無人會mandate你去做任何一件事
你鍾意唔verify D transaction都無人會鬧你
其他礦工承唔承認呢個miner既result係另一回事
礦工可以唔verify, 而且咁arm呢個block既交易都係合法既
咁咪無所謂
如果礦工唔verify得黎個block係錯既,照樣propagate比其他礦工
都無所謂既,其他正直既礦工會ignore呢個block者

講多少少
bitcoin address = public key hash
你比bitcoin另一個人, 即係意思係
「比1BTC呢個address, 可以動用呢1BTC既人必須証明用cryptographic signature同public key黎証明佢係呢個address既owner」

我諗緊下個chapter 就講transaction既detail

咁既話 既然private key 應該係randomly generate 而又唔會有一個centralise organisation 去assign
咁咪有機會咁岩得咁橋repeat

(雖然以咁大個base 機率應該好細)
2017-08-11 08:04:48
想問miner 每次收到人地send 過黎既block 係咪都mandatory 要用每條交易既public key 去verify 個block 入邊既所有transaction 嫁?

Public key 本身會包含左係條transaction 度?

差唔多正確
唯一我會挑剔既係唔應該用"mandatory"
因為bitcoin既世界無人會mandate你去做任何一件事
你鍾意唔verify D transaction都無人會鬧你
其他礦工承唔承認呢個miner既result係另一回事
礦工可以唔verify, 而且咁arm呢個block既交易都係合法既
咁咪無所謂
如果礦工唔verify得黎個block係錯既,照樣propagate比其他礦工
都無所謂既,其他正直既礦工會ignore呢個block者

講多少少
bitcoin address = public key hash
你比bitcoin另一個人, 即係意思係
「比1BTC呢個address, 可以動用呢1BTC既人必須証明用cryptographic signature同public key黎証明佢係呢個address既owner」

我諗緊下個chapter 就講transaction既detail

咁既話 既然private key 應該係randomly generate 而又唔會有一個centralise organisation 去assign
咁咪有機會咁岩得咁橋repeat

(雖然以咁大個base 機率應該好細)

我意思即係兩個人開左同一個account number
2017-08-11 09:37:04
留名學野
2017-08-11 10:00:24
想問miner 每次收到人地send 過黎既block 係咪都mandatory 要用每條交易既public key 去verify 個block 入邊既所有transaction 嫁?

Public key 本身會包含左係條transaction 度?

差唔多正確
唯一我會挑剔既係唔應該用"mandatory"
因為bitcoin既世界無人會mandate你去做任何一件事
你鍾意唔verify D transaction都無人會鬧你
其他礦工承唔承認呢個miner既result係另一回事
礦工可以唔verify, 而且咁arm呢個block既交易都係合法既
咁咪無所謂
如果礦工唔verify得黎個block係錯既,照樣propagate比其他礦工
都無所謂既,其他正直既礦工會ignore呢個block者

講多少少
bitcoin address = public key hash
你比bitcoin另一個人, 即係意思係
「比1BTC呢個address, 可以動用呢1BTC既人必須証明用cryptographic signature同public key黎証明佢係呢個address既owner」

我諗緊下個chapter 就講transaction既detail

咁既話 既然private key 應該係randomly generate 而又唔會有一個centralise organisation 去assign
咁咪有機會咁岩得咁橋repeat

(雖然以咁大個base 機率應該好細)

我意思即係兩個人開左同一個account number

random sample 2^128 個 256bit hash value先有1/2機率有collision
所以重複既機率好細
2017-08-11 10:07:30
連登圖靈
2017-08-11 10:34:08
想問miner 每次收到人地send 過黎既block 係咪都mandatory 要用每條交易既public key 去verify 個block 入邊既所有transaction 嫁?

Public key 本身會包含左係條transaction 度?

差唔多正確
唯一我會挑剔既係唔應該用"mandatory"
因為bitcoin既世界無人會mandate你去做任何一件事
你鍾意唔verify D transaction都無人會鬧你
其他礦工承唔承認呢個miner既result係另一回事
礦工可以唔verify, 而且咁arm呢個block既交易都係合法既
咁咪無所謂
如果礦工唔verify得黎個block係錯既,照樣propagate比其他礦工
都無所謂既,其他正直既礦工會ignore呢個block者

講多少少
bitcoin address = public key hash
你比bitcoin另一個人, 即係意思係
「比1BTC呢個address, 可以動用呢1BTC既人必須証明用cryptographic signature同public key黎証明佢係呢個address既owner」

我諗緊下個chapter 就講transaction既detail

咁既話 既然private key 應該係randomly generate 而又唔會有一個centralise organisation 去assign
咁咪有機會咁岩得咁橋repeat

(雖然以咁大個base 機率應該好細)

我意思即係兩個人開左同一個account number

random sample 2^128 個 256bit hash value先有1/2機率有collision
所以重複既機率好細

唔該曬爸打成日幫手答
2017-08-14 14:35:59
Chapter 6 Transaction
(呢個chapter好technical....無programming background既同學可能睇唔明)


(screen cap from https://blockchain.info/tx/1fe1a575d63f0f56abb9de66b665f5f3b2ff1976590fd7c1f57b95366036921d?show_adv=true)

blockchain.info可以比你上網睇曬成條blockchain
睇曬每個block 入面每一個transaction

1fe1a575d63f0f56abb9de66b665f5f3b2ff1976590fd7c1f57b95366036921d
呢個係Transaction ID, 拎住個ID就可以起block chain入面uniquely identify 一個交易
以下我地會稱呢個為TX 2

1PEyyaKkHd6gGkRBJ6ygKUvUiXa3U39oCQ (4 BTC - Output)
呢個係output address, 即係比錢人果個戶口, 呢個戶口本身係有4BTC

留意Output 都係一條link黎
click佢會彈左去https://blockchain.info/tx-index/51791635/0
係用黎比你trace番,呢個address既4BTC係黎自之前邊一個交易
ID: d21dcb2e64c4f62f2c577b5e06e054660eac1f47f79c5688cb13f20dd06c2f63
以下我地會程呢個為TX 1
留意呢個係TX 1, 因為TX 1係早過TX 2發生既

1EPf5SAYqsuNC4hHvGPB2ztXP59XsU2mzR - (Unspent) 3.99987344 BTC
呢個係input address, 即係收錢既戶口, 但係佢唔係收曬4個BTC

input同output係相差0.00012656 BTC
input同output既相差就係transaction fee, 會落入礦工手上

呢度要提一提bitcoin交易既重點:你唔specify要找錢既話,D錢就會當transaction fee比礦工食左
即係話
例如你手上既input address有4BTC
你想用其中1BTC黎買咖啡
如果你係expect人地找番3BTC你既話
咁就要specify兩個output address
output 1係咖啡店既address (收1BTC)
output 2係你自己既address (收3BTC)

如果唔記得填番找錢個address, 咁果3BTC就會變左Transaction fee

input script係用黎證明發起呢個交易既人,有資格用output address入面果4個BTC
呢個證明方法都幾難明,要花多D時間講下

例如你個fd上次同你食完飯,用bitcoin過番4個BTC比你,呢個係TX1
今日你去買咖啡,用你手上有4BTC既戶口,比3個幾BTC買咖啡,呢個係TX2

你個fd過錢比既果陣,會起TX1既output寫低行script
output script係一個唔完整既script,就咁execute呢個script係會行唔通
要連埋TX2既input script 一齊行先會行得通
只有成功行到呢個script既人先可以用到4BTC

所以可以想象TX1既output script係一個鎖
TX2既input script係一條鎖匙
條鎖匙一定要夾個鎖,先可以動用到果筆錢

呢度用到既scripting language係bitcoin獨有,叫做bitcoin script
佢係一種stack based, Turing not-complete既語言
bitcoin script係其中一樣Ethereum (目前第2大既cryptocurrency)最唔同既地方
bitcoin script係Turing not complete (連loop都無), Ethereum係Turing complete
所以起Ethereum上面可以行既transaction programme係比bitcoin script強大得多
bitcoin 做唔到類似Ethereum 既smart contract都係因為呢種script唔係Turing complete

另一個bitcoin同Ethereum最大既分別係deflationary vs inflationary
呢個遲d另外開chapter講

(Turing complete係computer science 起碼讀到year 2先接觸到既概念,係講緊一種程式語言有幾強大。Turing即係Imitation game解碼遊戲既男主角,二戰期間佢破解左德軍既密碼直接幫盟軍打嬴仗。sor 講遠左)

然後講下咩叫stack based language
其實即係數學既postfix notation / reverse polish notation
平時寫數學算式係咁:1+2-3
用postfix notation寫就係12+3-
電腦evaluate呢一行既時候會用一個好高好高既櫃桶裝住d數字
一開始電腦見到第一個數字係1,就打開最底個櫃桶,擺個1字入去
跟住見到2,因為最底個櫃桶已經比人霸左,起高一格櫃桶擺2字入去
然後見到+號,電腦知道+號係需要兩個operand
就會打開櫃桶最高而有內容果兩格,拎出黎,加起佢,然後將個數擺番入櫃桶
1/2拎左出黎計完之後,就會掉左佢
所以+完之後,櫃桶得最最底果格,有個3字起度
然後電腦繼續睇,又會擺個3字入第二格
見到減號,電腦就會將櫃桶最高而有內容果兩格,拎出黎,減左佢
然後擺番個結果入櫃桶
所以最後櫃桶淨係裝住個0字
2017-08-14 14:37:33
bitcoin script都係用類似既方法黎運算
當然佢既operator就唔係加加減減咁簡單
講幾個例子:OP_HASH160
佢係用黎hash elliptic curve cryptography既public key做bitcoin address
佢只需要一個operand, 佢會做既係,先用SHA256 hash左佢
然後再用RIPEMD160去hash SHA256個hash result
最終結果就係你bitcoin address
RIPEMD160係另一款hash function
點解唔直接用public key 黎做address, 而用double hash完既結果?
其中一種講法係: public key係好佔位,因為佢好長,hash完之後會短好多慳番好多位

另一個好重要好重要既operator係:OP_CHECKSIG
佢係用黎檢查一個cryptographic signature 係咪由valid, given 條public key
(詳情refer chapter 2)
例如
underpant’s signature, underpant’s public key, OP_CHECKSIG
上面呢行expression之後,會return true

再講一個好常用既bitcoin script operator: OP_EQUALVERIFY
例如1,1,OP_EQUALVERIFY, 因為1=1,所以呢個expression既結果係true

講番TX2 input script同TX1既output script
TX2 input script
3045022100f24e4ccb982538929cd975eb74d5f0fbfc0a39890675e262be5deace375d2cf202207e589caff9b6786f13824401764534fc676e30af0cd4d071d298bf8153c014b101 04ee50954d50e061f7d7483acb2ea15ac1e1eff0464556bccbfc61290c76f4f58343070d22a6d4701288170dedfdb696cb14095f7d7418003a206b1c31982ffc48

TX1 output script
OP_DUP OP_HASH160 f3f7bc456deddcd97d1e17c1e8efe3064fe18a14 OP_EQUALVERIFY OP_CHECKSIG

TX2 input script 加埋TX1 output script 成為一個完整既script
如果呢個script既運行結果既成功既話,咁個交易就為之合法
TX2 input script果兩串好長好長既數分別係signature, public key
將上面兩個script擺埋下已之後就變成
[[signature]], [[public key]] OP_DUP, OP_HASH160, [[bitcoin address]] OP_EQUALVERIFY, OP_CHECKSIG


0: 一開始無野既stack(櫃桶)
1: 擺TX 2既第一個數入去, 即係address owner既簽名
2: 擺TX 2既第二個數入去, 即係address owner既public key
3: OP_DUP, 黎自TX 1既operator, OP_DUP, 即係duplicate, 會duplicate而家stack最高層既數值,所以變左多左條public key出黎
4: OP_HASH160, 黎自TX 1既operator, OP_HASH160, 將public key變成bitcoin address既operator, 所以最高果格變左做bitcoin address
5: 黎自TX 1既value, 係bitcoin address
6: OP_EQUALVERIFY, 黎自TX 1既operator, 會比較由TX2條public key計出黎既bitcoin address同黎自TX1既bitcoin address,要一樣既address先可以落下一步
7: OP_CHECKSIG, 黎自TX 1既operator, 比較TX 2既簽名同public key對唔對

留意TX 1個address係比錢你果個人set落去
而TX 2個public key /signature係你set落去,如果有另一個人想偷你個account既bitcoin
佢要扮到你個signature先得,因為簽名錯既話,起最尾果步OP_CHECKSIG就會fail
但係chapter 2講過,起elliptic curve cryptography既世界你要冒認人地簽名係無可能
成以bitcoin交易既安全性係完全倚靠ECC

呢排講到好hit既segwit2x就係講緊transaction入面既public key實在太長
所以搞到每個transaction既size太大
初初中本聰set左每個block既size係1MB
如果有方法減少到transaction size, 咁每個block裝到既transaction數量就會增加
segwit2x提議既方法就係將public key由transaction拎出黎,擺去extended block
咁每個transaction都可以慳好多位
2017-08-14 14:37:57
初代既bitcoin transaction幾乎都係行呢個script, 只不過大家擺落去既簽名/key/address都唔一樣
後黎bitcoin需要既交易種類越黎越多
例如你比錢一個公司,間公司有5個股東,各佔20%股權
呢間公司收到bitcoin之後,要5個股東入面起碼有3個股東同意先可以動用一筆資金
咁上面既bitcoin script就唔夠做喇,所以衍生出更複雜既OP_CHECKMULTISIG operator
你比錢公司既時候就一次過比5個address,而且specify 只需要求3 out of 5條public key就可以用到呢舊錢

留意每一個transaction既output script都係發起交易既人自定義
一般用家都係透過bitcoin wallet解決呢個問題,所以唔識都無用謂
但係如果你係自己砌一個transaction,而且寫錯左個script, 搞到個script永遠無人run到
咁就大鑊喇,即係好似你整左個壞既鎖出黎,係無鎖匙開得到既
咁果個交易入面既bitcoin就會永久損失,即係話無人可以用得到
情況同你撕爛銀紙一樣,唔同既係銀紙爛左銀行可以再印過,bitcoin script錯左就無可能救得番

事實上係有人特登做咁既事
專登寫個bitcoin script: 2, 2, +, 5, OP_EQUAL
即係check下2+2係咪等於5
因為唔係,所以個script永遠return false, 咁呢個交易包含既bitcoin就永久損失左
最簡單既做法係: OP_RETURN
個script淨係包含呢個operator, 永遠return false

點解要咁樣做?有D新cryptocurrency發行果陣,係會要求你燒1BTC黎兌換n個新既altcoin
用呢種proof-of-burn既方法黎表示你專重鍊金術既基本原則:等價交換
有D陰論者認為呢種做法,根本係想透過新altcoin黎減少bitcoin數量
令bitcoin流通量減少,谷高bitcoin個價黎賺錢
有人又覺得無所謂,反正bitcoin一直講左係得21,000,000個
就算少左一百萬個其實都無咩分別

=======

bitcoin script呢樣野我來回睇左三四次先夠膽話自己明
所以你就咁睇一次呢個chapter,唔明係好正常
解釋bitcoin script既中文 blog只有簡體中文,仲要寫得唔係幾易明(其實我都係)
不過無辦法,有心學既話唯有搵多幾個唔同既source睇啦

下次都係寫番D易明D既topic...
可能講下通脹vs通縮...
2017-08-14 16:50:38
新開tg谷
討論全部cryptocurrency
t.me/joinchat/EJiHz0JA9laIB8GdVrLeCQ
2017-08-14 20:46:00
2017-08-14 23:10:16
樓主有冇關於密碼學嘅書推介?
2017-08-15 11:02:35
樓主有冇關於密碼學嘅書推介?

我手上得Frouzan 本Cryptography & Network Security
易上口d
雖然唔係好theoretical,但係要學既數都包左起入面
唯一唔好就係真係好多typo, 多得太緊要...一定要開住errata黎睇
2017-08-16 10:03:27
照咁睇, 好多陰謀論既人話中本聰”收埋“好多bitcoin, 發左達, 呢個講法即係唔成立。 盤古初開既時候每個人有幾多bitcoin寫到清清楚楚, 中本聰亦無可能算到以後既交易計定個hash, 係唔係咁?
2017-08-16 11:53:59
Hashing algorithm 好重要係collusion resistance
其中一個例子係你download software 通常會比個 hash value你 md5|sha1|sha256
你 download 完個file, 對下個 hashvalue 就知個file, 有無比人改過,可以安心使用

但如果嗰hashing algorithms 好易搵到 f(X1)=f(x2) 就好大問題
Hacker 好易將software加入Virus 或者trogan 再用方法可以整到一樣hash value

咁你download 完之後,都唔知個software 係咪真係可信

有興趣知多d,點樣check
2017-08-16 13:14:07
Hashing algorithm 好重要係collusion resistance
其中一個例子係你download software 通常會比個 hash value你 md5|sha1|sha256
你 download 完個file, 對下個 hashvalue 就知個file, 有無比人改過,可以安心使用

但如果嗰hashing algorithms 好易搵到 f(X1)=f(x2) 就好大問題
Hacker 好易將software加入Virus 或者trogan 再用方法可以整到一樣hash value

咁你download 完之後,都唔知個software 係咪真係可信

有興趣知多d,點樣check

有D網站或者program, 你 u/l 個 file 上去, 佢就會俾個 md5 check sum 俾你
2017-08-18 14:57:36
Hashing algorithm 好重要係collusion resistance
其中一個例子係你download software 通常會比個 hash value你 md5|sha1|sha256
你 download 完個file, 對下個 hashvalue 就知個file, 有無比人改過,可以安心使用

但如果嗰hashing algorithms 好易搵到 f(X1)=f(x2) 就好大問題
Hacker 好易將software加入Virus 或者trogan 再用方法可以整到一樣hash value

咁你download 完之後,都唔知個software 係咪真係可信

有興趣知多d,點樣check

windows 開terminal行
CertUtil -hashfile C:\TEMP\MyDataFile.img MD5
2017-08-18 15:01:06
照咁睇, 好多陰謀論既人話中本聰”收埋“好多bitcoin, 發左達, 呢個講法即係唔成立。 盤古初開既時候每個人有幾多bitcoin寫到清清楚楚, 中本聰亦無可能算到以後既交易計定個hash, 係唔係咁?

盤古初開都計唔到邊個人有幾多bitcoin
因為中本聰都唔會估到之後既block係咩人挖到
無得計定之後交易既hash係arm 既
但係初初挖bitcoin的確係好易,因為無乜人爭
想象下成個network得100部電腦既時候
隔幾日就挖到一個block啦
所以閒閒地拎10000個bitcoin出黎買pizza都好閒

至於中本聰收埋bitcoin等發達
我相信佢自己都無諗過bitcoin會咁成功
2017-08-19 08:23:15
輕力一推
2017-08-19 08:45:45
------------Vector76 Attack-------------------------

技術夠高超既話,可以combine race attack同finney attack

下面繼續用咖啡店做例子
高智能既契弟發動攻擊之前 會先分析咖啡店既網絡流量
睇下咖啡店通常去bitcoin network邊個node
例如咖啡店同node 1/2/3係熟D既,收到咩transaction都會同node 1/2/3講先
於是你有樣學樣,同node 1/2/3打好關係

12:00:00
有個正常新block發佈左(叫佢做block 0),契弟開始掘下一個block
而且呢個block包含住一個正常交易(留意同finney attack唔同)

12:05:00
唔知點解咁好彩呢條契弟真係掘到下一個block, 但係佢唔發佈呢個block住
所以呢個時候其他miner仍然唔知有呢個block, 仍然based on block 0 mine緊

12:06:00
契弟去到咖啡店買咖啡
契弟比錢果一刻同時send:
1條正常交易比咖啡店個node
1條左手交右手既交易比node 1/2/3
咖啡店個node跟住會傳播呢個正常交易比node 1/2/3
但係好可惜契弟搶先一步同node 1/2/3講左野先
所以node 1/2/3 ignore左正常交易, 反而淨係會同其他node講左手交右手既交易
呢個時會mine 正常交易既礦工會比左手交右手既交易少
所以正常交易輸既機會好大

但係咖啡店心諗
「唔緊要!反正今次我會等到起碼1次confirmation先會沖咖啡比你!」

於是契弟同咖啡店都一齊起度等

12:10:00
其他miner終於掘到個block出黎,而且呢個block係包住左手交右手既交易
契弟立即將之前自己mine到而未發布而且包含正常交易既block send比咖啡店node
咖啡店咁就中伏喇,因為今次真係有一次confirmation, 局住比左杯咖啡契弟
但係咖啡店唔知道 呢個世界上 收到左手交右手block既node 係多過 收到正常交易既node
所以正常交易block好可能將來會變成孤兒block

---------Alternative History Attack-------------------

要抵擋上述attack, 等一次confirmation唔夠
咁我等夠兩次confirmation lor, 實得啦掛?

上面兩種攻擊方法都要求契弟事先掘定1個block
如果契弟既hashing power再強D
以佢一人之力同所有礦工鬥快
佢可以正正常常咁去買咖啡
同時起後面靜靜雞自己都掘礦
但係自己掘既block就隱含一條左手交右手既交易

就算咖啡店真係等夠兩次確認先沖咖啡比契弟飲
如果契弟真係掘得好快,起出面既礦工掘到兩個block既同時
已經掘到三個block
收到咖啡之後就即刻send果三個block出去
就會瞬間變成longest blockchain, 令到原本包含正常交易既block變成孤兒仔

咁你可能會問,有乜可能契弟會mine得咁快?
情況就好似:點解小明會跑得快過火車?因為小明真係跑得好快lor

但係呢種攻擊方法要求更加強大既hasing power
攻擊成功既機會depends on兩個factor:
契弟佔整個網絡既hashing power幾多%
同埋
咖啡店需要既確認次數

例如,契弟既運算能力係整個網絡既10%,而且咖啡店需要兩次確認先會沖咖啡比契弟
咁契弟攻擊成功既機會有5%
如果咖啡店增加確認次數到6次,而契弟運算能力不變,咁攻擊成功既會率只有0.02%
但係如果契弟真係好犀利
運算能力佔全世界40%,就算咖啡店等夠6次確認,都有50%既機會攻擊成功


想問下5%同0.02%係點計出嚟㗎? 搵到個online calculator但係冇講點樣計出嚟
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞