Segregated-Witness
幣庫交易中的 OP_RETURN?
嘿,看著這筆交易,我很困惑為什麼有兩個輸出以及為什麼其中一個被標記為 OP_RETURN
每個 segwit 塊在 coinbase 交易中都有一個這樣的 OP_RETURN:它是見證樹的 Merkle 根。
當隔離見證軟分叉被啟動時,這包括對之前網路上存在的第三方交易延展性問題的修復。問題是任何其他人都可以通過反轉簽名中使用的 S 值來更改交易的簽名。這導致另一個有效(非標準)交易將相同的硬幣花費給相同的收件人,但 txid 不同。
隔離見證通過將見證程序從輸入腳本移出到交易中的單獨“見證欄位”(“隔離見證”)來防止這種交易延展性來源,在計算 txid 時會忽略該欄位。這意味著即使更改了隔離見證交易的簽名,它們的 txid 也保持不變。使 txid 獨立於簽名還可以更輕鬆地在未簽名交易之上建構(因為它們的 txid 不會隨簽名而改變),這對於閃電網路支付渠道中使用的智能合約很有用。
一個區塊通過在其 txid 上包含 Merkle 樹的根來送出其所有交易。但是,這意味著該承諾不會涵蓋 segwit 交易的簽名,因為它們對 txid 沒有貢獻。為了送出簽名,segwit 引入了第二個並行 Merkle 樹,它由見證 txid 建構,即根據包括見證程序在內的完整交易數據計算的交易 id。由於沒有硬分叉就無法擴展區塊頭,因此 segwit 通過在 coinbase 交易中的 OP_RETURN 中包含根來送出到此見證樹。