前言

由于工作中需要对接比特币网络,这里记录下比特币钱包各个地址类型的区别

正文

使用 bitcoin-cli 生成不同类型的比特币地址时,有三种主要的地址类型可供选择,每种类型都对应不同的技术标准和特性: 1. Legacy 地址(P2PKH 地址) - 命令:bitcoin-cli getnewaddress “” “legacy” - 开头字符:1 - 格式:Pay-to-PubkeyHash (P2PKH) - 示例地址:1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

1
2
3
4
- **特点**:
  - 这是比特币最早期使用的地址格式(也称为传统地址)。
  - `P2PKH` 地址意味着该地址中的比特币是“支付给公钥哈希“的,交易时需要提供相应的公钥和签名来解锁资金。
- **缺点**:相对较高的交易费用,因为占用的区块空间较大。
  1. P2SH 嵌套 SegWit 地址

    • 命令:bitcoin-cli getnewaddress “” “p2sh-segwit”
    • 开头字符:3
    • 格式:Pay-to-Script-Hash (P2SH)Pay-to-Witness-PubkeyHash (P2WPKH-in-P2SH)
    • 示例地址:3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy

    • 特点

      • P2SH 地址最初用于更复杂的支付场景,例如多重签名(Multisig),后来发展为可以嵌套 SegWit 交易。
      • 支持旧钱包和节点(对不完全支持 SegWit 的钱包或服务更友好)。
    • 优点:交易费用比传统地址低,因为它利用了 SegWit 的一些特性来节省空间。

    • 缺点:虽然比 P2PKH 更高效,但仍没有原生 SegWit 那么节省区块空间。

  2. 原生 SegWit 地址(Bech32 地址)

    • 命令:bitcoin-cli getnewaddress “” “bech32"
    • 开头字符:bc1
    • 格式:Pay-to-Witness-PubkeyHash (P2WPKH)Pay-to-Witness-Script-Hash (P2WSH)
    • 示例地址:bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwfvenn

    • 特点

      • 这是比特币的原生 SegWit 地址格式,采用了新的 Bech32 编码方式。
      • 支持 SegWit 协议的所有优化特性,允许更小的交易尺寸,从而显著降低交易费用。
    • 优点

      • 最大化地节省交易费用和区块空间。
      • 更容易检测错误,因为 Bech32 编码具有更好的校验特性。
    • 缺点:不是所有的交易所或服务都支持 Bech32 地址(尽管支持率在不断上升)。

各个地址类型的区别

地址类型 开头字符 技术标准 优点 缺点
P2PKH 1 Legacy 兼容所有比特币服务和钱包 占用区块空间大,交易费用较高
P2SH (SegWit) 3 P2SH & SegWit (嵌套) 费用较低,兼容部分不支持 SegWit 的服务 仍然占用较多空间,比原生 SegWit 效率低
Bech32 bc1 原生 SegWit 最高效,最小化交易费用,节省区块空间 部分旧钱包或服务可能不支持,但支持率在逐渐提高

什么时候使用哪种地址?

  • 兼容性:如果你需要最大兼容性(例如发送和接收比特币时需要与旧版钱包兼容),可以使用 P2PKHP2SH 地址。
  • 费用:如果你想降低交易费用并且不在意兼容性问题,bech32 原生 SegWit 地址是最好的选择,因为它能够最大程度地减少交易所需的区块空间。
  • 混合兼容性和费用:如果需要与大多数服务兼容但又希望减少交易费用,使用 P2SH 嵌套 SegWit 是一个平衡的选择。