Segregated-Witness

P2WSH,witness_v0_scripthash:如何派生地址

  • January 6, 2019

是否有與 P2WSH 腳本相關的地址?

對於 testnet txid = 6717c8971dccbf826790efc16fb357f1e225fed3448247b8556c9f13a6c0ce42,我得到: "vout": [ { "value": 0.05994165, "n": 0, "scriptPubKey": { "asm": "0 43aac20a116e09ea4f7914be1c55e4c17aa600b7", "hex": "001443aac20a116e09ea4f7914be1c55e4c17aa600b7", "type": "witness_v0_keyhash" } } ] 沒有與此相關的地址嗎?

這是一個 Segwit 輸出,因此沒有與之關聯的地址。隔離見證交易的鎖定腳本包括見證版本(本例中為 0)和贖回腳本(即 43aac20a116e09ea4f7914be1c55e4c17aa600b7)。鑑於贖回腳本的長度為 20 字節,此鎖定地址為付費見證公鑰雜湊 (P2WPKH)。因此兌換腳本是壓縮公鑰的 hash160。

由於 Segwit 是通過軟分叉實現的,因此有些客戶尚未完全更新其軟體。對於這些客戶,鎖定腳本將以任何人都可以使用輸出的方式顯示。但對於了解 Segwit 的客戶,他們會意識到這是一個以 0 作為見證版本的 Segwit 交易。

您可以創建 P2WPKH 的付費腳本雜湊。我的意思是您可以將見證人嵌入為腳本並生成地址。你需要做的是取(0x001443aac20a116e09ea4f7914be1c55e4c17aa600b7)的hash160。第一個字節 00 是見證版本,第二個字節 (14) 表示要推送到堆棧的字節(20 字節),其餘的是您的見證。然後你可以使用'0x05’前綴對其進行base58check編碼

預計未來大多數客戶將升級到隔離見證。當時建議要鎖定的地址是腳本的base32encode(0 43aac20a116e09ea4f7914be1c55e4c17aa600b7)。主網的地址將以 bc 開頭,以 1 分隔,然後是包含校驗和的編碼版本。該地址稱為 Bech-32 地址。

這就是地址的外觀。有關詳細資訊,請參閱BIP-173

主網 P2WPKH:bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4

測試網 P2WPKH:tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx

主網 P2WSH:bc1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3qccfmv3

測試網 P2WSH:tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7

原生 segwit 輸出(P2WSH 和 P2WPKH)目前沒有地址類型,因此這些輸出沒有地址。

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