P2PKH:BSV 中最常见的支付脚本模板详解

P2PKH(Pay to Public Key Hash)是 Bitcoin/BSV 中最基础的普通支付脚本。本文拆解其核心逻辑、工作流程、与地址的关系、解锁条件,并解释为什么 BSV 开发者需要理解它。

林知衡

林知衡

technical_editor

发布于 2026年6月1日2 分钟阅读

一句话理解

P2PKH 是 "Pay to Public Key Hash" 的缩写,意思是“支付给公钥哈希”。它是 Bitcoin/BSV 中最常见的普通支付脚本模板之一。

它的核心逻辑是:output 锁定到某个公钥哈希,未来花费时必须提供匹配的公钥和有效的数字签名。

P2PKH 解决什么问题?

普通付款需要回答两个问题:

  • 收款时,如何指定未来谁能花这笔钱?
  • 花费时,如何证明自己就是有权的人?

P2PKH 的答案是:

  • 收款时,locking script 记录公钥哈希。
  • 花费时,unlocking script 提供公钥和签名。
  • 节点检查公钥哈希是否匹配,并验证签名。

这样一来,收款方在收款时不必暴露完整公钥,只需要提供地址即可。

P2PKH 的名字拆解

P2PKH 可以拆成:

  • Pay To Public Key Hash
  • 支付 → 到 → 公钥哈希

注意:这里不是直接支付给公钥,而是支付给公钥的哈希

常见流程是:

私钥 → 公钥 → 公钥哈希 → 地址 → P2PKH locking script

地址是用户看到的收款标识,而 locking script 才是链上真正的锁定条件。

P2PKH 的 locking script 直觉

P2PKH locking script 大致表达:

  1. 给我一个公钥。
  2. 我检查这个公钥的哈希是否等于锁定的哈希。
  3. 再给我一个签名。
  4. 我用这个公钥验证签名。
  5. 都通过,才允许花费。

这就是普通地址支付背后的真实逻辑。

P2PKH 的 unlocking script 直觉

花费 P2PKH output 时,input 通常提供:

  • 签名
  • 公钥

这两项数据会被放入脚本执行栈,与 locking script 一起运行。如果公钥哈希匹配,并且签名验证通过,脚本结果为真。

为什么不直接锁定公钥?

早期 Bitcoin 也有 Pay to Public Key(直接支付给公钥)。P2PKH 选择锁定公钥哈希,有几个好处:

  • 地址更短,更适合用户使用。
  • 收款时不直接暴露完整公钥,提高隐私性。
  • 公钥只在花费时公开。
  • 地址可以包含校验和,降低手输错误风险。

对新手来说,先记住:地址背后通常是公钥哈希,而不是直接把公钥编码成地址

P2PKH 与 UTXO

P2PKH output 如果未被花费,就是一个 UTXO。它的含义是:

这里有一笔价值,未来谁能提供对应公钥和签名,谁就能花它。

钱包在花费它时,会创建 input,并放入签名和公钥。旧的 UTXO 被消耗,新的 outputs 被创建。

BSV 开发中为什么要理解 P2PKH?

即使你以后主要使用 SDK 和钱包接口,P2PKH 仍然值得理解,因为它把多个核心概念连在一起:

  • 私钥
  • 公钥
  • 地址
  • 公钥哈希
  • locking script
  • unlocking script
  • 签名验证
  • UTXO 花费

理解 P2PKH 后,再学习 OP_RETURN、多签、自定义脚本和 token 状态输出,会更加清楚。

P2PKH 不是唯一脚本

P2PKH 是常见模板,但不是唯一方式。BSV Script 可以表达更多条件,例如:

  • 多签
  • 哈希锁
  • 自定义业务脚本
  • 数据输出
  • token 协议输出

但 P2PKH 是最适合新手理解普通支付的模板。

新手常见误解

  • P2PKH 不是账户模型。
  • 地址通常不是公钥本身,而是公钥哈希的编码。
  • P2PKH output 未来要靠签名和公钥解锁。
  • P2PKH 是普通支付模板,不是所有 BSV 交易的唯一格式。
  • 公钥哈希匹配和签名验证都必须通过。
  • 收款时锁定条件在 output,花费时解锁材料在 input。

参考来源

推荐文章