1. 主页 > 新闻

比特币地址类型比较:P2PKH、P2SH、P2WPKH等

如果您已经使用比特币一段时间了,您可能已经注意到一些比特币地址看起来与其他地址完全不同。您可能还看到过有关以“P2”开头的几个首字母缩略词的讨论,例如 P2PKH 或 P2WSH。

如果您不熟悉这些缩写词的含义,在这里我们将浏览整个历史中用于接收比特币的所有标准化链上方法,并解释使每种方法独一无二的一些本质区别。

P2PK

Pay-to-Public-Key(P2PK)是接收比特币的原始方法,它不涉及地址。相反,顾名思义,比特币是直接支付给暴露的公钥的。有史以来第一笔人与人之间的比特币交易使用了 P2PK,当时中本聪在区块 170 中向 Hal Finney 发送了比特币。

P2PK 已不再使用,因为与后续方法相比,它是一种更昂贵、更不私密且更不安全的接收比特币的方式。

P2PKH

支付到公钥哈希(P2PKH)在比特币诞生之初就可以使用,并且在创世块诞生后不到两周的时间里首次出现在区块链上。 P2PKH 对 P2PK 进行了多项改进,例如使用地址。正如我们之前的文章中所讨论的,地址包含一个校验和,有助于防止拼写错误和丢失比特币。

P2PKH 地址的长度通常为 34 或 33 个字符(但理论上可以短至 26 个字符),并且它们以Base58 格式编码。它们以前缀1开头,目前负责接收和保护 43% 的已开采比特币供应,比任何其他地址类型都多。

创建 P2PKH 地址涉及将单个公钥放入哈希函数 SHA-256 和 RIPEMD-160。这减少了数据量,进而有助于为用户节省区块空间和交易费用。除了已经被认为牢不可破的 secp256k1 椭圆曲线之外,它还引入了对私钥逆向工程的进一步阻力。

P2MS

Pay-to-Multisig (P2MS) 是一种微不足道的交易类型,仅具有短暂的相关性,并且从未负责在所有网络参与者中一次持有超过 100 个比特币。尽管如此,P2MS 仍然是比特币历史的一部分。

根据 BIP 11 的规定,P2MS 于 2012 年初作为标准脚本引入。但是,这种交易类型遇到了与 P2PK 相同的问题,因为它包含公开的公钥并且不使用任何地址格式。它还将多重签名法定人数中的公钥数量限制为三个。几个月内,P2MS 将被另一种将比特币接收到多重签名安排(称为 P2SH)的方法所取代,我们将在接下来介绍。

P2SH

Pay-to-Script-Hash (P2SH) 是根据 BIP 16 于 2012 年 4 月 1 日作为软分叉引入比特币的。像大多数分叉一样,它背后的故事很有趣。 P2SH 与 P2PKH 有很多共同点。主要区别在于,地址是通过对兑换脚本进行哈希处理而不是对单个公钥进行哈希处理来创建的。 

兑换脚本可以被视为编码指令,指定接收到 P2SH 地址的比特币将来如何使用。可能有多种可能性,包括多个不同的公钥。接收方(而不是发送方)确定脚本详细信息,并且在比特币从地址中支​​出之前,支出指令不会公开。

虽然高级用户可以构建复杂的脚本,但 P2SH 最常见的用途是创建嵌套 SegWit 地址(如下所述)和多重签名钱包。例如,脚本可以包含三个公钥,并指定任意两个相应私钥的签名可以花费比特币。这将创建一个 2-of-3 多重签名地址。

P2SH 地址的长度正好是 34 个字符,按照 BIP 13 的规定,它们以前缀 3 开头。在 4 月 1 日软分叉之前,少数交易尝试了这个替代前缀,第一个交易是在 Block 中找到的。

P2WPKH

Pay-to-Witness-Public-Key-Hash (P2WPKH) 是 2017 年 8 月在 SegWit 软分叉上引入比特币的两种地址类型中的第一种。这个极其重要且特别有争议的软分叉背后的故事记录在一本名为区块大小战争,作者:Jonathan Bier。

