Transactions
舊錢包可以兌換它收到的隔離見證輸出嗎?如果有怎麼辦?
關於這是否屬實,有一些相互矛盾的資訊。我正在尋找對此的技術答案,以期消除未來對此事的潛在困惑。
**主要問題是:**舊的未升級的非隔離見證錢包能否贖回它收到的隔離見證輸出?
Segwit 輸出定義為具有 P2WPKH 或 P2WSH 結構的輸出點,如bip141在其
scriptPub
部分中的輪廓。據我了解,當一個舊錢包收到一個針對它的隔離見證交易時(假設 tx 已經在一個區塊中開採),它將
0 <20-byte hash>
在這個隔離見證交易中看到(假設 P2WPKH)scriptPub
。在非 segwit 規則下解釋這一點,舊錢包會將其視為anyone_can_spend
——無論scriptSig
在贖回交易中提供什麼,腳本堆棧的頂部總是評估為真。錢包使用/兌換此 segwit 輸出的唯一方法是在 bip 中建構交易作為大綱。也就是說,它構造指定 prev_txid 和 index 正常的交易,一個空的
scriptSig
和一個見證程序 + 見證雜湊。但是一個不支持隔離見證的錢包不知道如何建構最後一部分。如果沒有這部分,segwit 驗證節點和礦工將不得不拒絕此交易。因此,由此自然而然地得出,舊的非隔離見證錢包不應該能夠進行隔離見證交易。
請注意,這個問題不是關於:
- 舊錢包發送非隔離見證輸入 -> 到隔離見證輸出。
- 關注錢包發送關注輸入 -> 到非關注輸出。
因此,由此自然而然地得出,舊的非隔離見證錢包不應該能夠進行隔離見證交易。
那是正確的。一個對隔離見證一無所知的錢包將無法構造一個有效的交易輸入來花費隔離見證的輸出。
但是,問題的前提
當舊錢包收到針對它的隔離見證交易時
也沒有意義。如果錢包不知道 segwit,它永遠不會構造一個 segwit 地址來分發。因此,根據定義,不能有任何針對它的隔離見證輸出。
收款人始終決定接受資金的確切輸出——這就是被編碼到地址中的內容。