P2PKH 與 P2SH 腳本類型

從 Pay to Public Key Hash 到 Pay to Script Hash 的演進。

P2PKH 與 P2SH 腳本類型

比特幣的腳本類型經歷了從 P2PK 到 P2PKH 再到 P2SH 的演進過程。每種腳本類型都有其獨特的設計考量與安全特性。

P2PK:最早的腳本類型

Pay-to-Public-Key (P2PK) 是比特幣最早的支付方式,直接將比特幣發送到公鑰。

腳本結構

鎖定腳本:

<公鑰> OP_CHECKSIG

解鎖腳本:

<簽名>

運作原理

  1. 發送者需要知道接收者的公鑰
  2. 接收者花費時提供數位簽名
  3. 節點驗證簽名是否有效

優點與缺點

P2PKH:現代錢包的標準

Pay-to-Public-Key-Hash (P2PKH) 是目前最廣泛使用的地址類型,透過哈希保護公鑰。

地址格式

傳統 P2PKH 地址以 1 開頭,例如:1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2

腳本結構

鎖定腳本 (P2PKH):

OP_DUP OP_HASH160 <公鑰哈希> OP_EQUALVERIFY OP_CHECKSIG

解鎖腳本:

<簽名> <公鑰>

運作流程

┌─────────────┐    ┌──────────────┐    ┌─────────────┐
│  發送方     │───▶│  腳本執行   │───▶│  驗證結果  │
└─────────────┘    └──────────────┘    └─────────────┘
                         │
         ┌───────────────┼───────────────┐
         ▼               ▼               ▼
   OP_DUP          OP_HASH160      OP_EQUALVERIFY
   (複製)          (哈希公鑰)       (比較哈希)
         │               │               │
         ▼               ▼               ▼
   公鑰        公鑰哈希 (RIPEMD160)   匹配?

安全特性

  1. 公鑰保護:公鑰在花費前不會完全暴露
  2. 哈希安全:依賴 RIPEMD160 和 SHA-256 的安全性
  3. 橢圓曲線:基於 ECDSA 加密

P2SH:靈活的腳本類型

Pay-to-Script-Hash (P2SH) 允許發送到任意腳本的哈希,實現更複雜的功能。

地址格式

P2SH 地址以 3 開頭,例如:3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy

腳本結構

鎖定腳本 (P2SH):

OP_HASH160 <腳本哈希> OP_EQUAL

解鎖腳本:

<簽名1> <簽名2> ... <贖回腳本>

常見應用場景

多簽名腳本

OP_2 <公鑰A> <公鑰B> <公鑰C> OP_3 OP_CHECKMULTISIG

這實現了 2-of-3 多簽名,需要任意 2 個私鑰簽名才能花費。

時間鎖腳本

<時間> OP_CHECKLOCKTIMEVERIFY OP_DROP <公鑰> OP_CHECKSIG

資金只能在指定時間後才能被花費。

其他應用

腳本類型比較

特性P2PKP2PKHP2SH
地址長度N/A25 bytes25 bytes
地址開頭13
公鑰暴露花費時花費時
腳本靈活性
交易大小較大中等較大
支援多簽

選擇合適的腳本類型

推薦使用場景

P2PKH (傳統地址):

P2SH (腳本哈希):

P2WPKH/P2WSH (隔離見證):

總結

比特幣的腳本類型反映了其設計哲學:從簡單的 P2PK 到更安全、更靈活的 P2PKH 和 P2SH。每種类型都有其適用場景,了解這些基礎知識對於比特幣開發者和進階用戶至關重要。

隨著隔離見證 (SegWit) 的普及,更新的腳本類型如 P2WPKH 和 P2WSH 提供了更好的效率和安全特性,這將在後續章節中介紹。

延伸閱讀與來源

這篇文章對您有幫助嗎?

評論

發表評論

注意:由於這是靜態網站,您的評論將儲存在本地瀏覽器中,不會公開顯示。

目前尚無評論,成為第一個發表評論的人吧!