了解您的比特币密钥:BIP39种子词

比特币2年前 (2024)更新 qkledit
219 0

比特币自我**的基石是控制你的私钥。如果没有这一点,您就会以某种方式将您的资金控制权交给其他人。对于不熟悉比特币技术基础的人来说,比特币的一个反直觉的方面是你的比特币实际上在哪里。当人们想到钱包时,他们会想到我存放钱的地方。

您的比特币钱包实际上并不保存您的比特币,它只是存储您的私钥。您的比特币只是区块链上由参与网络的每个人托管的数据条目。当您花费比特币时,您实际上在做的是提议更新存储在区块链上的数据。私钥是协议如何确保您(并且只有您)可以授权更新花费您的比特币的区块链。

了解您的比特币密钥:BIP39种子词

那么你的私钥是什么?只是非常大的数字。这是二进制私钥:

1110001011011001011110111100000101000100000010001001111010111011010101110111001111111111101010111010010111010011101001110010100110111101000110000111110101111001101001011110011011101000001101101101110001101000110001111010001001001111011010101011001101101010

256 个随机 1 和 0。这个随机数最终是保护你的比特币的。它可能看起来并不多,但它的随机性可以确保您钱包的安全。可能的比特币私钥几乎与可见宇宙中的原子一样多。这就是计算机必须计算多少个数字才能生成和编录所有可能的私钥。只要用于生成密钥的过程是真正随机的,您的密钥就是安全的。

这是十六进制私钥的样子(二进制使用两个数字来编码数字,1 和 0,十六进制使用 16 个数字,0-9 和 AF):

E2D97BC144089EBB5773FFABA5D3A729BD187D79A5E6E836DC68C7A24F6AB36A

这是未压缩的钱包导入格式 (WIF) 中的私钥的样子:

5KYC9aMMSDWGJciYRtwY3mNpeTn91BLagdjzJ4k4RQmdhQvE98G

WIF 格式是比特币早期每个人与私钥交互的方式。在这个时代,您可以一次生成一个私钥,然后从中生成公钥。生成公钥的过程本质上只是非常大的数字的乘法,但还不止于此。所有公钥都是图表上的 x 和 y 点,显示一条非常非常大的循环曲线就其本身而言。

在图形曲线上,在比特币的案例Secp256k1中,有一个点称为“生成点”。该生成点可以被视为 Secp256k1 曲线上的“基点”。它是生成密钥并使用密钥签名的过程中不可或缺的一部分。这就是比特币曲线的生成点:

G = 02 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798

要从私钥生成公钥,您需要将生成的私钥乘以生成点。就是这样。现在,这会在图表上建立一个点,该点与您生成的私钥存在数学关系,只有您知道。

这是一个未压缩的公钥,显示 x 和 y 点:

04C0E410A572C880D1A2106AFE1C6EA2F67830ABCC8BBDF24729F7BF3AFEA06158F0C04D7335D051A92442330A50B8C37CE0EC5AFC4FFEAB41732DA5108261FFED

在与公钥交互的极少数情况下,压缩公钥是很常见的,只用一个字节存储 x 坐标来告诉您 y 坐标是负数还是正数。这大大缩短了它:

04C0E410A572C880D1A2106AFE1C6EA2F67830ABCC8BBDF24729F7BF3AFEA06158F0C04D7335D051A92442330A50B8C37CE0EC5AFC4FFEAB41732DA5108261FFED

当你用私钥签署交易时,它再次归结为本质上只是乘法。通过生成一个随机数(随机数),并使用该随机数和您的私钥本质上乘以您正在签名的交易的哈希值,您就可以生成签名(由两个值 r 和 S 组成)。这允许某人运行算法来验证消息是否由适当的私钥签名,而无需泄露该密钥。保证只有你可以授权花费你的比特币本质上只是非常非常大的数字的乘法。

如果您在阅读本文之前不太熟悉这些概念,那么所有这些可能看起来有些令人生畏。二进制?十六进制?图点?如何备份 WIF?

由于处理这些数据的更直观方法的发展,大多数用户不熟悉这些复杂的格式。您很可能对单词种子(也称为种子短语)有更多的经验。

BIP 39 助记词种子

创建助记种子或种子短语是为了解决与私钥交互的体验问题。

