Segregated-Witness

可以推斷出 bc1 地址是多重簽名的嗎?

  • August 5, 2022

研究揭示 bc1 地址是否屬於多重簽名錢包與普通錢包的隱私和安全影響。

我確實注意到multisig bc1 地址比普通地址長……P2WSH(62 個字元長)與 P2WPKH(42 個字元長)。

所以長度揭示了“付費見證腳本雜湊”的一個實例,但具體來說多重簽名呢?

*不,您只能確定輸出類型,而不能確定來自其他使用者地址的編碼支出條件。只有在根據相應輸入發布相應的 p2sh/見證腳本後,才能知道 SH 輸出是否將資金投入到多重簽名腳本中。

原生 segwit 輸出對金額、見證版本和見證程序進行編碼。對於付費見證公鑰雜湊 (P2WPKH),見證版本為 0,見證程序是 20 字節的公鑰雜湊。對於付費見證腳本雜湊 (P2WSH),見證版本也是 0,見證程序是見證腳本的 32 字節雜湊。長度用於區分哪些規則適用於這兩種共享相同見證版本的不同輸出類型。

正如所指出的,P2WSH 輸出承諾資金到輸出腳本中的見證腳本的散列。由於這裡使用的加密散列函式 sha256 為任何長度的數據輸入生成固定長度的隨機摘要,因此觀察者無法通過檢查散列來了解有關原像內容的任何資訊。因此,在接收者在相應的交易輸入中顯示該腳本之前,無法確定 P2WSH 輸出是對多重簽名支出條件還是另一個腳本進行編碼。

對於 Pay to Taproot (P2TR),輸出腳本由見證版本 1 和後跟對公鑰進行編碼的 32 字節見證程序組成。在這裡,確定輸出是否“多重簽名”更加困難:因為使用 Schnorr 簽名方案極大地簡化了密鑰聚合的實現。P2TR 輸出的這一特性允許輸出由引擎蓋下的多方控制,但當所有各方協作時,仍會使用與第三方的單簽名輸入無法區分的輸入。


¹ 比特幣的 Script 是一種真正的程式語言,P2WSH 輸出允許接收者在其見證腳本中編寫任何類型的支出條件。雖然許多智能合約可能廣泛涉及確定如何在多方之間分配資金,但我認為“multisig”指的是簡單的“m-of-n multisig”。其他流行的應用程序包括例如用於促進閃電網路通道、託管服務或在一個輸出中編碼多個不同支出條件的腳本,其中一些僅在延長等待時間後才可用。

包含多重簽名的雜湊腳本與不含多重簽名的雜湊腳本長度相同。因此,只有在花費時間顯示腳本時才顯示它是多重簽名。

正如您所說,地址類型在花費時間之前由其長度或前綴顯示。

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