Script

在 P2SH 交易中,贖回腳本是否可以只包含 1 個公鑰:

  • June 30, 2022

我有幾個關於比特幣簽名和 P2SH 的問題:

為什麼使用 P2SH 而不是其他形式?它今天仍然流行嗎?SegWit 是否使它變得多餘或不那麼有用,如果沒有,最常用的簽名格式是什麼?

主要是:

P2SH 贖回腳本能否由單個公鑰組成(因此只有一個人在創建贖回腳本)。什麼是贖回腳本?

在採用BIP16: Pay to Script Hash之前,多重簽名是可能的,但只能以裸輸出的形式。多重簽名將直接在ScriptPubKey(輸出腳本)中定義。這有三個缺點。對這些靈活的結構進行編碼沒有地址標準,產生的大輸出腳本必須由發送方支付但為了接收方的利益,大輸出腳本也會導致 UTXO 比其他 UTXO 大得多,然後需要由所有完整節點儲存,直到用完為止。

BIP16 引入了一定程度的間接性。不是直接在 中編碼條件腳本,而是ScriptPubKey包含ScriptPubKey一個 P2SH 程序,該程序通過它的雜湊送出到一個特定的兌換腳本。(ScriptSig輸入腳本)以兌換腳本(匹配輸出中的雜湊承諾)的形式提供實際消費條件,以及滿足兌換腳本的腳本參數。

Redeem Script 可以包含任何有效的 Script 表達式,包括只需要一個密鑰的簽名即可花費的表達式。不過,這種結構的塊空間效率將低於一開始就使用單信號輸出類型。

由於 P2SH 程序總是有固定的長度,因此很容易為其製定地址標準,並且輸出的成本不再那麼繁重。

在此處輸入圖像描述

今天大約 35% 的交易輸出是 P2SH 輸出,其中大部分是編碼包裝的 segwit 輸出。我們現在有更多塊空間有效的輸出類型。使用 P2WPKH、P2WSH 和 P2TR 之一,它將能夠使用更少的塊空間實現任何等效條件腳本。

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