跳转到正文
buybitcoinsmart

术语表 /地址与密钥

密钥对

密钥对是什么?
密钥对是一个私钥及其生成的唯一公钥,是比特币每一次签名以及每一个多重签名阈值所计数的所有权单位。

配对之所以重要,是因为两半承担相反的职责:一半用于创建签名,另一半让任何陌生人都能验证签名。这种关系只能单向推导,因此公开公钥永远不会危及私钥。计算密钥对的数量,是衡量一套配置规模的方法,因为2-of-3多重签名保险库就是存放在三个地方的三个密钥对,其中任意两个即可动用资金。

运作方式

一个私钥恰好生成一个公钥,这种对应关系永远不变。把同一个32字节的秘密输入同一套曲线运算,无论在哪台设备、哪款钱包,相隔十年,得出的公钥完全相同。正是这种确定性,使钱包能够从备份中恢复,也使任何人都无需保存公钥:公钥可随时重新计算得出。

密钥对分担每一笔支出的工作。您的设备使用私钥一半生成签名,该签名承诺所签署的这笔确切交易;成千上万的节点使用公钥一半确认签名与密钥及该交易均相符。只要把某个输出改动一聪,签名就无法通过验证。不同方案的签名大小不同:BIP-340规定的 Schnorr 签名固定为64字节,而较早的 DER 编码 ECDSA 签名为71或72字节,这也是 Taproot 支出费用更低的部分原因。

分层确定性钱包把一个秘密变成数量不受限制的密钥对。BIP-32推导在树的每一层提供2,147,483,648个普通子索引,另有同样数量的硬化子索引,全部可由同一个种子重现。钱包从这些密钥对中为每笔付款提供一个新的密钥对,这使地址轮换切实可行,而不至于成为繁琐的记账负担。

在哪里会遇到它

当钱包需要证明某件事而不是单纯支出时,密钥对就会显现出来。消息签名是最直接的例子:您选择一个地址,钱包用私钥一半对一段文本质询签名,任何人都可以用公钥一半验证。交易所正是以此确认您拥有某个提币地址,整个过程不会转移任何比特币。

多重签名是计算密钥对数量开始变得重要的地方。2-of-3保险库由三个相互独立的密钥对构成,通常在三台不同的设备上生成;赎回脚本列出全部三个公钥,而任意两个私钥即足以动用资金。丢失一台设备不会造成任何损失,丢失两台则会失去全部资金。决定保险库如何失效的,是这笔算术,而不是硬件的品牌。

协作签名呈现出同样的结构。BIP-174定义的部分签名比特币交易在设备之间传递,每个密钥对各添加一个签名,直至达到签名阈值。每位签名者只接触自己的私钥一半,并能看到其他所有人的公钥一半,这正是密钥对所要实现的分离。

密钥对 vs 扩展密钥

密钥对是叶子,扩展密钥是树枝。扩展密钥写作 xprv 或 xpub,是一个密钥加上32字节的链码,正是这部分额外材料使其能够派生子密钥。单独的密钥对不能派生任何密钥:它只控制锁定到它名下的比特币,到此为止。这一区别有明确的实际意义。泄露一个公钥只暴露一个地址,而泄露一个 xpub 则会暴露其下分支将来产生的每一个地址。

请勿混淆

常见问题

我的钱包有多少个密钥对?

实际上数量不受限制。现代钱包使用 BIP-32树,从一个种子为每个地址派生一个新的密钥对,只需备份种子,因为其下的每个密钥对都可以随时重新生成。

两个人可以共用一个密钥对吗?

他们可以把私钥复制到两台设备上,但这是最糟糕意义上的共同保管:任何一方都可以单独支出,而双方都无法证明是谁所为。多重签名正是为此而设,为每位参与者提供各自独立的密钥对,并要求达到约定的签名阈值才能转移资金。

接着阅读

相关术语

地址与密钥中的更多术语

阅读本页英文版