正如我们之前讨论的,私钥最终只是随机生成的一长串 1 和 0。想象一下尝试创建此副本并确保您在转录时没有出错:

1110001011011001011110111100000101000100000010001001111010111011010101110111001111111111101010111010010111010011101001110010100110111101000110000111110101111001101001011110011011101000001101101101110001101000110001111010001001001111011010101011001101101010

只需**一位数字时出现一个错误,就会使密钥备份变得毫无用处。这就是助记词种子派上用场的地方。连续 256 个连续的 1 和 0 并不是一种人性化的与敏感信息交互的方式。错误地记录此号码意味着无法访问您的帐户。

卡车更新愤怒驴提醒笔记本电脑改革细节因肥胖而分裂悲伤

这更容易处理,不是吗?只有12个字。那么它是如何工作的,从一堆随机的 1 和 0 变成一串对你来说真正有意义的单词呢?一种编码方案,就像二进制或十六进制一样!

上述助记符种子中的 12 个单词中的每一个都是编码方案中的二进制数,将特定的 1 和 0 字符串映射到单词。如果我们回顾一下之前的 WIF 私钥示例,就会发现它只是以特定编码方案(在这种情况下为基数 58)编码的数字,它使用字母表中除 0 和 1 以及 O 和 l 之外的所有数字和字母(区分大小写)。排除这些字符是专门为了通过混淆 1 为 l 或 0 为 O 来减少转录错误。Segwit 和 Taproot 使用的 bech32 和 bech32m 通过仅使用这组字符将其提升到一个新的水平( qpzry9x8gf2tvdw0s3jn54khce6mua7l)。

比特币改进提案 39 (BIP 39) 引入了一种标准化编码方案,其中特制词典中的每个单词都按字母顺序映射为从 00000000001 到 11111111111 的二进制数。

在二进制中它看起来像这样:

11101001001 10110110001 01011110011 01000001001 10110101110 01111101000 10110100010 00111100010 11010010001 01100110100 00010011110 0101001 1011

有 2048 个单词,每个单词映射到由 1 和 0 组成的特定 11 位数字字符串,专门是为了让人们更轻松地与其私钥进行交互。当您为私钥生成随机数时,您的钱包会将该数字切割成 11 位二进制数块,并将它们映射到 BIP 39 助记词词典。它仍然是同样大的数字,但现在你可以把它读成英语单词。由于你的大脑比长串 1 和 0 更习惯这种格式,因此这大大降低了你写下错误内容并在此过程中丢失比特币的可能性。

您可能已经注意到,在上面单词种子的原始二进制编码中,有四个数字 (1011) 独立存在,而最后一个“单词”实际上只有 8 位数字。这是确保种子短语有效的校验和。当您生成随机数时,没有足够的数字将其精确映射到 12(或 24)个单词。钱包会对您生成的现有数字进行哈希处理,并将哈希值的前几位数字添加到随机数的末尾。这将为您提供足够的数字来映射到最后一个单词。

最后一句话允许您对种子副本进行安全检查。如果您将助记词种子错误地输入到钱包中,则校验和将不匹配。每个 12 或 24 个单词的种子都有多个潜在的有效校验和单词,但如果最后一个单词与正确种子的校验和不匹配,您的钱包会警告您它是无效的。这为人们提供了一种直观但仍然数学的方法来保证他们的备份正确,这与转录和备份原始二进制数的混乱过程不同。

列表中特定单词的选择甚至保证了 2048 个单词中没有一个单词的前四个字母相同。这样做是为了减少人们因混淆相似的单词而导致转录错误并最终导致私钥备份不正确的可能性。

将这些单词翻译成一多个私钥/公钥非常简单。您的助记词种子将使用 SHA512 进行哈希处理,输出 512 个单独的 1 和 0 的哈希值。该输出的一半用作实际的私钥,另一半用作带有索引号和现有私钥或公钥的 SHA512 的输入,以生成新的密钥对。您可以根据需要多次执行此操作,生成新的私钥/公钥,这些密钥都可以从单个助记词短语中恢复。

这确保您可以尽可能轻松、安全地管理您的私钥,同时将犯下导致金钱损失的错误的可能性降到**。所有这一切都是用数学完成的!希望现在您能够很好地理解为什么人们说比特币是“由数学保证”的货币。

© 版权声明

相关文章