跳转到正文
buybitcoinsmart

术语表 /地址与密钥

未压缩公钥

未压缩公钥是什么?
未压缩公钥在0x04 前缀之后写出曲线上某一点的两个坐标,占65字节,如今主要见于2012年之前生成的密钥。

比特币最早的软件记录完整的 x 值和 y 值,因此2009年和2010年的币存放在由65字节密钥派生的地址之后。SegWit 随后关闭了这一格式的大门,因为 BIP-143禁止在版本0的见证程序中使用未压缩密钥,任何 bc1q 地址都无法使用这种密钥。如果您正在恢复一个旧的纸钱包,这个细节将决定您的资金是否会显示出来。

运作方式

未压缩公钥的结构与其名称一样直白。一个值为0x04 的前缀字节标明格式,随后32字节是 x 坐标,再随后32字节是 y 坐标,合计65字节。读取它无需任何计算:该点的两半都已在其中,这正是原始实现在当时的硬件上选择它的原因。

在基础层,验证规则从未对这一格式另行处理。节点检查传统的支付到公钥哈希或支付到脚本哈希的花费时,会毫无异议地接受未压缩密钥,而在2010年锁定到这种密钥的币仍可花费,没有任何期限。改变的是建立在其上的一切:BIP-32钱包只派生压缩密钥,因此助记词永远无法产生未压缩密钥,而 SegWit 使它们在见证版本0的花费中无效。

多出的32字节的成本在花费时支付。携带压缩密钥的传统输入约为148 vbytes;同样的输入若携带未压缩密钥,则约为180 vbytes,同一笔花费大约多出22%。在手续费飙升期间合并十几个这样的输入时,这一差异就不再是无关紧要的细节。

在哪里会遇到它

仍有三类物品会让人拿到未压缩密钥,三者都出自同一时期。

2011年至2013年间各生成器网站打印的纸钱包,通常会生成以1开头的地址和以5开头的钱包导入格式字符串,后者是该格式未压缩一侧的标志。2011年至2013年间铸造的 Casascius 系列实物币,在防拆全息图下藏有同类字符串。而非常早期的钱包软件导出的私钥,则完全早于这一转变。

恢复旧密钥

陷阱不在编码,而在于同一个私钥会产生两个不同的地址。对65字节的密钥取哈希,得到一个传统地址;对同一密钥33字节的压缩版本取哈希,得到一个完全不同的地址。若将密钥导入默认使用压缩格式的现代软件,余额可能显示为零,而币其实原封不动地留在另一个地址。

妥善处理旧资料的钱包(Electrum 即是其一)在您清扫密钥而不是导入密钥时,会检查两种派生方式。清扫也是更安全的操作:它会把币转入由您当前助记词控制的地址,这样,放在抽屉里的打印件、被手机拍下的照片,或被前任持有人看到的内容,就再也无法花费任何资金。在断定恢复失败之前,请先在区块浏览器上查看两种地址形式。

请勿混淆

常见问题

存放在未压缩公钥之后的币仍可花费吗?

可以。传统输出接受未压缩密钥,没有期限,任何升级都没有改变这一点。唯一的限制是原生 SegWit 的花费会拒绝它们,因此这些币必须先通过传统输入转移。

为什么我的旧私钥显示两个不同的地址?

因为同一密钥的压缩版本和未压缩版本是不同的字节串,各自的哈希对应各自的地址。在断定恢复失败之前,请先查看两个地址的余额。

接着阅读

相关术语

地址与密钥中的更多术语

阅读本页英文版