第0章 引言我在2012年的时候,教我爸爸使用支付宝。对于一个完全没有接触过第三方支付的人来说,要让他接受支付宝是安全可靠的,至少是和银行的安全性相当的,其实非常难。我没有多废话,而是直接先让我爸爸注册了一个支付宝账号,让他知道支付宝APP、账号和密码这三个最基础的概念。
同样的,比特币对绝大多数人来说都是相当的陌生,在使用之前必须掌握的三个基础概念是比特币钱包、地址和私钥。
第1章 银行账号和密码我们在银行里存款的所有权是通过银行账号和密码来确立的,这个非常好理解。你去银行开户时,会登记身份证信息,身份证是全国唯一的,你的银行账号也是全国唯一的。你开户时设有密码,这是你可以操作账户里的钱的凭证。
如果有人要向你汇款,你只需要将银行账号告诉他就可以了。银行账号是可以公开的,只要密码不泄露就是安全的。
即使是你的银行卡遗失了,只要不被知道你密码的人捡走了,你的钱也是安全的。你只需要拿身份证去银行补办就行了。这就是说,用户存在银行的钱其实并不是存在银行卡里,而是存在银行里的。
类似的,如果你在手机里装一个网银APP来操作你的银行账号里的钱,你的钱并不是存储在手机里的,你的手机遗失了,钱也不会丢。换个手机装个相同的APP,然后用账号和密码登录,你又可以使用网银了。当然如果真丢了手机,最好及时换个密码。支付宝的账号及密码,以及微信支付的账号和密码都和银行类似。
第2章 比特币地址和私钥比特币的所有权是通过私钥和地址来确立的。我们可以先简单地用类比来理解,私钥就类似于银行账户密码;地址就类似于银行账号。新建一个比特币地址不像银行开户那样需要身份证,用手机或电脑下载一个比特币钱包,就可以生成一个比特币地址。下面就是一个比特币地址:
例子:3Ke8hSQEpFvsjaeKc7GT68561Lv1idyYUb(别转币进去,不可找回)
生成一个比特币地址的同时就会有一个私钥被生成,严格来说是先生成私钥,然后通过私钥使用加密函数来计算出地址。但我们这里不做太严格的区分,如果太严格的话,我们需要理解更多的概念,但这些知识细节不会影响到我们使用比特币。下面就是一个比特币私钥:
例子:KxkmRGmtTJ3nYyTwaU2uQPCPFWjjLKTT987Z2vqXG3itByMa2pDP
作为比特币用户,我们很少会直接看到私钥,一般情况下,私钥是被存储在钱包文件里,由钱包软件进行管理。如果你不对钱包进行加密的话,甚至你可以不需要使用密码就可以发送你的比特币。当然最好别这么干,一定要给钱包加密。如果有人要向你发送比特币,你只需要将你的地址告诉他就好了。而如果你要向他人发送你拥有的比特币,你需要使用钱包软件来完成“私钥签名”构造一笔交易,然后通过网络去广播交易。虽然这里用了很学术的话语来描述,但事实操作过程其实就和你用支付宝向他人付款是一样的。将收款方的地址复制到你的比特币钱包的要“发送给”(不同的钱包会有不同的命名,但意思都一样)这一栏。然后填写你要支付的金额。接着输入你之前设定好的密码,就可以发送了。
第3章 比特币钱包正如我们使用钱包来存放人民币一样,存放比特币也是需要“钱包”的。钱包是我们用来生产私钥和地址、管理私钥和地址、接收和发送比特币的工具。比特币钱包有很多种,有PC端的也有手机端的,也有专门的一个设备的硬件钱包,甚至还有用纸写上私钥的纸钱包。
在电脑和手机上的比特币钱包就是一个软件。这个网站提供了大多数钱包软件下载:
https://bitcoin.org/en/choose-your-wallet比如Bitcoin Core钱包就可以安装在电脑上,安装完后。你就可以打开钱包,然后生成地址和私钥。而安装后在相应的文件夹里会生成一个叫wallet.dat的文件。这个文件里存的就是你的私钥。打比方说,这个wallet.dat文件就相当于银行卡,上面写着你的银行账号,但wallet.dat里还写着你的取款密码。
所以要注意保护好你的wallet.dat文件。当然你可以对wallet.dat文件加密,来提高安全性,而且装好钱包要第一时间设置密码。所以说钱包的精髓就是用来保存私钥的,也就是任何可以保存私钥的东西都可以被称为钱包。电脑有钱包,手机也有钱包。纸钱包就是把私钥记录在纸上的钱包。
只要有私钥,就代表了你拥有了对应的比特币。所以保管私钥的钱包非常重要。这里有个很白痴的问题,我新装一个钱包新生成一个地址,里面是不会有比特币的,天下不会掉馅饼的。我要先往地址里打比特币,然后才会有币。这和你去银行开户,你不存钱进去就不会有钱是一个道理。
第4章 私钥和地址从哪来?上面讲到我们是用钱包来生成比特币私钥和地址的,它的生成过程本质上是计算一个随机数。甚至我们使用抛硬币的方式也可以生成比特币的私钥,然后通过手工计算来算出地址。这是因为私钥就是一个随机选出的数字而已。通过抛硬币将正面向上计为0,反面向上计为1,连续抛256次,就随机得到一个256位的二进制数字。这个数字就是私钥。
这个随机性有多随机呢?全世界的人随便怎么抛,被抛出两个相同的256位二进制数字的概率无限接近零,就是不可能出现相同。让计算机去抛硬币来碰私钥,穷尽全地球的计算机无法抛出相同的私钥。所以这样私钥只要生成出来,就是全地球唯一的,那它就可以被用来标识所有权而不用担心和别人重复。
有了私钥,就可以通过加密函数来生成地址。这个生成方向是单向的。也就是你知道了地址是无法通过解密方法来计算出私钥的。就目前的人类计算机运算能力,穷尽全地球的计算机也破解不了。所以说你可以很放心地把地址发给别的,公布到网上。但千万别把私钥透露给别人,否则你的比特币就不是你的了。
第5章 比特币私钥存在哪?比特币地址和私钥都是可以不存储在网络上的。就比如按上面抛硬币抛出来的私钥,就可以不出现在网络上。
比特币私钥和地址更是可以独立于你的钱包而存在的。就是说你只要备份了你的私钥,那即使是你的比特币钱包丢了,或者电脑坏了,手机被人偷了,都可以再换一个电脑装一个钱包,然后使用导入私钥的办法恢复你的比特币。这和你装有支付宝的手机被人偷了,然后你再买一个手机再装一个支付宝APP,然后使用账号和密码登录就可以看到你的钱是一个道理。
你可以在一台永远不上线的电脑上装一个比特币钱包软件,然后生成地址。这时候你的私钥是完全没有接触过互联网的。这个地址也可以用来接收比特币,而且你也可以在这台电脑上用私钥签名构造“交易”,然后到另外连网的电脑钱包上去广播来发送比特币到别的地址。这就是离线钱包,又叫冷钱包。是最安全的存储比特币的方式。
真正必须存在比特币网络里的东西是“交易”,比如你的地址收到一笔比特币,这次“交易”是会被比特币网络记录的,这是不能离开网络的。但私钥和地址都可以和网络无关。这样的设计实现了比特币许多非常棒的功能。
第6章 结束语比特币是由一系列概念和技术作为基础构建的系统,理解起来并不会很难,只要一个一个概念慢慢摸清楚,就OK了。