比特币地址开头为什么不一样:1、3、bc1、bc1p 怎么选

第一次提币的人常被这个卡住:钱包里给了好几个收款地址,开头分别是 1、3、bc1、bc1p。它们都是比特币主网地址,不是四条不同的链,互相转账也不会因为「格式不一样」把币弄丢。真正的差别有两个:这笔交易占多少数据(直接决定手续费),以及支持它的钱包和平台有多普遍。没有特殊理由的话,收款用 bc1 开头的那个。但要说清楚一件事——省费主要省在你以后把这笔币花出去的时候,不是别人转给你的时候。
那几个开头,分别是什么
这四种开头不是版本高低的关系,是不同时期加进来的不同做法。老的没有被废除,新的也不强制迁移,所以它们现在同时存在。
| 开头 | 常见叫法 | 大致是什么 |
|---|---|---|
| 1 | 传统地址 / Legacy | 比特币最早的地址形式,直接对应一个公钥的哈希 |
| 3 | 脚本地址 / P2SH | 对应的是一段脚本而不是单个公钥。多签地址、早年的隔离见证兼容地址都长这样,所以看到 3 开头不能直接断定它是哪一种 |
| bc1q | 原生隔离见证 / bech32 | 把签名数据挪到交易的见证区之后的原生格式,也是现在最常被当作默认收款地址的一种 |
| bc1p | Taproot / bech32m | 更晚加入的一种输出类型,编码方式和 bc1q 同族但不完全一样 |
前两种的开头字符是编码时的前缀决定的:Bitcoin Wiki 的地址前缀表里,P2PKH 的十进制前缀是 0、开头字符是 1,P2SH 的十进制前缀是 5、开头字符是 3。bc1p 这个开头则可以在 BIP-86 的测试向量里直接看到——里面给出的三个主网 Taproot 地址全都以 bc1p 开头。
中文网上讲这个话题的文章大多写于几年前,只讲到 1、3、bc1 三种,bc1p 常常没被提到。如果你的钱包给了一个 bc1p 开头的地址而你在网上查不到,不是你的钱包出问题了。
为什么 bc1 更省费,到底省在谁身上
先接上一个本站已经讲过的结论:比特币的链上手续费按你这笔交易占多少数据算,跟你转多少钱基本无关,机制见转比特币的手续费是怎么回事。地址格式之所以影响费用,就是因为它影响这个「占多少数据」。
规则写在 BIP-141 里:交易重量 = 基础大小 × 3 + 总大小,虚拟大小 = 重量 ÷ 4。基础大小指不含见证数据的那部分,总大小是全部。把这两个式子摊开就能看出来:非见证的数据被算了四次,而见证数据只被算进去一次。签名放进见证区之后,同样一笔交易的虚拟大小就更小,同样的费率下总费用自然更低。
关键在于,这个折扣发生在花钱那一侧。签名是你把币转出去的时候才产生的,所以省费省的是「你从这个地址往外转」的那笔交易。别人往你的 bc1 地址转钱时也会略便宜一点点,但那只是输出部分差几个字节,基本感觉不到。
所以网上常见的那句「换成 bc1 能省百分之几十」是含糊的:它没说是哪一边省,也没说前提。实际省多少取决于你这笔交易用了几个输入、找零怎么走、当时费率多高,没有一个固定百分比。真正靠谱的说法只有一句——同样的交易内容,用了见证区的那笔虚拟大小更小。
那 bc1p 和 bc1q 之间呢?差别很小,而且方向是分开的。按 BIP-341,Taproot 输出是版本号为 1、见证程序为 32 字节的原生隔离见证输出,比 bc1q 那种 20 字节见证程序的输出多占十几个字节;但它的常规花费方式(BIP-341 里说的「见证栈上只剩一个元素时使用密钥路径花费,这个元素就是签名」)只需要放一个签名,比 bc1q 那种要同时放签名和公钥的更紧凑。一进一出,对小额新手来说这点差别可以忽略,真正决定用哪个的是下一节的支持度。
互相转账会不会丢币
不会。这四种都是比特币主网上的地址,从任何一种转到任何一种,走的都是同一条链,是一笔普通的比特币交易。
这里要特别说明一下,免得跟本站另一篇的说法撞车。链上手续费那篇里提醒过「别为省费走陌生通道,转比特币就老老实实走比特币网络」,那句话说的是选错了链——把比特币发到另一条链上的地址,那种情况确实可能拿不回来。地址开头是 1 还是 bc1,跟链无关,四种都是比特币网络本身,不属于「陌生通道」。
可能出问题的只有一种情况:对方的钱包或平台太老,根本不认识新格式。这种情况的表现是它在你点确认之前就告诉你「地址无效」或者「不支持该地址类型」,不会让你把币发出去再丢掉。所以判断支不支持的方法很直接——把地址粘进对方的提币框,看它接不接受,别靠猜,也别因为没见过某个开头就先入为主。
大小写和校验和:地址能挡住什么
bc1 开头的地址有一条容易踩的规矩。BIP-173 明确规定:编码器必须输出全小写的字符串,解码器不得接受大小写混用的字符串;如果需要大写形式(比如为了二维码更好扫),可以在编码之外整体转成大写。
翻译成操作就是:全小写可以,全大写也可以,混着写不行。从截图或者二维码里手抄地址的时候最容易出这个问题——抄成首字母大写、或者顺手把某几位改了大小写,地址立刻作废。老的 1、3 开头地址用的是 Base58 编码,本来就区分大小写,改一个字母的大小写同样就是另一串了。最省事的做法始终是复制粘贴,别动手改。
校验和能帮到你,但它的能力有明确边界。BIP-173 里写得很清楚:bech32 用的这套校验码保证检测出任何最多影响 4 个字符的错误,漏检更多错误的概率低于十亿分之一。也就是说,你手抖打错几个字符,钱包基本都会当场判定地址无效,不会让你把币发到一个不存在的地方。
这跟本站其他几篇反复提醒的「地址填错,币就追不回来」不冲突,两句说的是不同的错。校验和挡的是手抖打错字——那种地址根本发不出去;追不回来的是填成了另一个有效地址:粘错了一条、复制到了骗子的、或者剪贴板被程序换掉了。后面这种,币是实实在在发到了一个能收的地方,只是收的人不是你要转的那个。
所以校验和验证的是「这串地址本身是否完整合法」,不是「这是不是你想转的那个人」。剪贴板被恶意程序替换掉的地址、伪装成对方的地址,本身都是合法地址,一样能通过校验和。所以真正要防的那类风险,校验和一点忙都帮不上,得靠你自己核对:粘贴之后对一遍开头几位和结尾几位,中间再抽一段看看;金额大的先转一笔小额试通再转全部。这类骗法的具体套路见新手买币最常踩的骗局。
新手实际该怎么选
结论按情况分几档,对号入座就行。
- 还没提币、币都在交易所里。这一节暂时用不上。小额阶段把币放在正规交易所、两步验证开好,通常够用,不必为了「自己保管」急着提出来,取舍见买了比特币放哪最安全。
- 要提到自己钱包。钱包默认给你哪个就用哪个——那个默认值是它的开发者替你做过的判断,没有特别理由不用去改。想知道它给的是哪种,看开头就够了。
- 想省手续费。收款优先用 bc1 开头的地址,理由是你以后花它的时候更省,不是收的时候。已经躺在老地址里的余额不用专门转一次去「升级」——那一转本身就要付一笔费;等下次本来就要花的时候,把找零收到新地址上就行。
- 对方只支持 1 或 3 开头。用它接受的那种,别硬来。同一个助记词下,钱包一般可以同时生成好几种格式的地址,它们都属于你,不需要为此再建一个钱包。
- 不管选哪种。从自己钱包转出之前,先用转账费现在贵不贵看一眼当前费率,不急的话挑清闲时段(交易所提币按提币页的固定数额扣,不看这个);转完想确认到没到账,用链上到账查询贴上交易号或地址自己看。
把地址格式弄明白,实际收益就是两件事:不再因为看不懂开头而卡住,以及少付点手续费。它跟比特币会涨会跌没有任何关系——想把风险这一面看全,看买比特币到底有什么风险。这篇讲的是地址格式怎么回事,不构成投资建议。