数字货币钱包奥义

当年入门区块链,读了很多帖子,发现币圈UP主们写的新手教学第一课,基本是如何使用钱包,一上来就一通操作指南,夹杂助记词等莫名其妙的术语,搞得人头大。

为什么玩转区块链需要钱包,这个钱包和支付宝、paypal有什么区别,助记词到底是什么玩意儿,为什么说自己的钱包比交易所的安全,这些问题在新手操作指南里都不会讲。

今天回过头来可以答疑了,让新手朋友们钱包操作的每一步都都明白自己在干什么。

助记词和密码是什么

本系列首篇()介绍过比特币解决信任问题的方法:电子签名 - 通过构建成对的公私钥,让别人不需要知道你的身份,也能确定交易由你发出。而钱包的核心功能,就是生成并保管私钥,让你便捷、安全地收发交易。

而助记词就是用以生成私钥的种子。之所以需要“种子”,是因为私钥的本质是一个密码学函数的输出值,把种子输入进函数,就有了私钥这一函数输出,即假设密码学函数是y=f(x),y是私钥,x就是种子。

但是函数的输入值其实是一系列二进制数,对人类不友好,于是就通过一定的方法转换为单词,方便保管,于是称为助记词。

助记词

你还会发现钱包也要求设置密码,这除了能让你登陆以外,其实密码也是私钥函数输入值的一部分,通过助记词+密码的双重保证,能够加强私钥生成过去的安全性,黑客必须要拥有两个信息,才能偷走你的私钥。

因为同一条链的钱包使用一样的私钥函数,因此只要记住助记词,就能在任一钱包再次生成私钥,并复原交易记录,签发新的交易。因此你可以通过助记词在不同的钱包APP上管理你的资金。不像传统金融,支付宝的资金和微信钱包的资金,肯定不是一个账户里的。

总体而言,生成并保管私钥是钱包的核心功能,因此注册钱包的第一步就是生成助记词,以生成私钥。钱包APP还会提醒你一定要保管好助记词,不然资金就会被盗。

钱包入圈

本系列首篇()还说过,区块链是一个点对点(P2P)网络,没有中心服务器,因此钱包要和网络上各个“点”建立连接,彼此间才能交易。

和链上节点连接涉及到每个链具体的P2P网络结构和路由算法,因此我们看到大多数钱包都只专注于一个链,比如Metamask是Eth钱包。因为不同链的密钥生成算法,网络结构等都不太一样,兼容多链需要的成本较高。

钱包接入网络的另一个问题是,每个链随着时间推移越来越长,交易越来越多,而大多数人是在手机和电脑浏览器上使用钱包的,因此钱包想同步链上所有的历史交易并参与验证并不现实,因此出现了轻节点概念,即钱包的节点通过一定的简化方式,只保存和验证与你有关的交易。

接入网络以后,钱包就开始履行它的核心功能 - 用私钥签名。你使用钱包做的常用操作:关联某个链上应用、发送和接受交易,其实都是在签名,功能单一,可见当前区块链钱包应用还处于非常早期的阶段。

交易所的钱包

中心化交易所(后面简称Cex,centralized exchange)都内置有自己的钱包。比如你在币安交易,则把币打到币安给你生成的钱包地址中。你也会发现Cex并没有生成助记词让保存,这是因为私钥是由Cex自己保存的。因此社区常说,存放在Cex里的币并不真正属于你。

为了方便管理,Cex使用一种叫分层确定性钱包(hierarchical deterministic wallet)的技术,通过一个主私钥,来生成众多的子私钥和子公钥。如此一来,尽管交易所用户千万,也不需要管理纷繁复杂的私钥,只需要一些主私钥就行了。

HD钱包技术带来便利性的同时,也有安全隐患。显然,交易所只要丢了私钥,用户资金就丢失了。事实上,丢币事件对Cex而言可谓是屡见不鲜。目前在流程上,主要有两种方法解决安全问题。

第一是将部分资金放入冷钱包中。冷钱包通常是指类似于银行U盾的东西,私钥生成后保存在冷钱包本地,只有当它通过usb接口和电脑连接时,才会授权签名,因此比较安全。

第二是通过多签技术。即一笔交易需要多方的私钥签名,才能成功。这通过智能合约实现。执行交易的合约在收集了满足要求的签名后,才会真正发起交易。