Transactions
區塊鏈中的交易延展性
區塊鏈中的交易延展性如何?有沒有例子?
查看原始的第一個輸入腳本:
4d49003046022100847361c694421bf63ea1b51d8e2189805b161ab3d4cb96ab745a20468dd6c2ea0221009160897652bedfd7c837855d793c32509063338ac7524b8f09abfed761cf16fc014d410004c8dde23708932059bf4491c96794c5412b1182d62d2741e0986cb87276d3053f0b7326155114ad67c04adc60b5a47718fa8744ecb86a001f99da8761113edb24
查看第一個字節:
4d
(OP_PUSHDATA2)。這意味著,接下來的 2 個字節包含將被推送到堆棧的數據長度。這個長度 =0x49
。但是典型的事務不使用 OP_PUSHDATA2 命令。如果事務是由 bitcoin-qt 創建的,它直接從數據長度開始:[4d]49[00]3046....
我將不必要的字節放入括號中。
因此,有人在簽名腳本中添加了 2 個字節,但沒有破壞簽名並更改了交易 ID。原始 tx 已從 blockchain.info 中刪除。下一個連結不再有效:https ://blockchain.info/tx/ef74c1cbf0003fc4e96a87a59838f7dd3da488d9d83fec3f270b0d3d7c2bc309?show_adv=true
查看 wiki 以獲取有關腳本的更多資訊:https ://en.bitcoin.it/wiki/Script
區塊鏈不能包含可延展的交易。可延展交易發生在交易被嵌入區塊鏈中的塊之前。
本質上,交易 ID 是關於交易的所有內容的雜湊,包括簽名。簽名簽署除簽名部分之外的所有內容(它不能簽署自己的數據)。因此,兩個交易記錄可以具有相同的輸入和輸出,具有(有效)相同的簽名,但具有不同的交易 ID。正是同一筆交易的雙重交易 ID 會讓一些比特幣客戶感到困惑。
將交易併入區塊後,延展性不再重要。當比特幣客戶在交易被正確確認(通過多次合併到一個區塊中)之前嘗試處理交易時,可能會出現問題。