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

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 公私鑰對。私鑰用於簽章,公鑰用於驗證。
-
進行 Hash160 雜湊計算 將生成的公鑰,依序放入 SHA-256 以及 RIPEMD-160 的雜湊函數中進行計算,此方式稱之為 Hash160,可得到一 20 位元組的 PubKeyHash,用作 witness program 的核心資料。
RIPEMD-160(SHA-256(PubKey)) = PubKeyHash
-
建立 ScriptPubKey
將版本號 OP_0 與 witness program 組合成鎖定條件 ScriptPubKey,此結構表示該 UTXO 只能由對應公鑰簽章者花費。OP_0 <20-byte PubKeyHash>
= ScriptPubKey
- 計算 Bech32 地址編碼
將 HRP、witness version 與 witness program 以 Bech32 編碼,轉換為 P2WPKH 可讀地址,以 bc1q 為開頭,總長度為 42 位元。
- Witness 解鎖資料
當花費該輸出時,不再使用 ScriptSig,而是在 witness 區域提供 Signature 簽章,與 Public Key 公鑰。節點會先將 Witness 中提供的 Public Key 計算 Hash160,確認結果與 ScriptPubKey 中的 PubKeyHash 相同,再使用該公鑰驗證 Signature 是否有效。
P2WPKH 應用
- 個人錢包與日常轉帳
P2WPKH 是目前比特幣網路中最普及的個人錢包地址格式。由於其手續費結構計算採用了權重 Weight 概念,使見證資料的費率僅為傳統資料的 25%,能顯著降低用戶發送交易的成本。
- 閃電網路
SegWit 所提供的 witness 架構解決了第三方交易延展性問題,而 P2WPKH 則是最常見的 SegWit v0 輸出格式之一。
- 硬體錢包最佳化
由於 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

更多文章