交易延展性/DDOS 攻擊是如何讓交易所的內部會計系統“不同步”的?
“因此,在創建交易的同時,也創建了格式錯誤/並行的交易,從而在整個網路上造成混亂的迷霧,進而影響幾乎每一個實施,”他補充道。
Antonopoulos 繼續說 Blockchain.info 的實施沒有受到影響,但一些交易所受到了影響——他們的內部會計系統逐漸與網路不同步。
這種不同步是如何發生的?這是我的理解;在創建交易時,惡意使用者會在網路中創建數百個相同的交易,但簽名發生了變化。原始交易可能會或可能不會被確認,因為變異版本可能首先在區塊鏈中得到確認。
例如,使用自動化系統批准提款(如文章所述)的 Mt. Gox 會考慮在區塊鏈中實際確認之前批准提款交易。一旦該交易的變異版本在區塊鏈中得到確認,Mt. Gox 的會計系統就會出現問題,因為它假設已確認的交易(因此已經“失去”了比特幣)實際上並未得到確認。
我的理解正確嗎?
我假設 MtGOX 在這裡是真實的,以避免破壞 OP 的問題。交易延展性在當時絕對是一個問題。它影響了許多實現,從 BitcoinJ 到較舊的比特幣節點。
<http://faucet.xeno-genesis.com/>的運營商也告訴我,他的服務在延展性機器人出現時存在巨大問題。
錢包中可能發生的混亂是這樣的:想像你的節點聽到了一個 ID A 的交易,並支付到你的錢包中。但是,想像一下這筆交易是被篡改的,而原來的交易是要被確認的。你的錢包對此一無所知。
所有交易都是指未使用的交易,雖然一筆交易的不同副本可以暫時存在於世界不同的地方,但最終只有一個會被確認。我們知道輸入只能使用一次。
某些實現可能無法正確處理此問題。想像一下嘗試花費一筆不存在的 Tx,也許您的客戶想要提取 BTC?如果您不檢查新發布的塊是否有與未確認交易衝突的交易,它將失敗。您可以觀察到兩筆交易花費相同的輸入,因此您將確認的一筆交易視為有效。
MtGOX 在發送攻擊前收到的硬幣時也會遇到問題。原因是,如果他們廣播了他們的交易,並且一個經過處理的副本最終出現在區塊鏈中,他們會認為它未能確認,因此客戶可以再試一次。甚至可能使用其他輸入!一個攻擊者可能會重複這個循環,一遍又一遍地耗盡錢包。
另一個可能的問題是,如果他們確實認為交易已經通過,但仍然試圖花費不正確的 TxID,那麼該交易將會失敗,從而引起客戶的恐慌。
在攻擊期間發送大量交易的錢包受到的影響最大。
交易延展性與此無關。閱讀<http://www.reddit.com/tb/1zcrj8>了解更多資訊。