Segregated-Witness

BIP 144 交易格式和軟分叉和舊節點

  • December 19, 2018

我試圖手動解析原始比特幣交易,以便更好地理解它是如何工作的。

它是這樣開始的:“0200000000010141035625cd030eca667c95d1729a”

我想我已經很好地解析了 Tx 版本,但是下一個字節是 00。我想這與 BIP144 有關。正確的?

如果在 BIP 144 中是這樣:

支持此 BIP 的解析器將能夠區分舊的序列化格式(沒有見證)和這個。標記字節設置為零,因此此結構永遠不會在不支持此 BIP 的解析器中解析為有效事務。如果解析成功,這樣的事務將不包含輸入和單個輸出。

這是否意味著舊節點不中繼 Segwit 交易?他們會認為自己無效嗎?但是一旦它們被放入一個塊中,它就已經是舊節點可以理解的格式了?

對不起這個混亂的問題。

這是對的。作為一種升級機制,節點不會中繼或探勘他們知道無法正確驗證的交易。P2P 網路明確避免了可能導致無效交易包含在塊中的情況。但是,它將在一個塊中接受這些交易。

當舊節點連接到新節點時,新節點檢測到舊節點不支持新的交易格式,因此它將發送給它的任何交易——例如區塊中的隔離見證交易——轉換為舊格式。舊格式確實有見證數據欄位,但舊節點對見證數據沒有任何要求,所以他們不介意。

格式節點相互發送交易不是比特幣共識的屬性……你和我可以使用與其他一些節點完全不同的格式。其他人甚至不需要知道我們是否使用了其他編碼……只要它不妨礙我們傳達每個有效的 txn。

新節點也根本不會使用塊外的事務將隔離見證轉發到舊節點。它們可以——但舊節點會丟棄它們,因為它們可以檢測到它們正在使用“未來功能”。節點不會中繼、探勘或在他們的錢包中顯示有意向後兼容擴展的交易,因為他們知道他們不知道如何充分驗證這些規則。例如,這可以防止未升級的礦工意外探勘由於新引入的規則而無效的無效交易。如果使用“未來功能”的 txn 出現在塊中,他們會很樂意接受它們,只要它們與節點知道如何執行的所有規則一致。

有幾種“未來功能”,例如 NOP 操作碼和留在腳本堆棧上的未處理數據。舊節點將隔離見證交易視為將數據留在堆棧上。

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