对于刚刚入门加密货币的小伙伴来说,可能有一个疑问,为什么生成的随机 12 个或 24 个英文单词就可以产生一个钱包,或者恢复一个数字钱包。
这一组英文单词的序列被称为钱包助记词,是用来唯一表示你是该钱包的所有人的方法。这个助记词需要保管好,千万不能泄漏。
钱包助记词
钱包助记词英文是 mnemonic phrase ,也叫做 recovery phrase,或 seed phrase 。
我们知道钱包是存钱的,我们只有创建了数字钱包才能够接受或者发送加密货币。在区块链中,数字资产会对应到一个账户中,用户只需要拥有钱包的私钥就可以对钱包内的资产进行消费,私钥会对交易进行签名。
创建钱包
我们回归到数字钱包创建的时候,如果我们要生成一个数字钱包,只需要使用[[加密货币数字钱包]](包括了软件钱包,硬件钱包等等)生成一个私钥,这个私钥是一个 32 字节的数,私钥生成的方法本质上是在 2^256 次方之间选择一个数字。
生成私钥
当生成了一个随机 256 位的私钥之后,会通过一次 SHA256,然后在 SHA256 前加入两位版本号,后面加入 2 位压缩记号,以及再附加 8 bit 的 Checksum 校验码。之后再进行 Base58 编码。
而助记词本质上是私钥的另一种表现,最早是由 BIP39 提案提出,其目的是为了帮助用户记忆复杂的私钥。助记词一般由 12、15、18、24 个单词构成,这些单词都取自一个固定词库,其生成顺序也是按照一定算法而来,所以用户没必要担心随便输入 12 个单词就会生成一个地址。有了 BIP39,用户就不需要再记忆二进制或者十六进制复杂的私钥。
BIP39 提案中助记词可以用 10 种语言来表示,但我们接触最多的还是英文单词,BIP39 规范中英文部分会使用 2048 个单词的组合,我们试想一下 2048 个不同单词的 24 种组合方式,也就是存在 2048^24 次方种可能,这是一个巨大无比的数字。所以这也是我们不用担心随便找 24 个单词组合一下就能出现一个钱包的问题。
但是需要注意的是任何人得到了你的助记词,可以不费吹灰之力的夺走你的资产。
Know your key, Know your coin。
在交易所钱包中的资产并不属于你,在去中心化的加密货币领域,只有当用户掌握了私钥,掌握了助记词,数字资产才真正属于用户。
生成公钥(钱包地址)
得到私钥之后,私钥会通过椭圆曲线相乘的方式生成公钥,然后公钥会通过哈希函数单向生成比特币地址。而这中间的加密,Hash 的过程都是不可逆的。所以也就是当我们知道私钥时,我们可以推出公钥和加密货币地址。但是当我们拥有加密货币地址时无法逆向推出私钥。
数字钱包本质上是一个管理私钥的工具,提供了生成,存储,签名等等。钱包并不实际保存资产,所有的资产都是在链上的。
助记词和私钥的关系
另外就是当我们使用硬件钱包或者其他软件钱包的时候,会发现可能每一次钱包给出的地址都不一样,其实是因为一个助记词(Mnemonic)会对应着很多的私钥地址。助记词通过编码形成一个钱包种子(Seed),对应多个私钥(Private Key),而每一个私钥都对应着一个钱包地址(Address)。其他人转账到这些钱包地址都可以让我们通过这个助记词所在的钱包来进行管理。比特币每次在发送的时候,都会有一个新地址接收剩余余额,这些地址都是相同的私钥种子(Seed)派生的钱包地址,都受同一个助记词控制,只要你掌握着助记词,你就掌握着所有这些地址的资产,你在接受别人付款的时候,原来的地址继续用于收款,没有任何影响。