跳转到正文
buybitcoinsmart

术语表 /地址与密钥

传统地址

又称1开头地址。

传统地址是什么?
传统地址是以1开头的 Base58Check 字符串,是比特币地址的原始格式,存放在这类地址中的比特币转移成本最高。

传统地址自2009年1月发布第一个比特币版本以来一直保持不变,所有钱包和交易所至今仍然接受它们。它们也是花费成本最高的格式:一个传统输入约占148 vbytes,而一个原生 SegWit 输入约占68。如果您的比特币存放在以1开头的地址中,并没有任何问题,但今后每次提币都会悄然让您承担约两倍的手续费。

运作方式

传统地址是对一个哈希值的紧凑编码。取33字节的压缩公钥,对其运行 SHA-256,再对结果运行 RIPEMD-160,即得到20字节的指纹。在前面加上版本字节0x00,再对这21字节做两次 SHA-256,取其前四个字节作为校验和附在后面,然后把完成的25字节数据包用 Base58 编码。正是版本字节决定了首字符必为1,输出的字符串长度为26至35个字符,几乎总是34个字符。

Base58 在常用的字母数字中去掉了四个符号:数字零、大写 O、大写 I 和小写 l。这样就去除了人们在朗读字符串或从屏幕上抄写时容易混淆的符号对。它没有去除的是区分大小写:大小写抄错的传统地址就是另一个地址,其二维码也必须使用字节模式,这种模式比 bech32 对应的二维码图案更密集。

地址是锁定脚本的简写。发送方的钱包会把它展开为 OP_DUP OP_HASH160 <20-byte hash> OP_EQUALVERIFY OP_CHECKSIG,共25字节,写入交易输出。日后花费时,签名和公钥会进入输入的 scriptSig,其中每个字节按四个权重单位计算,对应4,000,000单位的区块预算。传统输入的任何部分都没有折扣,这正是成本差异的全部来源。

有两段历史值得了解。创世区块于2009年1月3日挖出,其50 BTC 的 coinbase 支付给的是一个裸公钥而不是哈希值,著名的字符串1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa 就是由该公钥衍生的传统地址。这些比特币无法花费,因为创世区块的 coinbase 从未被加入可花费输出集合。

购买比特币时为何重要

您粘贴到交易所提币表单中的地址,将在多年里决定您的手续费,而且这个选择由您而不是平台来做。

这里有两种不同的手续费容易混淆。交易所收取提币手续费,通常按每笔交易固定收取,与金额或格式无关。网络则在日后您自己花费这些比特币时另行收费,这笔费用取决于您持有多少个输入以及它们的类型。提币到以1开头的地址,得到的是成本高的输入;提币到 bc1q 地址,得到的是成本低的输入,当天并无额外费用。

在为账户入金之前,请先查看提币页面。本站的交易所评测说明了哪些平台专注于比特币,以及它们的提币设置如何运作,需要留意的信号是:表单只提供 Base58 格式而没有其他选项。一个自2017年以来没有改动过地址处理的平台,说明了其工程水平,而它此时正持有您的资金。

如果您的钱包很旧,您的比特币其实已经是传统地址。2014年打印的纸钱包、早期的 Electrum 文件、按首个固件配置的硬件钱包:它们默认使用的都是以1开头的格式。没有任何风险,也没有期限。唯一要决定的是何时支付迁移的成本。

整合旧的传统地址存量实际要花多少

设想有十二个各自独立的以1开头的地址,每个地址里是多年小额购买剩下的少量比特币,现在打算把它们归集到一个现代地址中。

十二个传统输入加一个原生 SegWit 输出,构成的交易约为1,817 vbytes:每个输入约148,输出31,版本、计数器和 locktime 共10。按6 sat/vB 计算,接近10,900聪。如果这十二笔比特币原本存放在 bc1q 输出中,同样的交易约为858 vbytes,费用约5,150聪。节省来自格式本身,而不是整理本身。

有两点需要注意。费率会波动,同样的交易按60 sat/vB 计算约需109,000聪,因此这件事适合在内存池空闲时做,而不是在繁忙的下午。此外,整合是一次隐私事件:合并十二个输入等于宣告这十二个输入由同一个人控制,这可能抵消您有意保持的隔离。

传统地址 vs P2PKH 地址

传统地址和 P2PKH 地址是从两个角度描述同一个字符串,区别只在范围。P2PKH 精确指明了输出脚本,因此始终指以1开头的地址。“传统”指的是一个时代,日常使用中它也被扩展到以3开头的 Base58 字符串,因为这些同样是旧式的,同样区分大小写。如果有人说其交易所只支持传统地址,请问清楚他指的是仅以1开头的地址,还是以1和3开头的地址,因为答案会改变您可以提币到哪些地址。

传统地址 vs 嵌套 SegWit

嵌套 SegWit 地址看起来像传统地址,但并不是。它们使用相同的 Base58Check 编码和区分大小写的字母表,但以3开头,其背后的比特币是见证输出,因此花费一个这样的输出约占91 vbytes,而不是148。一个宣称支持 SegWit、随后却给您一个以3开头地址的平台,提供的是中间选项:比传统地址便宜,比 bc1q 贵,几乎与所有软件兼容。仅凭首字符判断,在另一个方向上同样会误导您,因为以3开头的地址也完全可能是多重签名保险库。

请勿混淆

常见问题

如果比特币存放在传统地址中,会有风险吗?

不会。传统地址与其他任何格式一样安全,也没有淘汰传统地址的计划。唯一的代价是成本:花费一笔传统输入约需148 vbytes,而一笔原生 SegWit 输入约需68。

我应该把比特币从传统地址转出吗?

当链上手续费较低,且您本来就要动用这些比特币时,再转出。以6 sat/vB 合并12笔传统输入,费用约为10,900聪;同样的操作在60 sat/vB 时约需109,000聪,因此时机决定迁移能否收回成本。

可以把传统地址转换成 bech32 地址吗?

不能直接转换。这两种地址来自钱包密钥树的不同分支,因此切换意味着把比特币通过链上交易转到新地址。不存在离线转换,也没有任何服务可以代您完成。

为什么有些交易所仍然给我以1开头的地址?

因为它们一直没有更新地址处理方式。充币地址的成本由平台承担,而不是由您承担,但提币到以1开头的地址,日后会变成您自己的高成本输入,因此在表单允许时,请选择 bech32 地址作为目标地址。

接着阅读

相关术语

地址与密钥中的更多术语

阅读本页英文版