segwit 和非segwit 節點如何看待segwit 塊?
假設一個礦工開采了一個區塊。
- 在這個區塊中,有些交易是非隔離見證的,有些是隔離見證的?
- 該塊包含兩部分:
- 有交易的部分
- 帶有隔離見證交易簽名的隔離部分?
- 對於舊節點來說,非隔離見證交易看起來很正常,而隔離見證交易看起來像不需要簽名的有效交易?這些節點看不到包含簽名的隔離部分?
- 對於新節點來說,非隔離見證交易看起來很正常,它們會辨識隔離見證交易並檢查隔離部分以驗證簽名嗎?
像您描述的那樣,塊沒有兩個部分。segwit 中的 segregated 一詞意味著見證數據不包含在 TXID 計算中,類似於它始終不包含在簽名雜湊計算中的方式。它仍然包含在交易和區塊中。
使用 segwit,簽名位於每個交易中的見證欄位中,該見證欄位包含在 nlocktime 欄位之前。
當一個節點使用塊將隔離見證中繼到不理解隔離見證的對等方時,它會將見證欄位從所有擁有它們的事務中刪除。由於他們沒有任何與 segwit 數據有關的規則,因此他們對此非常滿意。
如果你將一個剝離的塊交給一個非過時的節點,它只會丟棄它並禁止你給它無效數據——它知道隔離見證規則並嘗試驗證額外的數據。
在這個區塊中,有些交易是非隔離見證的,有些是隔離見證的?
是的。兩種類型的交易都可以包含在同一個區塊中。Segwit 交易一般會消耗所有類型的 UTXO;而非隔離見證交易只消耗
P2SH/P2PKH/P2PK
類型 UTXO。該塊包含兩個部分
不。它幾乎是一樣的,segwit 只與如何計算交易標識符(即
txid
)有關,這幾乎只是交易中除其簽名之外的所有內容的雜湊值。同樣,該塊僅包含所有交易。對於舊節點來說,非隔離見證交易看起來很正常,而隔離見證交易看起來像不需要簽名的有效交易?這些節點看不到包含簽名的隔離部分?
編輯#1:根據 Pieter Wuille 指出的 - 不,舊節點不會看到相同的。新節點將在發送之前簡單地刪除見證。修訂後,我注意到這是因為
scriptSig
P2WSH 和 P2WPKH 本機輸入的欄位將為零,如BIP141中所述。對於新節點來說,非隔離見證交易看起來很正常,它們會辨識隔離見證交易並檢查隔離部分以驗證簽名嗎?
是的。新節點必須按照舊節點的約定進行簽名驗證。再次重申,簽名沒有單獨的部分。