Segregated-Witness

我可以在同一個交易中混合 P2PKH 和 P2WPKH 輸入嗎?

  • March 28, 2019

我正在努力增加我對 bech32 和 SegWit 的了解,為此我正在努力通過這個解釋

這是我試圖理解的假設情況。假設 Jamal 可以訪問幾個 UXTO。

UXTO #1: 10 BTC (P2PKH)
UXTO #2: 10 BTC (P2WPKH)

此外,假設 Jamal 想向 Tyrone 發送 11 個 BTC。Tyrone 提供了一個 BC1_XXX 的 bech32 地址。

因此,當 Jamal 建構他的交易時,他將擁有:

Inputs: 
   UXTO#1 10 BTC (P2PKH)
   UXTO#2 10 BTC (P2WPKH)

Outputs
   BC1_XXX 11 BTC
   BC1_CHANGE 9 BTC (a newly created P2WPKH address)

(假設本例中的交易費用為零)

**如上所述在同一事務中混合 P2PKH 和 P2WPKH 輸入是否可以接受?**到目前為止,我所查看的範例都沒有涵蓋這種情況。

接下來…

關於這裡的文章:表示支持兩種交易格式:

(a) nVersion|txins|txouts|nLockTime
(b) nVersion|marker|flag|txins|txouts|witness|nLockTime

…然後後來聲明:

如果交易中的所有 txin 都沒有與任何見證數據相關聯,則該交易必須以原始交易格式序列化,沒有標記、標誌和見證。例如,如果沒有一個 txin 來自 segwit UTXO,它必須以原始交易格式序列化。(例外:coinbase 交易)

我的問題是:

我什麼時候會遇到“交易中的所有 txin 都沒有與任何見證數據相關聯”的情況?它說如果“沒有一個 txin 來自 segwit UTXO”,就會出現這種情況。**但即使在輸入完全來自 P2PKH(不是 P2WPKH)UTXO 的情況下,我是否仍然有需要在交易的“見證”部分“隔離”的見證數據(即簽名)?**還是說如果所有輸入都是非隔離見證,這意味著交易本身是非隔離見證,因此我應該使用格式(a)——儘管有隔離見證輸出?

如上所述在同一事務中混合 P2PKH 和 P2WPKH 輸入是否可以接受?

是的,一點沒錯。與您可以在同一事務中混合多重簽名和 P2SH 和 P2PK 輸入的方式相同。

我什麼時候會遇到“交易中的所有 txins 都沒有與任何見證數據相關聯”的情況

當您不花費任何 SegWit 輸出時。

但即使在輸入完全來自 P2PKH(不是 P2WPKH)UTXO 的情況下,我是否仍然有需要在交易的“見證”部分“隔離”的見證數據(即簽名)?

不,這些簽名將是“見證數據”(在抽象意義上),但它們沒有被隔離。P2PKH 輸出的花費需要輸入的 scriptSig中的公鑰和簽名 - 而不是在單獨的見證部分中。

還是說如果所有輸入都是非隔離見證,這意味著交易本身是非隔離見證,因此我應該使用格式(a)——儘管有隔離見證輸出?

確切地。當你使用 P2SH 時,甚至沒有人知道輸出是 SegWit 輸出,所以這顯然無關緊要。重要的是消費是否需要任何證人。

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