Bitcoin-Core-Development

什麼是阻止 Taproot 花費遵循舊的 Taproot 規則(最初被視為任何人都可以花費)預啟動創建重新組織後啟動?

  • November 16, 2021

這個問題類似於在 Signet 節點上執行不同的 Taproot 規則(舊的和新的)主網啟動前的這個 Signet問題。相反,它是關於一個有效的 Taproot 如何根據舊的 Taproot 規則(從未在主網上強制執行)在主網上消費,最初被網路視為任何人都可以消費,當新的 Taproot 規則出現時不會產生大規模的重組在主網上啟動。

例如,假設我創建了一個受 Taproot 規則約束的 UTXO,因為它們是在 2020 年 7 月指定的(在 Taproot BIP從 R 點的平方決勝局更改為均勻性決勝局之前)。我按照 2020 年 7 月指定的 Taproot 規則設法從這個 UTXO 中支出。當然,Taproot 根本沒有被啟動,所以所有節點都會將我的交易視為任何人都可以消費,我的交易很容易把它變成了一個塊。現在假設在 2021 年 6 月,使用 2020 年 8 月後指定的新規則在主網上啟動 Taproot(使用平衡決勝局)。是什麼阻止了我的交易無法針對新的 Taproot 規則進行驗證並創建一個大規模的重組回包含我的交易的區塊?

當軟分叉(例如 Taproot)被啟動(假設它處於某個階段)時,所有節點都同意從 Taproot 啟動點開始僅根據 Taproot 規則驗證交易。沒有節點將根據啟動時指定的規則驗證交易預啟動。因此,即使有有效或無效的 SegWit v1 見證人可用,網路將始終同意您遵循舊 Taproot 規則的交易是任何人都可以消費的。

相比之下,啟動後網路上的一些節點將執行新的 Taproot 規則(執行最新版本的比特幣核心),一些節點將它們視為任何人都可以消費(執行舊版本的比特幣核心)。遵循舊 Taproot 規則(從未在網路上啟動)的交易廣播啟動後將被執行新 Taproot 規則的節點拒絕。即使某些節點會將遵循舊 Taproot 規則或新 Taproot 規則的交易視為任何人都可以消費,但只有遵循新 Taproot 規則的交易才會使其成為網路上所有節點都接受的探勘塊。

當然,Taproot 根本沒有被啟動,所以所有節點都會將我的交易視為任何人都可以消費,而我的交易很容易成為一個區塊。

不,軟分叉的新輸出類型的構造方式對於舊節點來說是非標準的,因此不會被舊節點包含在記憶體池中,因此也不會被探勘到塊中,除非礦工明確覆蓋預設值行為。

如果礦工在規則生效之前包含這樣的非標準交易,這不是問題,因為交易根據舊規則是有效的——否則舊節點在規則啟動後將無法遵循最佳鏈。規則隨啟動高度生效,不追溯適用。

如果礦工在規則啟動後這樣做,他們會創建一個無效塊,該塊會被所有執行新啟動軟分叉規則的節點拒絕。

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