链典. L I À N D I Ǎ N加密新手百科 · 词条手册
VOL.01 · 加密入门简体中文版 · EST. 2026收录词条 51
基础概念

比特币地址 1、3、bc1 开头有什么区别?转账前要确认什么

几种处境常一起找上门:提币页地址框的灰色示例是 bc1q 开头,新装的钱包点「收款」给的却是 bc1p;老教程截图全是 1 开头,朋友发来的又是 3 开头。最吓人的,是换了钱包、输入同一套助记词,余额显示 0。

这几件事背后连着同一件事:比特币地址不止一种,开头几个字符就是类型标记。下面按比特币改进提案(BIP)和开发者文档的英文原文,讲清 1、3、bc1q、bc1p 各是什么,再落到转账前的核对。只讲同一条比特币链上的地址,不涉及选网络。

四种开头,先对上号

先看对照。左边是你在地址框里看到的开头,右边是它在协议文档里的名字和出处。

开头类型出处
1P2PKH(付给公钥哈希)开发者文档给出主网版本字节 0x00;首字符 1 是按其编码规则推出的
3P2SH(付给脚本哈希)BIP-13:主网版本字节 5 编码后首字符是 3
bc1q隔离见证(SegWit)版本 0,Bech32 编码BIP-173
bc1p隔离见证版本 1,Bech32m 编码,对应 Taproot 升级的 P2TR 输出BIP-350、BIP-86

1 开头的叫 P2PKH,意思是「付给公钥哈希」:地址里装的是收款人公钥经过哈希后的结果。BIP-141 提到它时用的词是 traditional,也就是「传统」地址。

有个细节:比特币开发者文档讲地址转换时,并没有一句话直说「以 1 开头」。它写的是在哈希前面加一个版本字节,并列出常用值:

英文原文(比特币开发者文档):"0x00 for P2PKH addresses on the main Bitcoin network (mainnet)" / "0x05 for P2SH addresses on mainnet"
中文意思:主网 P2PKH 地址用 0x00,主网 P2SH 地址用 0x05。

同一节给出的 Base58 编码算法里,哈希开头有几个零字节,就在结果前面补几个字符表的第一个字符,而那张字符表的第一个字符正是 1。0x00 本身就是一个零字节。所以「1 开头」是我们按这份文档的编码规则推出来的。

3 开头这边,BIP-13 说得很直白。英文原文:"The leading version bytes are chosen so that, after base58 encoding, the leading character is consistent: for the main network, byte 5 becomes the character '3'." 意思是版本字节是特意挑过的,主网上字节 5 编码后,首字符就是 3。

3 开头叫 P2SH,BIP-16 的标题就是 Pay to Script Hash,即「付给脚本哈希」。按 BIP-13 的说法,这种地址代表一段脚本的哈希,而不是某个公钥的哈希。脚本可以理解成「这笔币要满足什么条件才能花出去」。BIP-16 讲它的好处:条件再复杂,付款方面对的都只是一个固定长度的 20 字节哈希,短到能扫二维码,也方便复制粘贴。

bc1 后面那一个字母,分出了两代地址

bc1 开头的地址换了一整套编码,拆开读是三段:

于是 bc1q 是隔离见证(SegWit,全称 Segregated Witness,由 BIP-141 定义)版本 0 的地址,bc1p 是版本 1。两代用的编码也不一样,BIP-350 的摘要写道:

英文原文(BIP-350):"This document defines an improved variant of Bech32 called Bech32m, and amends BIP173 to use Bech32m for native segregated witness outputs of version 1 and later. Bech32 remains in use for segregated witness outputs of version 0."
中文意思:本文定义 Bech32 的改进版 Bech32m,并修订 BIP-173,版本 1 及以后的原生隔离见证输出改用 Bech32m;版本 0 继续用 Bech32。

BIP-86 的标题(Key Derivation for Single Key P2TR Outputs)把这类版本 1 输出叫 P2TR,也就是 Taproot 升级对应的输出类型。你钱包里那串 bc1p,对应的就是它。

为什么换编码?BIP-173 列了 base58 的毛病:大小写混排,不便抄写、用手机键盘输入或念出来;在二维码里也占地方。新格式的对策写得很硬:编码器必须输出全小写,解码器不得接受大小写混写。

3 开头的地址里,可能装着隔离见证

