Transactions

比特幣腳本可以用於雙花攻擊嗎?

  • May 17, 2014

一個標準的比特幣交易將硬幣存入一個地址,然後使用比特幣的腳本語言,聲明想要花費這個輸出的人必須擁有與該地址對應的私鑰。

但是,可以偏離此基本模板來創建更複雜的交易,其中必須滿足其他條件才能花費交易輸出。

是否可以創建一筆交易,將一筆款項存入一個地址,但只允許另一個私鑰的所有者使用它?我不是比特幣腳本專家,但這看起來至少是可能的。

在這種情況下,是否可以使用這種精心設計的交易來發起雙花攻擊,其中地址 A 將金額 X 發送到地址 B,但在交易完成後,地址 A 保留金額的所有權並可以將其發送到其他地方,而地址即使這筆款項記入其餘額,B實際上也無能為力?

標準錢包將如何處理此類交易?它甚至會意識到發生了一些奇怪的事情,還是會盲目地顯示 X BTC 輸入了地址 B,而不管交易腳本如何?


編輯:

抱歉,我被諸如blockchain.info之類的網站如何顯示交易誤導了:交易實際上並不包含任何“輸出地址”,它只包含說明花費它們所需條件的輸出;通過檢查輸出腳本請求哪個地址的簽名來計算“輸出地址”;因此,如果不在輸出腳本中實際放置地址 B,就不可能“向地址 B 匯款”。

然而,問題仍然存在:是否可以精心設計交易以欺騙錢包告訴其使用者“我收到 X BTC”,而其他人實際上可以使用另一個私鑰索取這筆款項?

您所描述的是術語矛盾。如果將一筆錢存入一個地址,這意味著只有該地址的私鑰才能花這筆錢。

也許你可以製作一個非標準交易並告訴人們它正在給予地址 B 的所有者使用它的權限,但如果人們足夠仔細地觀察交易,他們將能夠判斷它確實是地址 C(而不是 B)‘可以花掉它的所有者。沒有辦法解決這個問題:交易輸出是公開的,其工作方式的實現也是如此。

所以如果問題是:你能用非標準事務欺騙軟體 X 嗎?也許,這將取決於在相關軟體中找到錯誤(或其他不太理想的情況)。(比如你做了一筆交易,地址B或者C都可以消費,可能B的錢包會說有餘額,如果他沒有在你之前再轉賬,那麼你可以“偷回來” ” 那樣的錢)但是,我將任何非標準交易視為高度可疑的交易。

不,你不會用這個來欺騙標準客戶端。如果它不完全理解腳本(即它是一個非標準腳本),它不會嘗試部分解析它或諸如此類。過程很簡單:如果客戶端不能完全理解腳本,就直接忽略它。時期。

引用自:https://bitcoin.stackexchange.com/questions/25360