区块链-钱包概述

目录:http://www.javashuo.com/article/p-nitsjfvy-ey.html安全

摘自《精通比特币》服务器

一个常见误解是,比特币钱包里含有比特币。 事实上,钱包里只含有钥匙。 “钱币”被记录在比特币网络的区块链中。 用户经过钱包中的密钥签名交易,从而来控制网络上的钱币。 在某种意义上,比特币钱包是密钥链。网络

有两种主要类型的钱包:函数

第一种类型是非肯定性钱包(nondeterministicwallet),其中每一个密钥都是从随机数独立生成的。密钥彼此无关。这种钱包也被称为“JustaBunchOfKeys(一堆密钥)”,简称 JBOK钱包。区块链

第二种类型是肯定性钱包(deterministic wallet),其中全部的密钥都是从一个主密钥派生出来,这个主密钥即为种子(seed)。该类型钱包中全部密钥都相互关联,若是有原始种子,则能够再次生成所有密钥。肯定性钱包中使用了许多不一样
的密钥推导方法。最经常使用的推导方法是使用树状结构,称为分级肯定性钱包HD (Hierarchical Deterministic)钱包加密

一、非肯定性(随机)钱包

在最先的一批比特币客户端中( BitcoinCore,如今称做比特币核心客户端),钱包只是随机生成的私钥集合。这种类型的钱包被称做零型非肯定钱包。举个例子, 比特币核心客户端预先生成100个随机私钥,从最开始就生成足够多的私钥而且每一个密钥只使用一次。.net

这种钱包如今正在被肯定性钱包替换,由于它们难以管理、备份以及导入。随机密钥的缺点就是若是你生成不少私钥,你必须保存它们 全部的副本。这就意味着这个钱包必须被常常性地备份。每个密钥都必须备份, 不然一旦钱包不可访问时,钱包所控制的资金就付之东流blog

这种状况直接与避免地址重复使用的原则相冲突——每一个比特币地址只能用一次交易。地址重复使用将多个交易和地址关联在一块儿,这会减小隐私。当你想避免重复使用地址时,零型非肯定性钱包并非好的选择,由于你要创造过多的私钥而且要保存它们。虽然比特币核心客户端包含零型钱包,但比特币的核心开发者并不鼓励你们使用。索引

 

二、肯定性(种子)钱包

肯定性,或者“种子”钱包包含经过使用单项离散函数而可从公共的种子生成的私钥。种子是随机生成的数字。这个数字也含有好比索引号码或者可生成私钥的“链码”。在肯定性钱包中,种子足够恢复全部的已经产生的私钥,所以只用在初始建立时的一个简单备份就足以搞定。而且种子也足够让钱包导入或者导出。这就很容易容许使用者的私钥在钱包之间轻松转移。开发

三、分层肯定性钱包(HD Wallets )

肯定性钱包被开发成更容易从单个“种子”中生成许多密钥。肯定性钱包的最高级形式是经过BIP0032 标准定义的HD钱包。HD钱包包含以树状结构衍生的密钥, 使得父密钥能够衍生一系列子密钥,每一个子密钥又能够衍生出一系列孙密钥,以此类推,无限衍生。

相比较随机(不肯定性)密钥,HD钱包有两个主要的优点。第一,树状结构能够被用来表达额外的组织含义。好比当一个特定分支的子密钥被用来接收交易收入而且有另外一个分支的子密钥用来负责支付花费。不一样分支的密钥均可以被用在企业环境中,这就能够支配不一样的分支部门、子公司、具体功能以及会计类别。

HD 钱包的第二个好处就是它能够容许让使用者去创建一个公共密钥的序列而不 须要访问相对应的私钥。这可容许HD钱包在不安全的服务器中使用或者在每笔 交易中发行不一样的公共钥匙。公共钥匙不须要被预先加载或者提早衍生,而在服 务器中不须要可用来支付的私钥。

四、种子和助记词(BIP-39)

HD 钱包具备管理多个密钥和地址的强大机制。由一系列英文单词生成种子是个标准化的方法,这样易于在钱包中转移、导出和导入,若是HD钱包与这种方法相结合,将会更加有用。 这些英文单词被称为助记词,标准由 BIP-39 定义。

今天, 大多数比特币钱包(以及其余加密货币的钱包)使用此标准,并可使用可互操做的助记词导入和导出种子进行备份和恢复。

让咱们从实际的角度来看如下哪一种种子更容易抄录、阅读、导出以及导入。

16 进制表示的种子: 0C1E24E5917779D297E14D45F14E1A1A

助记词表示的种子:army van defense carry jealous true garbage claim echo media make crunch

因为比特币钱包技术已经成熟,出现了一些常见的行业标准,使得比特币钱包具有普遍互操做,易于使用,安全和灵活的特性。这些经常使用的标准是:

  • 助记码,基于 BIP-39
  • HD 钱包,基于 BIP-32
  • 多用途 HD 钱包结构,基于 BIP-43
  • 多币种和多账户钱包,基于 BIP-44