Re: [求助] 關於double spend的問題

作者: DarkerDuck (達克鴨)   2016-06-10 11:15:52
你講得這個情形就是51%攻擊
我先大概講一下發出一筆交易是怎麼進到區塊裡的。
首先每個節點都會有一個暫存transaction的mempool,在未進到區塊裡的時候,
交易都會先被暫存到mempool裡,等發現區塊後,已經被寫到區塊裡的交易就會從mempool
裡移掉。
※ 引述《transt (transt)》之銘言:
: 假設有一個confirmed transaction T (T所在的block後面已經有6個block)
: T 的內容是 Alice 給了 Bob 一個 BTC
: 假設現在Alice神通廣大,在T所在的block之前fork了一個更長,沒有包含T的chain
: 請問
: (1) 那一個 BTC 會從 Bob 回到 Alice 手中嗎?
假如transaction T還留在任何一個節點的mempool中,那T就會被重新廣播到網路中。
此時這個BTC就會從已確認狀態,變回未確認狀態。
假如Alice只是一個單獨節點,並且mempool沒有T。
那可能其他所有節點裡的mempool都已沒有T。這個時候這筆交易自然就不存在了。
: (2) T會被丟掉,就此消失在整個network中嗎?
假如是Alice單獨作51%攻擊,T是有可能在mempol中消失。
但Bob要重新廣播也很容易。
: (3) 承(2),如果T沒有消失,那T在等待被validate的這段時間,Alice可以修改T嗎?
: (例如,Alice 把 T 的 output 從 Bob 的 address 改成自己的)
: 懇請各路專家幫忙解惑,感謝
可以,不過通常完整節點只會承認已進到mempool的T,後面意圖修改的T' 是無法進入到
mempool裡的。
通常要做51%攻擊就是直接把修改T'加入到自己產生的區塊中了。
這樣後來Bob要重新廣播T將會沒有作用
作者: transt (transt)   2016-06-10 11:38:00
請問為什麼廣播T將會沒有作用?T原本不是有Alice的signature嗎?這樣T不是有可能進到其他的block之中?另外上篇推文說到通常錢包會把unconfirmed的交易也計算到餘額中,那請問是只要transaction產生,錢包的餘額就會產生變化嗎?如果Alice想要看到那一個BTC回到他的錢包,是要等到T從整個network中消失嗎?非常感謝你的回覆!不好意思我又有一個小問題:當初Alice在送出/廣播 T 的同時,Alice的wallet中BTC數目是否就會-1?
作者: DarkerDuck (達克鴨)   2016-06-10 14:58:00
看錢包的設計,通常送出當下balance就會直接-1
作者: transt (transt)   2016-06-11 12:06:00
真的非常感謝你幫我解惑!

Links booklink

Contact Us: admin [ a t ] ucptt.com