crypto-address-types
TARGET_LOCALE: zh-Hans
title: "加密货币地址类型详解:Legacy、SegWit、Taproot" description: "加密货币地址类型完整指南,涵盖 Bitcoin Legacy(P2PKH)、SegWit(P2SH、Bech32)和 Taproot(Bech32m)。了解差异、兼容性以及应如何选择。" keywords: [Bitcoin 地址, SegWit, Taproot, Legacy, Bech32, P2PKH, P2WPKH, 加密货币地址类型] sidebar_position: 8
加密货币地址类型详解:Legacy、SegWit、Taproot
如果你使用过一段时间的 Bitcoin,你一定见过以“1”开头的地址、以“3”开头的地址,以及以“bc1q”或“bc1p”开头的地址。这些并非外观差异,而是锁定与解锁资金的底层机制存在根本不同,并会显著影响交易手续费、隐私与功能性。
本指南将解释每一种主要的 Bitcoin 地址类型、它们在技术层面的工作方式、优缺点,以及如何根据你的需求选择合适的类型。我们也会介绍 Ethereum 和其他主流区块链的地址格式。
Bitcoin 地址类型
Legacy 地址(P2PKH)— 以“1”开头
全称: Pay-to-Public-Key-Hash
示例: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
派生路径: m/44'/0'/0' (BIP-44)
Legacy 地址是最初的 Bitcoin 地址格式,在早期 Bitcoin 协议中定义。地址本质是公钥哈希的 Base58Check 编码:
Address = Base58Check(0x00 || RIPEMD160(SHA256(public_key)))
在主网上,0x00 版本字节会生成以“1”开头的地址。
花费方式(脚本):
ScriptPubKey: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
ScriptSig: <signature> <publicKey>
要花费 Legacy 地址中的资金,发送方需要提供其公钥和有效签名。网络会验证该公钥哈希是否对应地址,并验证签名对该公钥是否有效。
优点:
- 兼容性最高,自 2009 年起几乎所有 Bitcoin 钱包、交易所和服务都支持。
- 简单、成熟、易理解。
缺点:
- 交易体积最大(手续费最高)。
- 无 SegWit 优势(没有 witness 折扣)。
- Base58Check 区分大小写,手动抄写更容易出错。
- 除校验和外没有更强错误检测(能捕获随机错误,但无法覆盖所有替换错误)。
P2SH 地址 — 以“3”开头
全称: Pay-to-Script-Hash
示例: 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
派生路径: m/49'/0'/0'(BIP-49,用于 SegWit 封装)
P2SH 在 BIP-16(2012)中引入,用于支持更复杂的花费条件。资金不再支付给公钥哈希,而是支付给脚本哈希。该脚本可以实现任意花费条件:多签、时间锁、哈希锁,或如今最常见的 SegWit 输出封装。
P2SH-P2WPKH(兼容 SegWit):
这是目前 P2SH 地址最常见的用途。它将 SegWit(P2WPKH)输出封装在 P2SH 脚本中,从而在保留对仅支持 P2SH 旧软件兼容性的同时,获得 SegWit 优势。
RedeemScript: 0x0014 <20-byte-pubkey-hash> (a P2WPKH script)
ScriptPubKey: OP_HASH160 <hash-of-redeemScript> OP_EQUAL
优点:
- 在向后兼容的同时获得 SegWit 优势(手续费更低、修复可塑性)。
- 几乎所有现代钱包和交易所都支持。
- 可实现复杂脚本(多签、时间锁)。
缺点:
- 手续费高于原生 SegWit(封装脚本带来额外开销)。
- 含义不明确:一个“3”地址可能是普通多签、封装 SegWit 或其他任意 P2SH 脚本。仅凭地址无法判断。
原生 SegWit 地址(P2WPKH)— 以“bc1q”开头
全称: Pay-to-Witness-Public-Key-Hash(Bech32 编码)
示例: bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
派生路径: m/84'/0'/0'(BIP-84)
原生 SegWit 地址在 BIP-141/BIP-143(2017 年 8 月激活)中引入,并使用 BIP-173 定义的 Bech32 编码。它不使用 Base58Check,而使用一种新编码,具备以下特点:
- 仅小写 — 消除大小写敏感问题。
- BCH 错误校正 — 可检测最多 4 个字符错误,并能自动纠正部分错误。
- 人类可读前缀 — Bitcoin 主网为
bc,测试网为tb。
花费方式:
ScriptPubKey: 0 <20-byte-pubkey-hash>
Witness: <signature> <publicKey>
签名与公钥被放入交易的 “witness” 区域,该区域在交易权重(手续费)上可享受 75% 折扣。
优点:
- 在 Taproot 之前的地址类型中手续费最低(witness 折扣)。
- 修复可塑性 — SegWit 修复交易可塑性,为 Lightning Network 等二层协议提供基础。
- 更强错误检测 — Bech32 比 Base58Check 能捕获更多错误。
- 脚本更简洁 — 无 P2SH 封装开销。
缺点:
- 部分旧钱包和交易所无法向 bc1q 地址发送(截至 2025 年已越来越少见)。
- 地址字符串略长于 Legacy 或 P2SH。
Taproot 地址(P2TR)— 以“bc1p”开头
全称: Pay-to-Taproot(Bech32m 编码)
示例: bc1p5d7rjq7g6rdk2yhzks9smlaqtedr4dekq08ge8ztwac72sfr9rusxg3297
派生路径: m/86'/0'/0'(BIP-86)
Taproot 于 2021 年 11 月在 Bitcoin 上激活(BIP-340、BIP-341、BIP-342),是自 SegWit 以来 Bitcoin 脚本能力最重要的一次升级。
Taproot 使用 Schnorr 签名替代 ECDSA,并引入 key-spend/script-spend 模型:
- Key path spend — 最常见场景:单个签名即可授权花费,在外观上与其他 Taproot 交易一致。
- Script path spend — 复杂条件(多签、时间锁、哈希锁)可通过 Merkle 树承诺,仅在需要时公开。
花费方式:
ScriptPubKey: 1 <32-byte-tweaked-public-key>
Witness: <signature> (key path, most common)
— or —
Witness: <script> <control-block> <arguments> (script path)
优点:
- 隐私性 — 无论底层花费条件如何,链上 Taproot 交易看起来都一样。使用 key path 时,多签交易与单签交易不可区分。
- 效率 — Schnorr 签名比 ECDSA 更小。密钥聚合(MuSig2)可让多签仅产出一个合并签名。
- 脚本灵活性 — MAST(Merkelized Alternative Script Trees)可在不暴露未使用分支的情况下实现复杂花费条件。
- 低手续费 — key path 花费时可与原生 SegWit 持平或更低。
缺点:
- 仍在普及中,部分钱包和交易所尚未完全支持向 Taproot 地址收发。
- 实现复杂度更高,增加钱包 Bug 风险(尽管已有成熟实现)。
- Bech32m 编码(不同于 Bech32)要求钱包同时支持两者。
地址类型对比
| Feature | Legacy (1...) | P2SH (3...) | Native SegWit (bc1q...) | Taproot (bc1p...) |
|---|---|---|---|---|
| BIP | Original | BIP-16 | BIP-141/BIP-173 | BIP-341/BIP-350 |
| Derivation | m/44'/0'/0' | m/49'/0'/0' | m/84'/0'/0' | m/86'/0'/0' |
| Encoding | Base58Check | Base58Check | Bech32 | Bech32m |
| Signature | ECDSA | ECDSA | ECDSA | Schnorr |
| Fee cost | Highest | Medium | Low | Lowest (key path) |
| Privacy | Low | Medium | Medium | High |
| Error detection | Basic checksum | Basic checksum | BCH codes | BCH codes |
| Compatibility | Universal | Near-universal | Most wallets | Growing |
应该使用哪种 Bitcoin 地址类型?
对 2025 年及以后大多数用户: 默认使用原生 SegWit(bc1q)。它在低手续费、强兼容性和成熟支持之间平衡最佳。
追求最高隐私与最低手续费: 如果你的钱包支持且你使用的服务支持向 Taproot 地址发送,则使用 Taproot(bc1p)。
需要兼容旧服务: 若某些服务无法发送到 bc1q 或 bc1p,可使用 P2SH(3...)接收资金。
新钱包应避免 Legacy(1...),除非你有明确的兼容性需求。
Ethereum 地址格式
Ethereum 使用单一地址格式:
0x742d35Cc6634C0532925a3b844Bc9e7595f2bD38
- 20 字节(40 个十六进制字符),前缀为
0x。 - 由公钥的 Keccak-256 哈希后 20 字节派生而来。
- EIP-55 大小写混合校验和 — 大小写字母本身参与校验。若更改任意字母大小写,校验会失败。
- 所有 EVM 兼容链都使用同一地址格式(Ethereum、Polygon、Arbitrum、Optimism、BSC)。
重要: 在错误网络上向同一地址发送代币(例如 ETH 主网 vs Polygon)通常不会丢币(该地址在所有 EVM 链上都存在),但你可能需要切换网络才能访问资产。
ENS(Ethereum Name Service)
ENS 为 Ethereum 地址提供可读名称:
vitalik.eth → 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
发送资金前务必验证解析后的地址。ENS 名称可被转移,因此名称背后的地址可能变化。
其他区块链地址格式
Bitcoin Cash(BCH)
Bitcoin Cash 使用 CashAddr 格式,以区别于 Bitcoin 地址:
bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a
bitcoincash: 前缀可防止误发到 Bitcoin 地址。
Litecoin(LTC)
Litecoin 与 Bitcoin 使用相似地址类型:
- Legacy:以
L或M开头 - P2SH:以
M或3开头 - 原生 SegWit:以
ltc1q开头
Solana(SOL)
Solana 使用 Base58 编码的 Ed25519 公钥:
7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV
32 字节,Base58 编码,通常为 32-44 个字符。
Cardano(ADA)
Cardano 使用 Bech32 编码地址,前缀为 addr:
addr1qx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer3jcu5d8ps7zex2k2xt3uqxgjqnnj83ws8lhrn648jjxtwq2ytjqp
Cardano 地址通常明显长于 Bitcoin 地址,因为它同时编码了支付凭证与质押凭证。
TRON(TRX)
TRON 使用 Base58Check 编码地址,并以 T 开头:
TJYeasTPa6gpB9Ut5HALR2twMHU3gYpML8
Cosmos(ATOM)
Cosmos 使用 Bech32 编码,并带有链特定前缀:
cosmos1qypqxpq9qcrsszg2pvxq6rs0zqg3yyc5lzv7xu
每条 Cosmos SDK 链使用不同前缀(例如 Osmosis 使用 osmo,Juno 使用 juno)。
使用 SafeSeed Address Generator 可从同一个助记词派生多个区块链与地址类型。你可以看到同一助记词如何生成 Bitcoin Legacy、SegWit、Taproot、Ethereum 等不同地址。所有处理都在你的浏览器本地完成。
地址校验与安全
校验和验证
发送资金前务必验证地址:
- Bitcoin Legacy/P2SH: Base58Check 含 4 字节校验和。多数钱包会自动验证。
- Bitcoin SegWit/Taproot: Bech32/Bech32m 含 6 字符校验和,并具备强错误检测能力(BCH codes)。
- Ethereum: EIP-55 大小写混合校验和。若钱包未实现 EIP-55,它会接受任意大小写,这是一个警示信号。
地址复用
为保护隐私,避免复用 Bitcoin 地址。每笔交易都应使用新地址。HD Wallet(BIP-44)会自动生成新地址。
Ethereum 地址通常会被复用(账户模型),但使用多个账户可提升隐私性。
剪贴板劫持
恶意软件可能监控你的剪贴板,并把加密货币地址替换为攻击者地址。粘贴后务必至少目视核对地址前后各 6 位,最好核对完整地址。部分钱包会显示地址的可视哈希(identicon)以便更易验证。
二维码验证
通过二维码获取地址时,请确认解码后的地址与预期一致。恶意二维码可能编码攻击者控制的地址。
在不同地址类型之间转换
你不能在地址类型间“转换”地址(例如 Legacy 转 SegWit),因为每种类型使用不同派生路径并生成不同密钥集。不过你可以:
- 从同一助记词生成多种地址类型 — 你的助记词会通过不同的派生路径同时派生各类地址密钥。
- 将资金从一种地址类型发送到另一种 — 直接从你的 Legacy 地址发送交易到你的 SegWit 地址即可,这是普通的 Bitcoin 交易。
由于使用的是不同私钥,发送到 SegWit 地址的资金无法通过 Legacy 派生路径访问。
常见问题(FAQ)
Legacy 地址和 SegWit 地址有什么区别?
Legacy 地址(以“1”开头)使用最初的 Bitcoin 交易格式。SegWit 地址(以“bc1q”开头)使用隔离见证(Segregated Witness),将签名数据与交易数据分离,从而减小交易体积、降低手续费并修复交易可塑性问题。所有新钱包都建议使用 SegWit。
我可以把 Bitcoin 从 Legacy 地址发送到 SegWit 地址吗?
可以。所有 Bitcoin 地址类型在网络层是互通的。你可以从任意地址类型发送到任意地址类型。唯一兼容性问题在于钱包软件本身,一些旧钱包无法创建发送到 bc1q 或 bc1p 地址的交易。
为什么我的钱包每次都显示不同地址?
这是使用 BIP-44 的 HD Wallet 的正常行为。每笔交易都会生成新地址以提升隐私。所有地址都源自同一助记词,并且可恢复。已使用过的地址仍然有效,仍可接收资金。
什么是 Bech32 编码?
Bech32 是 BIP-173 规定的地址编码格式,用于原生 SegWit(bc1q)地址。它使用小写字母数字字符(不含 1、b、i、o),带有 BCH 纠错校验和,并包含可读前缀(Bitcoin 主网为 bc)。Bech32m(BIP-350)是用于 Taproot(bc1p)地址的改进版本。
哪种 Bitcoin 地址类型手续费最低?
Taproot(bc1p)地址在 key-path 花费中通常手续费最低,得益于 Schnorr 签名效率。原生 SegWit(bc1q)紧随其后。P2SH 封装 SegWit(3...)更贵,而 Legacy(1...)因交易体积更大而最贵。
我可以把同一个地址同时用于 Bitcoin 和 Bitcoin Cash 吗?
不可以。尽管 Legacy Bitcoin 和 Bitcoin Cash 地址可能看起来相似(都以“1”开头),但将 Bitcoin 发到 Bitcoin Cash 地址(或反之)可能导致资金发到错误链上。Bitcoin Cash 使用 CashAddr 格式(以“bitcoincash:”开头)来防止此类混淆。
如果我在错误网络上把加密货币发到错误地址类型会怎样?
对于 EVM 链(Ethereum、Polygon、BSC 等),同一地址在所有链上都存在,因此资金不会丢失,你只需访问正确网络。对于地址格式不同的非 EVM 链,钱包通常会阻止你发送到无效地址。若资金以某种方式被发送到不存在的地址格式,可能会永久丢失。
所有 Ethereum 地址格式都一样吗?
是的。Ethereum 对所有用途都使用同一种地址格式(0x + 40 个十六进制字符):接收 ETH、ERC-20 代币、NFT,以及与智能合约交互。该地址在所有 EVM 兼容链上都有效。