BIP-173 谈隔离见证输出时有一句,英文原文:"Their functionality is available indirectly to older clients by embedding in P2SH outputs, but for optimal efficiency and security it is best to use it directly." 意思是,旧客户端可以把隔离见证嵌进 P2SH 输出里间接使用,但要效率和安全都最好,还是直接用。

BIP-141 给了这种嵌套的示例,并评价说:"Although a nested witness program is less efficient, its payment address is fully transparent and backward compatible for all Bitcoin reference client since version 0.6.0."(英文原文)。嵌套的效率低一些,换来的是付款地址对 0.6.0 版以来的参考客户端完全透明、向后兼容。

由此可以推出一点:P2SH 地址只带着脚本的哈希,脚本本身不在地址里,所以光看一个 3 开头的地址,分不出里面装的是隔离见证还是别的条件。这是我们从 BIP-13 那句「地址代表脚本的哈希」推出来的。它真正会影响你的地方,在下面恢复助记词那一节。

旧软件往 bc1 地址转,会发生什么

格式一更新,发送方的软件认不认就成了问题。BIP-173 的兼容性一节只有两句,照抄如下:

英文原文(BIP-173):"Only new software will be able to use these addresses, and only for receivers with segwit-enabled new software. In all other cases, P2SH or P2PKH addresses can be used."
中文意思:只有新软件能用这类地址,而且收款方也得是支持隔离见证的新软件;其他情况下,可以用 P2SH 或 P2PKH 地址。

BIP-141 也列了没升级的钱包还能做什么,其中两条是:向传统 P2PKH 地址付款,向已升级钱包的 P2SH 地址付款。

bc1p 走得更远。BIP-350 写明,Bech32m 打破了旧软件向版本 1 及以上地址发送的向前兼容,而且 "This incompatibility is intentional."——这种不兼容是故意的。同一段还交代:主张 Taproot 的人做过实验,发现几乎没有钱包和服务支持向更高版本的隔离见证地址发送;实验还发现,有些隔离见证实现向版本 1 地址发送时会让钱包把币烧掉。对这类软件(如果还有人在用),"the chosen approach will prevent such software from destroying funds when attempting to send to a Bech32m address.",也就是让它们发往 Bech32m 地址时不至于把币毁掉。

注意那是当年实验的结论,不能拿来判断今天哪些钱包支持 bc1p;旧软件碰到 bc1p 地址时界面怎么提示,这一条我们没有查。实际碰上发送端不接受对方的 bc1p 地址,按 BIP-350 的设计这在意料之中:请对方换一个你这边能发的开头,或换用支持 Bech32m 的软件,别改地址里的字符硬凑。

恢复助记词后余额为 0,先查地址类型

旧手机坏了,你在新钱包里输入助记词,恢复成功,余额却是 0。先别急着认定币没了,看几份提案的原话。

BIP-84 讲为什么要给隔离见证单独建账户,英文原文:"Thus the user needs to create dedicated segregated witness accounts, which ensures that only wallets compatible with this BIP will detect the accounts and handle them appropriately." 它的向后兼容一节接着说:"An incompatible wallet will not discover accounts at all and the user will notice that something is wrong."——不兼容的钱包压根发现不了这些账户,用户会察觉哪里不对。BIP-49(嵌套在 P2SH 里的隔离见证)用了同样的句子,BIP-86 的写法只多了一个 these。

BIP-86 还点出一个现实,英文原文:"many software wallets and hardware signers still use seed backups which lack derivation path and script information." 意思是,很多软件钱包和硬件签名设备用的助记词备份,并不记录派生路径和脚本信息。

把这几句放在一起,能推出一种可能:同一套助记词在不同地址类型下对应不同的账户,新钱包如果没去扫你原来那种类型,就会显示 0。这只是推论。它不保证币还在,也不保证换个设置就一定能找回。排查可以这样走:

  1. 翻出原来用过的收款地址,比如交易所提币记录里填过的那串,看它是 1、3、bc1q 还是 bc1p 开头。
  2. 把这个地址放进区块浏览器查链上余额,方法见《怎么用区块浏览器查转账到没到》。
  3. 看新钱包的说明:支不支持那种开头,有没有地方切换或添加对应类型的账户。

