比特币钱包
虽然本书不侧重技术细节,但为了讲解比特币钱包如何使用,或多或少要涉及相关技术。不过不用担心,只要读者平时使用网上银行或支付宝钱包之类的服务便不难理解。下文的“类比”部分即是面向传统网上银行、支付宝钱包的使用者。
比特币的账户
与传统银行、网站的账户管理系统不一样,在比特币的系统中没有“注册”这个概念,所有的账户都是事先存在于数学空间里的。那么,总共有多少账户呢?有人打过比方,在数学空间里比特币账户数量是地球上沙子总数的2次方,非常庞大。那么,又如何获得比特币账户呢?答案是生成随机数。由于比特币的地址数目实在是太多了,即使随机生成也不会恰巧撞到其他人使用的地址。有人算过,随机生成账户正好撞到别人使用过的地址的概率是连续中5次500万彩票大奖的概率(注意是连续)。也有人尝试过写一个程序不断穷举,希望碰撞到别人使用的地址,好将别人的币盗窃出来,结果徒劳无功。
比特币私钥和地址
每一个比特币账户实际上有三个部分,分别是私钥、公钥和地址。私钥是一个256位的二进制数,用编码表示如5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss;公钥和私钥类似;而地址则是一串Base58编码,比私钥和公钥都短,形如1F3sAm6ZtwLAUnj7d38pGFxtP3RVEvtsbV。知道了私钥就可以通过数学公式得到公钥,但是知道了公钥却无法逆推出私钥,这是数学上的特性;同样,知道了公钥也可以通过数学公式得到地址,但是知道了地址却无法逆推出公钥。简言之,私钥→公钥→地址这个推导过程是从左往右单向的,由数学原理保证。当你想要接收比特币的时候,只需要给别人地址,别人有了你的地址就可以向你发送比特币了,但是千万不能给任何人私钥,因为谁拿到私钥谁就有权花费这个账户上的比特币了。
打个比方,比特币私钥相当于银行账户的密码,比特币地址相当于银行账号,密码不能让任何人知道!而密码是无法修改的,如果担心密码已经暴露,那只能重新建立一个新账户并将资金转移到新账户中。
读者可能有疑问,比特币地址那么长,看起来十分复杂,如果不小心输错了1位会不会导致此次汇款汇给了不存在的人?答案是:不会。比特币地址的末4位取自前面部分的SHA256摘要,也就是说,只要输错任何1位或多位,程序就会判断出输入有误而禁止用户汇出,直到改正为止。
人类第一次用技术保证私有财产不可侵犯
在比特币的世界里,私钥就是控制资产的全部权限,只有拥有私钥的人才可以花费这个账户里的比特币。在这个世界里没有客服,如果不小心弄丢私钥的话,那这些比特币资产就无人可以动用了,相当于永久消失,不存在类似“提供身份证,找回密码”的功能。但是另一方面,即使是政府和法院也无法冻结、没收你的比特币资产(除非你自己主动给他们)。所以,业内李笑来说过“比特币是人类第一次用技术保证私有财产不可侵犯”这句话。
同样可以打个比方,如果比特币系统是银行,没有任何人可以绕过密码而冻结、转移你账户里的资产,而知道密码的只有你一个人,就连银行自己都不知道。假如你忘记了自己的密码,账户里的资产就彻底没了。
比特币钱包的种类
通常来说,比特币钱包的功能是生成新的比特币地址(账户)、统计账户余额、显示历史交易、签名新的交易(即花费比特币)。比特币钱包分为以下几类。
1.PC端钱包。顾名思义,PC端钱包就是运行在Windows、Linux或Macos上的钱包软件,还可以细分为重钱包和轻钱包,轻钱包无需下载区块链,使用比较方便。PC端钱包的私钥通常存储在文件中,不过也有网站和用户联合保管资产的钱包。目前PC端钱包已超过10款,最典型的PC端钱包就是比特币的官方版本——比特币核心钱包(Bitcoin Core),这是一款“重”钱包,对于初级用户来说,这款钱包并不是最好用的,后文还会提到它。
2.网页钱包。网页钱包即通过网页访问的钱包,有的也提供手机端App。大部分网页钱包实质上是网站代为管理,用户并不掌握私钥,私钥掌握在网站手中,用户靠传统的用户名、密码方式登录和转账。笔者觉得,该类代管钱包和传统中心化银行的差异不大,安全性依赖于网站的信用,不建议大额资金长期存在代管钱包中,如果不得已非要存在网站上,务必要先了解网站资质。
3.手机端钱包。手机钱包主要有两种:一种是网页钱包的客户端,和网页钱包本质一样;另一种是简化版的PC端钱包,私钥存在手机内存里,和PC端钱包中的轻钱包本质一样,只是为了方便携带和使用。
4.硬件钱包。硬件钱包是一种类似于U盘的东西,但是只有收发比特币的功能,它并不是真的U盘,私钥存在硬件内部,在花费比特币的时候需要用到它,通常需要客户端软件的支持。但从原理上来说,硬件生产商需要有足够的诚信,我们才能放心使用,假如他们在硬件中留有后门或者私藏私钥,我们的比特币就十分危险了,因此笔者并不推荐采用硬件钱包(然而这话也不绝对,市面上已经出现了很多开源的硬件钱包,甚至有基于树莓派的,因此硬件钱包未必都是危险的)。
5.纸钱包。纸钱包又称为非常规钱包,仅仅是把私钥以二维码或别的形式记录在纸上,使用的时候再录入客户端,目前来看比较小众,并不推荐。
6.脑钱包。和纸钱包类似,脑钱包也是非常规钱包,将一句话结合换算公式作为私钥,要求这句话不容易被别人猜到,长度建议30字以上,但要牢记在脑子里,目前来看比较小众,也不推荐。
总的来说,笔者推荐其中的2~3种:大额的话放自己保管私钥的PC端钱包或者手机端钱包,并且在使用之前备份好私钥;小额的话放信誉良好的代管网站(交易平台或钱包商)。
比特币核心钱包的使用
无论比特币协议添加什么新功能,第一个发布更新的都是官方钱包——比特币核心钱包。虽然比特币核心钱包并不是最好用的钱包(相反,用起来比较麻烦),但是比特币核心钱包经过了足够长时间的检验,是官方开发的钱包软件。下面将向你介绍比特币核心钱包这个软件。
在笔者写稿时,比特币核心钱包的最新版本是0.13.1。图2—1是比特币核心钱包的中文版首页。
图2—1 比特币核心钱包的中文版首页页面
打开网页后,在顶栏里找到比特币核心钱包“Bitcoin Core”链接。同一个版本有6个分支,分别是Windows安装版、Windows绿色解压版(zip)、苹果电脑版(Mac OS X)、Linux for x86版、Linux for ARM版和Ubuntu专用版(PPA),每种版本还细分32位和64位的版本。下面以Windows版为例演示一下软件功能(如图2—2所示)。
图2—2 比特币核心钱包版本的选择页面
下载安装版或者绿色解压版,如果是安装版,安装过程可以一直按“下一步”,该软件不会捆绑安装任何恶意软件,默认安装即可,然后点击桌面的快捷方式启动;如果是绿色解压版,启动文件是“bin”目录下的“bitcoin-qt.exe”。如果是第一次启动,软件会询问您数据文件存储在什么位置,假如C盘的空间足够大,安装在默认的路径即可;否则,可自定义设置将数据存放在其他盘,然后点击“OK”确认选择(如图2—3所示)。
图2—3 第一次启动比特币核心钱包的“欢迎”界面
图2—4是比特币核心钱包的“正常启动”界面,每次启动软件都会先弹出一个提示框,提示后台在加载数据,请耐心等待,等待时间随数据规模变化,可能较长(这也是“重”钱包的一大缺点)。
图2—4 比特币核心钱包的“正常启动”界面
接下来就进入软件了。在图2—5最下方有一个进度条,显示同步数据的进度。所谓“同步”,就是下载完整的区块链,这个过程非常漫长(目前需要几周的时间,轻钱包的好处是没有这个步骤)。一旦同步完毕,就可以正常使用全部功能了。菜单栏下面有四个选项卡,分别对应四个界面。其中“概况”界面显示钱包余额和最近的交易记录(包括花费和收入)。
图2—5 比特币核心钱包的“概况”界面
“发送”界面用于花费比特币,基本操作就是在“付给”栏里填入对方的地址,再填入“金额”,然后点击“发送”(如图2—6所示)。如果设置了钱包密码,还要在弹出的提示框中输入密码并确定。
图2—6 比特币核心钱包的“发送”界面
“接收”界面用于生成一个接收请求,方便对方支付,但通常情况下很少使用(如图2—7所示)。
图2—7 比特币核心钱包的“接收”界面
图2—8是比特币核心钱包的“交易记录”界面,“交易记录”界面可以查看完整的交易记录(概况界面里的交易记录是部分的,这里的是完整的)。
图2—8 比特币核心钱包的“交易记录”界面
读者可能会奇怪接收地址在哪里,其实需要点击“文件”菜单里的“正在接收地址”选项,在弹出的窗口中可以查看自己的接收地址。
图2—9 比特币核心钱包的“文件”菜单界面
严格来讲,图2—9里列出的地址并非全部地址,因为还有找零地址,这里不会列出,但是也不影响使用。点击图2—9左下角的“新建”按钮,可以随时生成新的地址。
图2—10 比特币核心钱包的“接收地址”界面
“设置”菜单中还有一个重要选项就是“加密钱包”,该步骤和备份钱包步骤应该在第一时间操作,先加密,后备份,再接收比特币。
图2—11 比特币核心钱包的“加密钱包”选项界面
点击“加密钱包”,输入相同的密码两次后点击“OK”按钮(如图2—12所示)。
图2—12 比特币核心钱包的“密码设置”对话框界面
“备份钱包”在第7章中还会再讲。这些知识是必要的,因为已经有很多人由于不了解比特币钱包的机制而遭受财产损失。
比特币核心钱包的其他版本如Linux版、Mac版等功能,其操作大同小异,这里不赘述了。
比特币核心钱包的最大缺点是使用前需要同步,这将花费很多时间及硬盘空间,因此被形象地称为“重钱包”;与之相对的,目前市面上也有很多“轻钱包”。轻钱包将数据放在企业的中心服务器上,但是私钥留在自己的电脑上,企业用它们的硬盘和网络代替我们完成同步,如果轻钱包是开源的话,也是可以放心使用的。轻钱包的种类很多,可以到比特币官网了解和下载。