比特币钱包介绍

比特币钱包是保存私钥的容器,通常以结构化文件或者简单数据库的方式实现。另一个生成私钥的方式是确定性密钥生成。使用确定性密钥生成的情况下,可以通过单向哈希函数(查看什么是哈希算法),从上一个私钥中生成一个新的私钥,按顺序连接,形成一个链条。如果需要重建这个链条,你只需生成第一个私钥(称之为种子或者主密钥),即可生成整个序列。在本节中,我们将检查不同的密钥生成方式以及相应的钱包结构。

比特币钱包包含的是密钥,而不是比特币。每个用户拥有一个包含很多密钥的钱包。钱包实际上是一个密钥链,包含一对对的公/私钥(参看本章中“私钥和公钥”)。用户使用密钥对交易进行签名,以证明其拥有交易输出(比特币)。比特币以交易输出的方式存储于区块链上(通常记为vout或者txout)。

非确定性(随机)钱包

在早期的比特币客户端中(比特币客户端快速入门),钱包是随机生成的私钥的简单集合。这种类型的钱包称为Type-0非确定性钱包。举例来说,比特币核心客户端在第一次启动时预生成100个随机私钥,后面则根据需要继续产生,每个私钥只使用一次。这种类型的钱包被戏称为“只是一堆密钥(Just a Bunch Of Keys)”,或者简写为“JBOK”,这种钱包已逐渐被确定性钱包替代,因为它们很难管理、备份和导入。随机密钥的缺点在于如果你生成了太多的密钥,就必须经常对所有这些密钥进行备份。如果没有备份,一旦钱包无法访问,这些密钥控制的资金将彻底丢失。这也与每个地址仅在交易中使用一次、避免地址重用的原则直接冲突。地址重用使他人能够通过将多个交易和地址互相关联,从而获取用户的隐私信息。使用Type-0非确定型钱包是一个无奈的选择,特别是你为了避免地址重用而不得不使用大量密钥时,这使得频繁备份成为必要。虽然比特币核心包含一个Type-0钱包,但比特币核心的开发者却不建议使用这个钱包。图4.8展示了一个非确定型钱包,包含一些随机密钥的松散组合。

blob.png

图4.8 Type-0非确定性(随机)钱包:随机生成密钥的集合

868区块链学习网为您整理《比特币钱包介绍》仅供参考。