Bitcoin Core 可以当个参照。它生成新地址时有个 address_type 参数,文档写的是(英文原文)"The address type to use. Options are "legacy", "p2sh-segwit", "bech32", "bech32m"."。照名字对,大致就是前面说的 1、3、bc1q、bc1p 四类,这组对应是我们的理解;它默认生成哪一种,具体默认值我们没有读到。

排查全程,助记词只输进你信任的钱包软件本身,说能帮你「找回余额」的一律不理。备份做法见《助记词丢了怎么办?私钥备份的正确方法》。

提币前,按这个顺序核对

回到开头那个场景:提币页的输入框示例是 bc1q,你的钱包给的是 bc1p。示例文字是哪种开头,推断不出平台接受哪几种。按下面几步走:

  1. 去平台的提币页或帮助中心,确认它接受哪几种开头。各平台支持哪些比特币地址格式,这一条我们没有查,所以本文不点任何一家的名。
  2. 对上自己钱包给的开头。平台没写明接受的那种,就在钱包里换一个平台写明接受的开头(前提是钱包能切换),别硬填。
  3. 核对完整地址。复制粘贴后逐段对,不要只看头几个和末几个字符。bc1 地址不会大小写混写;1 和 3 开头的地址大小写有区别,错一个都不行。
  4. 过一遍格式校验。站内的地址格式校验按 Base58 或 Bech32 的字符集查格式,它只能告诉你格式对不对,没法告诉你地址是谁的。
  5. 先小额试转。一小笔到账、在区块浏览器里查到之后,再转剩下的。
风险提示:链上转账一旦确认,无法撤回。地址类型或地址本身填错之后能不能找回,本文不下结论;自称能「代找回」的服务,请不要轻信。

bc1q 和 bc1p 该选哪个?这里不给推荐。关于 bc1p 好处的说法,要读 Taproot 本身的规则(BIP-341)才能核对,这一条我们没有查,所以不复述。

完整提币流程见《怎么把币从交易所提到自己的钱包?第一次转账完整步骤》;USDT 选网络是另一回事,见《USDT 走 TRC20 还是 ERC20?》。

引用的原文都能自己打开核对,以下是我们 2026 年 9 月 28 日读到的版本:BIP-13、BIP-16、BIP-49、BIP-84、BIP-86、BIP-141、BIP-173、BIP-350、比特币开发者文档 Transactions 参考、比特币开发者文档词汇表、Bitcoin Core 31.0.0 getnewaddress 文档。加密资产波动剧烈,链上转账不可撤销,本文只讲地址怎么认,不构成投资建议。

常见问题

1 开头和 3 开头的地址现在还能收比特币吗?
按 BIP-141 向后兼容一节,没升级的钱包仍能向传统 P2PKH 地址、向已升级钱包的 P2SH 地址付款。某个平台收不收这类地址,看它自己的提币页或帮助中心。
我的钱包是 bc1q 地址,能往 bc1p 地址转账吗?
看发送用的软件认不认 Bech32m 编码。BIP-350 写明,只懂 Bech32 的旧软件向 bc1p 发送是有意不兼容的,并说这样能防止某些旧实现发往这类地址时把币烧掉。你的钱包支不支持,看它自己的说明;不支持时界面怎么提示,这一条我们没有查。
抄地址时要区分大小写吗?
1 和 3 开头的地址用 Base58 编码,大写和小写是不同的字符;bc1 地址按 BIP-173 输出全小写,解码器不接受大小写混写。不管哪种,都复制粘贴后逐段核对,别靠手抄。
bc1 地址转账手续费是不是更低?
BIP-141 把交易重量定义为基础大小乘 3 再加总大小,虚拟大小是重量除以 4;基础大小不含见证数据,总大小含。由这两条定义推出,见证数据在重量里只算一份,其余数据算四份。具体一笔差多少,本文不估算。
同一套助记词换了个钱包,余额显示 0,币是不是没了?
先别下结论。BIP-84 等提案写明,不兼容的钱包根本发现不了对应类型的账户,所以余额为 0 可能只是新钱包没扫你原来那种地址类型——这是我们的推论,不是保证。先在区块浏览器里查原来的收款地址,再看新钱包支不支持那种开头;索要助记词的「找回服务」一律不理。
沈
沈书远 · 链典编辑组主笔

沈书远是笔名。我们不披露真实身份,只对内容的准确和好懂负责。本文引用的协议文档于 2026-09-28 对照英文原文核对,发现错漏欢迎在 更正记录 看到我们怎么改。

分类:基础概念