P2WPKH 是 P2PKH 的 SegWit 变体,从根本上来说,这意味着选择此地址类型而不是旧的 P2PKH 地址将帮助您在转移比特币时节省交易费用。

SegWit 地址看起来与旧的地址类型有很大不同,因为根据 BIP 173,它们使用 Bech32 编码而不是 Base58。最值得注意的是,Bech32 中没有大写字母。 P2WPKH 地址可以通过 bc1q 前缀和恰好 42 个字符长度来标识。

P2WSH

付费见证脚本哈希 (P2WSH) 是 P2SH 的 SegWit 变体。与 P2SH 相比,使用 P2WSH 的主要优点是它可以帮助降低交易费用,并且使用脚本哈希而不是公钥哈希的主要原因是为了适应多重签名安排。

与 P2WPKH 一样,P2WSH 地址以 bc1q 前缀开头。然而,它的字符长度更长,正好是 62。与迄今为止介绍的地址类型不同,P2WSH 地址是单独使用 SHA-256 哈希函数创建的,不包括 RIPEMD-160,从而导致字符长度增加。这是谨慎实施的,增加了针对相当微妙且极不可能的多重签名攻击向量的额外保护。

嵌套隔离见证(P2SH-P2WPKH 和 P2SH-P2WSH)

从技术上讲,嵌套隔离见证(也称为包裹隔离见证)与我们上面介绍的地址类型没有什么不同。尽管如此,它仍然是一种使用先前讨论的地址类型的独特方式,暂时对比特币社区有用。

当 SegWit 软分叉发生时,并非所有比特币节点、软件和服务都会立即升级以支持新的本机 SegWit 地址类型 P2WPKH 和 P2WSH。只有升级的实体才能发送到这些新地址。这意味着那些想要从任何人(包括那些没有升级的人)接收比特币的人还不能使用原生 SegWit 钱包。然而,由于隔离见证提供更便宜的交易费用,大多数人都热衷于开始使用它。

解决这个困境的巧妙方法是利用 P2SH 交易类型。尚未实施 SegWit 的实体仍然可以将比特币发送到 P2SH 地址——如上所述,该地址是使用赎回脚本构建的,指定了稍后如何使用比特币的说明。事实证明,这些指令可以纳入新的 SegWit 支出模式,为用户提供降低费用的桥梁。因此,使用此技巧的 P2SH 地址被称为嵌套 SegWit,它们在 SegWit 采用过程中发挥了重要作用。

从表面上看,嵌套 SegWit 地址与其他 P2SH 地址没有区别,因此这种安排中持有的比特币的供应量是不可知的。此外,由于所有现代比特币工具现在都可以直接发送到本机 SegWit 地址,因此不再有任何充分的理由使用嵌套 SegWit。

P2TR

Pay-to-Taproot (P2TR) 是最新的地址类型,由 Taproot 软分叉于 2021 年 11 月提供。在撰写本文时,P2TR 的采用率仍然很低,许多比特币软件和服务仍在进行集成。

P2WPKH 和 P2WSH 被称为 SegWit V0,而 P2TR 被视为 SegWit V1。值得注意的是,P2TR 使用称为 Schnorr 的数字签名算法,该算法与早期比特币交易类型中使用的 ECDSA 格式不同。 Schnorr 签名有几个优点,包括额外的交易费用降低和增强的隐私性。

关于隐私,Schnorr 实现的密钥和签名聚合使得多重签名地址与单签名无法区分,并且 P2TR 地址的完整支出条件不一定会公开披露。地址的创建者甚至可以包含多个自定义的兑换脚本以供选择,以便稍后使用比特币。

P2TR 地址的长度为 62 个字符,它们使用 Bech32m 编码,这是 Bech32 的稍微修改版本,如 BIP 350 中所述。P2TR 地址可以通过其唯一的 bc1p 前缀来识别。

本文由币特网发布,不代表币特网立场,转载联系作者并注明出处:https://www.qhbxg.cn/news/vlrorm19.html