跳到主要内容

P2PKH(支付到公钥哈希)脚本

介绍P2PKH输出。

什么是P2PKH输出?

P2PKH(Pay-to-PubKeyHash,即“支付到公钥哈希”)是比特币网络中最常见的一种交易输出类型。它比早期的P2PK(Pay-to-PubKey)输出提供了更好的隐私和安全性。P2PKH输出允许比特币支付给一个公钥哈希,而不是直接支付给公钥,从而在一定程度上保护了接收方的隐私。

P2PKH输出的结构

P2PKH输出的脚本被称为锁定脚本(scriptPubKey),它的典型结构如下:

OP_DUP OP_HASH160 <公钥哈希> OP_EQUALVERIFY OP_CHECKSIG

为了理解这个脚本,让我们拆解它的各个部分:

  1. OP_DUP:复制栈顶元素。
  2. OP_HASH160:对栈顶元素进行RIPEMD-160哈希运算(之前是SHA-256哈希)。
  3. <公钥哈希>:接收方的公钥哈希。
  4. OP_EQUALVERIFY:验证栈顶的两个元素是否相等,如果不相等,则中止并返回错误。
  5. OP_CHECKSIG:检查签名是否有效。

在P2PKH交易中,发送方的解锁脚本(scriptSig)需要提供:

  1. 签名:证明发送方对这笔交易的授权。
  2. 公钥:与锁定脚本中的公钥哈希匹配。

P2PKH输出的特点

  1. 增强的隐私性:P2PKH输出只包含公钥的哈希值,而不是直接包含公钥。这使得追踪接收方的公钥变得更加困难,从而增强了隐私性。
  2. 改进的安全性:由于直接包含公钥的交易容易受到潜在的量子计算攻击,P2PKH输出通过使用公钥哈希提供了一层额外的安全性。量子计算机要破解哈希值比破解公钥更加困难。
  3. 广泛使用:P2PKH输出是比特币交易中最常见的输出类型,广泛应用于各种交易场景中。
  4. 支持轻量级客户端:P2PKH输出使得轻量级客户端(如SPV钱包)能够更高效地验证交易,因为这些客户端只需要检查公钥哈希,而不是处理完整的公钥。

P2PKH输出的使用场景

P2PKH输出在比特币网络中被广泛使用,几乎涵盖了所有普通用户的日常交易。以下是一些典型的使用场景:

  1. 个人钱包交易:大多数比特币钱包默认使用P2PKH输出来接收比特币。
  2. 商家支付:许多在线商家和服务提供商使用P2PKH地址来接收客户的比特币支付。
  3. 交易所转账:交易所用户进行比特币充值和提现时,通常使用P2PKH输出。

P2PKH交易的示例

以下是一个P2PKH交易的简化示例:

  • 锁定脚本(scriptPubKey):

    OP_DUP OP_HASH160 <公钥哈希> OP_EQUALVERIFY OP_CHECKSIG
  • 解锁脚本(scriptSig):

    <签名> <公钥>

当接收方要花费这笔比特币时,他们需要提供解锁脚本,其中包含一个有效的签名和与公钥哈希匹配的公钥。验证过程如下:

  1. OP_DUP:复制解锁脚本中的公钥。
  2. OP_HASH160:对公钥进行哈希运算,生成公钥哈希。
  3. OP_EQUALVERIFY:验证计算得到的公钥哈希是否与锁定脚本中的公钥哈希匹配。
  4. OP_CHECKSIG:使用提供的公钥验证签名的有效性。

结论

P2PKH输出作为比特币网络中最常见的交易输出类型,提供了增强的隐私和安全性。它的结构使得比特币支付更加安全和隐私,适用于各种交易场景。从个人钱包到商家支付,P2PKH输出在比特币生态系统中扮演了重要角色,推动了比特币的广泛应用和普及。理解P2PKH输出对于深入了解比特币交易机制和提升比特币使用安全性具有重要意义。