作者DarkerDuck (達克鴨)
看板DigiCurrency
標題Re: [求助] 關於double spend的問題
時間Fri Jun 10 11:15:52 2016
你講得這個情形就是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將會沒有作用
--
Bitcoin: 1GjHNjS3yAmyCsRp8i8yj956NZBSAcLvYe
https://blockchain.info/address/1GjHNjS3yAmyCsRp8i8yj956NZBSAcLvYe
Litecoin: LNpJUtNFcmhHAoohdH3aEenURFjXAzfKXc
http://ltc.blockr.io/address/info/LNpJUtNFcmhHAoohdH3aEenURFjXAzfKXc
Dogecoin: DBQAZU4x7hCYEjzsQyXLpnjyrTmnPBGWd9
https://dogechain.info/address/DBQAZU4x7hCYEjzsQyXLpnjyrTmnPBGWd9
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.171.107.23
※ 文章網址: https://webptt.com/m.aspx?n=bbs/DigiCurrency/M.1465528554.A.57D.html
1F:推 transt: 請問為什麼廣播T將會沒有作用?T原本不是有Alice的 06/10 11:38
2F:→ transt: signature嗎?這樣T不是有可能進到其他的block之中? 06/10 11:39
3F:→ transt: 另外上篇推文說到通常錢包會把unconfirmed的交易也計算 06/10 11:41
4F:→ transt: 到餘額中,那請問是只要transaction產生,錢包的餘額就 06/10 11:43
5F:→ transt: 會產生變化嗎?如果Alice想要看到那一個BTC回到他的錢包 06/10 11:45
6F:→ transt: ,是要等到T從整個network中消失嗎? 06/10 11:47
因為T有T'的input,input一旦被用走就無法被其他的transaction用。
所以本來的T就會變成無效交易,不會被任何節點接受,從網路中消失。
Alice想要看到BTC回到她的錢包,必須等沒有T的blockchain產生。
T完全從網路中消失,自己的錢包重新同步。
餘額才會復原
※ 編輯: DarkerDuck (118.171.107.23), 06/10/2016 12:25:40
※ 編輯: DarkerDuck (118.171.107.23), 06/10/2016 12:26:18
7F:推 transt: 非常感謝你的回覆! 06/10 13:13
8F:推 transt: 不好意思我又有一個小問題: 06/10 13:34
9F:→ transt: 當初Alice在送出/廣播 T 的同時,Alice的wallet中BTC數目 06/10 13:35
10F:→ transt: 是否就會-1? 06/10 13:36
11F:→ DarkerDuck: 看錢包的設計,通常送出當下balance就會直接-1 06/10 14:58
12F:推 transt: 真的非常感謝你幫我解惑! 06/11 12:06