P2WPKH 地址格式

P2WPKH 的核心概念是將傳統 ScriptSig 中的解鎖資料移出至 Witness 區塊,使交易簽章與腳本驗證資料與交易本體分離,消除第三方交易延展性 malleability,並提升區塊空間使用效率。

P2WPKH 地址格式

 

P2WPKH,Pay-to-Witness-Public-Key-Hash,支付至見證公鑰雜湊,是 SegWit 隔離見證架構中的一種標準單簽輸出格式,屬於 v0 witness program 類型之一。以 bech32 編碼表示,地址以 bc1q 開頭。

P2WPKH 的核心概念是將傳統 ScriptSig 中的解鎖資料移出至 Witness 區塊,使交易簽章與腳本驗證資料與交易本體分離,消除第三方交易延展性 malleability,並提升區塊空間使用效率。


P2WPKH 基本概念

  • ScriptPubKey 交易輸出
    在比特幣系統中,每一筆 UTXO 都包含 ScriptPubKey。 在 P2WPKH 中,ScriptPubKey 不再包含複雜腳本結構,而是使用一個固定格式的 witness program,其中 OP_0 代表 SegWit v0,20-byte 則是公鑰雜湊值。

  OP_0 <20-byte PubKeyHash>

<br>
  • 基於 Witness 隔離見證
    P2WPKH 使用的是公鑰雜湊結構,而非完整公鑰。 當花費這筆 UTXO 時,交易的 ScriptSig 必須保持為空,而真正的簽名 Signature 與公鑰 Public Key 則被放置在交易末尾的 Witness 欄位中。 節點在驗證時,會將 Witness 中的公鑰進行雜湊計算,並與 ScriptPubKey 中的雜湊值進行比對。

P2WPKH 運作方式

  • 建立公私鑰對 使用者生成 ECDSA 公私鑰對。私鑰用於簽章,公鑰用於驗證。
<br>
  • 進行 Hash160 雜湊計算 將生成的公鑰,依序放入 SHA-256 以及 RIPEMD-160 的雜湊函數中進行計算,此方式稱之為 Hash160,可得到一 20 位元組的 PubKeyHash,用作 witness program 的核心資料。

    RIPEMD-160(SHA-256(PubKey))  = PubKeyHash

<br>
  • 建立 ScriptPubKey
    將版本號 OP_0 與 witness program 組合成鎖定條件 ScriptPubKey,此結構表示該 UTXO 只能由對應公鑰簽章者花費。

    OP_0 <20-byte PubKeyHash>

    = ScriptPubKey

<br>
  • 計算 Bech32 地址編碼
    將 HRP、witness version 與 witness program 以 Bech32 編碼,轉換為 P2WPKH 可讀地址,以 bc1q 為開頭,總長度為 42 位元。
<br>
  • Witness 解鎖資料
    當花費該輸出時,不再使用 ScriptSig,而是在 witness 區域提供 Signature 簽章,與 Public Key 公鑰。節點會先將 Witness 中提供的 Public Key 計算 Hash160,確認結果與 ScriptPubKey 中的 PubKeyHash 相同,再使用該公鑰驗證 Signature 是否有效。

P2WPKH 應用

  • 個人錢包與日常轉帳
    P2WPKH 是目前比特幣網路中最普及的個人錢包地址格式。由於其手續費結構計算採用了權重 Weight 概念,使見證資料的費率僅為傳統資料的 25%,能顯著降低用戶發送交易的成本。
<br>
  • 閃電網路
    SegWit 所提供的 witness 架構解決了第三方交易延展性問題,而 P2WPKH 則是最常見的 SegWit v0 輸出格式之一。
<br>
  • 硬體錢包最佳化
    由於 P2WPKH 格式固定且結構簡單,硬體錢包在解析與簽署此類交易時,所需的運算資源與記憶體更低。

P2WPKH 相關 BIP

  • BIP 141:Segregated Witness (Consensus layer)

  • BIP 143:Transaction Signature Verification for Version 0 Witness Program

  • BIP 173:Base32 address format for native v0 witness outputs

2026/9/19 2:9 PM


更多文章