跟大家一起學習區塊鏈技術系列之一 比特幣之交易的可改性

沒有一種簽名哈希類型是保護簽名腳本的,這就給有限的DOS攻擊開了門,

簽名腳本包含secp256k1簽名,它不能籤它自己,使得攻擊者可以對交易做非功能性的修改,並且不會使得交易失效。比如,攻擊者可以在簽名腳本里增加一些數據,這些數據在前面的公鑰腳本處理之前丟掉。

雖然這些修改是非功能性的-因此不會改變交易使用的輸入和輸出-但是會改變交易哈希值。因為每個交易通過txid和前一個交易連接,一個修改的交易的txid就不是當初預期的那個了。

對於大部分即時要打包到區塊鏈的交易來說這不是個問題。但是當一個交易的被打包進區塊鏈之前它的輸出被花掉就是問題了。

比特幣開發人員曾經致力於在標準交易類型中減少交易的可改性。努力的一個成果就是 BIP141:隔離見證,2017年八月激活。隔離見證沒用的時候,新的交易不能使用還沒打包進區塊鏈的交易,尤其是大量比特幣危險的時候。

交易的可改性也影響支付的追蹤。比特幣核心的RPC接口讓你可以通過txid跟蹤交易-但是如果txid如果因為交易修改而改變了的話,它就像從網絡中消失了。

現在實際上最好的跟蹤交易辦法是通過交易的輸入,如果不讓交易失效的話,輸入是改變不了的。

最好的做法進一步指出,如果交易確實似乎從網絡中消失,並且需要重新發出,則會以讓丟失交易失效的方式重新發出。很有效的一種方法是確保重新發出的交易要花費與消失的交易相同的所有輸入。


分享到:


相關文章: