Segregated-Witness

隔離見證後的區塊大小限制是多少,遺留節點如何處理隔離見證交易?

  • September 13, 2020

正常情況下,聽說比特幣blocksize是1MB,但是隨著Segwit更新blocksize可以達到4MB,所以應該說blocksize是4MB吧?此外,遺留節點僅接收隔離見證交易的輸入和輸出數據。遺留節點如何驗證隔離見證交易的有效性。遺留節點可以在從 segwit 節點傳播期間對其進行驗證,但它如何在兩個遺留節點之間傳播,其中 segwit 數據完全失去?謝謝

通常我聽說比特幣的blocksize是1MB,但是隨著Segwit更新blocksize可以達到4mb,所以我們應該說blocksize是4MB,對吧?

在啟動隔離見證之前,該塊被限制為 1,000,000 字節。隨著 segwit 的啟動,這個限制被 4,000,000 重量單位 (WU) 的塊重量限制所取代。一個字節的見證數據貢獻 1 個 WU,一個字節的非見證數據貢獻 4 個 WU。理論上,如果區塊僅由見證數據組成,則該區塊最多可達到 4,000,000 字節。在實踐中,即使僅由隔離見證交易組成的塊也預計最終會在 2.1-2.7 MB 的範圍內,因為交易總是具有非見證數據。因此,Blocksize 不再是限制的正確術語,而是我們應該說*“blockweight limit is 4 MWU”*。

此外,遺留節點僅接收隔離見證交易的輸入和輸出數據。遺留節點如何驗證隔離見證交易的有效性。遺留節點可以在從 segwit 節點傳播期間對其進行驗證,但它如何在兩個遺留節點之間傳播,其中 segwit 數據完全失去?

隔離見證交易的交易id(txid)是從剝離的交易中計算出來的,即不包括見證數據的交易數據。這有兩個影響:第一,遺留節點使用與完整節點相同的標識符進行隔離見證交易。第二,未簽名交易的 txid 與已簽名交易的 txid 相同(用於設置智能合約,例如 LN 通道)。當遺留節點請求隔離見證交易時,另一個節點會辨識出請求節點的版本過時,並向他們提供剝離的交易。遺留節點也可以在彼此之間中繼剝離的交易。為了覆蓋簽名,segwit 交易另外有一個見證交易 id (wtxid),它涵蓋了簽名交易的全部數據。隔離見證區塊也需要送出已簽名的交易,儘管!為此,從 wtxid 建構了第二個 Merkle 樹。wtxid 樹的 Merkle 根作為“見證承諾”儲存在 coinbase 交易的 OP_RETURN 輸出中。這是對區塊頭中的正常 Merkle 根的補充,它送出到交易的 txid 並保持對遺留節點的可讀性。

遺留節點到達相同的 UTXO 集,因為剝離的交易指定在輸入中花費哪些 UTXO,以及創建哪些新 UTXO。由於遺留節點不知道見證數據,它們無法檢查隔離見證交易的簽名。因此,遺留節點不是完全驗證節點(完整節點),它們獨立地執行比特幣協議的所有規則(具體來說,它們不執行隔離見證的規則)。隔離見證交易對遺留節點來說似乎是有效的,因為對於他們對比特幣協議規則的過時理解而言,輸入似乎是“任何人都可以消費”。

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