五张图带你看懂比特币钱包

96
Wilbur_
2017.06.25 09:09* 字数 1253

今天刚读了《精通比特币》钱包的那一章,为了方便大家理解,我尽量多用图片配合说明让刚入门的同学更容易理解比特币钱包到底是什么,老手们也请指正一下我的错误。

基本原理

大家一定都听很多人强调过要保存好钱包的私钥,否则后果很严重。为什么呢?废话不多说,咱们先上图

私钥,公钥和地址的关系图(图片来自[《精通比特币》第四章](http://zhibimo.com/read/wang-miao/mastering-bitcoin/Chapter04.html))
从这张图我们可以看出私钥是可以生成公钥,公钥可以生成比特币地址的,相反则不行。因为比特币是由一个不可逆的算法完成这个流程的。这也就是为什么我们可以放心的把比特币地址给别人看而不用担心自己财产的丢失。但如果别人知道了你的私钥,那么他也可以复制一份跟你一样的钱包,随便挪用里面的财产,到时候咱哭爹喊娘也没用。

不可逆的算法

比特币是使用椭圆曲线乘法作为其公钥的基本算法,咱们用一张图来说明什么是椭圆曲线算法。上图之前数学家们请先受我一拜……

椭圆曲线算法示意图(图片来自[《精通比特币》第四章](http://zhibimo.com/read/wang-miao/mastering-bitcoin/Chapter04.html))

我们可以通过这个算法从私钥计算得到公钥,而且这是个不可逆转的过程!有了这个算法我们才能生成不可伪造的数字签名。也就是说你不可能通过一个签名或者公钥倒推出那个人的私钥,这样既保证了交易人的财产安全,也可以保证一定的隐私,因为一个私钥可以生成多个公钥(后面会解释)。

用类比来理解公钥和私钥

在用类比理解公钥和私钥之前,我们要理解比特币钱包实际上是不包含比特币的,比特币钱包是由私钥公钥所组成的数据库。比特币本身是存储在区块链中的。而用户用私钥来签名交易,从而证明他们有这笔交易。拿类比来说,公钥就像支票的账户,可以负责转账或者收款,而私钥就像签名一样,负责在支付或者提款的时候证明你是该财产的拥有者。当你用私钥签名一笔交易之后,那些交易里面提到的比特币就会有记录,而这记录是全网人都能看到的。因为比特币就存储在区块链当中。矿工们则负责验证这笔交易,同时也会收取一些费用,这笔记录就会留在区块链里面,没人能篡改。(可以想像一个巨大的记账本在记录着所有的交易,而且全部的人都能看到这些交易,同时这些记录还擦不掉。)

区块链动态图

什么是助记词?

还记得我们在imtoken上面的助记词吗?它是一个能恢复整个钱包的重要数据,是在创建钱包时产生的。创建过程如下

1.创造一个128到256位的随机顺序(熵)。
2.提出SHA256哈希前几位,就可以创造一个随机序列的校验和。
3.把校验和加在随机顺序的后面。
4.把顺序分解成11位的不同集合,并用这些集合去和一个预先已经定义的2048个单词字典做对应。
5.生成一个12至24个词的助记码。

用一张图表来举例:

表4-6 128位熵的助记码以及所产生的种子

上面的介绍和图表均来自《精通比特币》第四章

什么是种子?种子就是能生成主密钥的数据,钱包所有的数据都衍生自这个种子。(这也就是为什么它叫“种子”了嘛!)下面这个树状图能帮助咱们理解种子的功能


种子树状图(图片来自[《精通比特币》第四章](http://zhibimo.com/read/wang-miao/mastering-bitcoin/Chapter04.html))

简单来说有了种子我们就可以再弄出一摸一样的钱包,即使之前的钱包毁了也没关系。所以这也是为什么你一定不能让别人知道你的助记词,不然人家可以“复制”个一摸一样的钱包出来,并且随便用…

什么是冷钱包?

冷钱包是一种线下存储比特币的方式,诶等等,不是刚说比特币都是存在区块链里面的吗?怎么又有线下存储了呢?先别急哈,还记得我们说过比特币钱包只是包括私钥和公钥的一个数据库吗?那么私钥是可以线下生成并永远不在电脑系统中存储,我们称作这种存储方式为冷存储。这样黑客是不会找到你私钥的信息的,所以冷存储也相对较为安全。过程大概是这样的:我们先把生成种子的代码下载下来,然后断网,生成密钥之后再打印出来,把这个信息放到保险箱或者银行的金库里面,之后你往这个密钥生成的比特币地址里面转账就实现了一个简单但非常有效的冷存储。我们也称这种冷钱包为“纸钱包”。下面是一个纸钱包的例子

(图片来自[《精通比特币》第四章](http://zhibimo.com/read/wang-miao/mastering-bitcoin/Chapter04.html))

总结

这篇文章总结了一些基本的钱包知识和概念,目的是让我们这些刚进入区块链的小白更容易理解区块链到底是怎么运作的,相关的数学概念和代码也没有探讨,让各位程序员大大见笑了。大家喜欢的话我之后会进一步探讨一些更深的概念以及他们运作的原理。

区块链
Web note ad 1