狭义上数字资产钱包为私钥存储工具,广义上含余额查询、发送交易等基本功能。
钱包行业竞争激烈,目前无较好盈利模式;约70%的钱包支持移动客户端,对网页端支持度最弱,仅占26%;61%的钱包为开源项目;65%的钱包提供行情、理财、资讯等附加功能,其中提供交易功能的钱包数最多,约占75%。
钱包种类繁多,对钱包从连网与否、数据存储、私钥存储、主链关系以及私钥签名这五方面进行了分类阐述,分析了其在安全性、易用性和功能性等策略上的不同。
从技术原理出发,详细阐述了钱包助记词、Keystore、私钥、公钥和地址产生的方法及其相互关系。
钱包作为区块链世界入口的功能将不断发展完善,金融属性也将日趋强化,有望成为多种资产一体化管理入口、DAPP应用入口、通证使用权、收益权等功能性入口
第一章 数字资产钱包产业现状
1.1 钱包产业概述
根据Statista统计,2018年Q1全球数字资产钱包用户数为2395万人,同比增85.80%,环比增长11.34%,增长十分迅猛。
数字资产钱包最狭义的定义是储存私钥工具,广义上则应该包含数字资产余额查询,发送交易等基本功能(广义上也能把交易所理解成一种钱包)。
从不同的角度出发,对数字资产钱包的定义和分类都不相同,比如从钱包是否连网来看,可以分为冷钱包和热钱包,从数据存储完整性来看又可分为全节点钱包和轻节点钱包等。
从未来发展来看,钱包不仅将作为区块链世界的入口,还会承担数字资产理财管理,交易兑换等扩展性金融功能,其重要性值得数字资产相关从业者关注。
1.2 钱包产业市场分析
钱包作为区块链产业必不可少的一环,随着区块链产业的发展和扩张也呈现并行加速的现象,越来越多的项目方加入数字资产钱包领域。相较于全球60亿人口和40亿互联网用户来说,数字资产钱包用户占比还非常小,未来市场潜力非常巨大。
如下图所示。当然也意味着区块链目前还处于行业发展的初期,数字资产钱包作为行业配套基础设施也同样处于行业早期。
数字资产钱包的安全性是最受关注的话题,特别是私钥的存储机制甚为关键,约61.29%的项目选择项目开源,一方面接受各方对其代码进行监督审查,另一方面也更容易获得技术极客的帮助,不断地改进升级,如图1.6所示。
1.3 钱包商业模式分析
钱包作为私钥管理工具,目前还没有很好的盈利变现模式,基本都处于早期积累用户和沉淀资金的状态。 为寻求收入来源,各钱包纷纷推出周边增值服务,一方面为增加用户黏性,提高流量入口,另一方面也试图增加收入来源。如提供理财、资讯、POS挖矿、交易、资产聚合等功能。目前有65%的数字资产钱包项目都提供附加功能,如图1.9所示。
在提供附加功能的钱包项目中,提供数字资产交易或兑换服务的钱包数量最多,约占75%;其次为行情服务,约占60%;提供资产聚合服务的钱包项目最少,仅占5%,如图1.10所示。
❖交易及兑换类服务
钱包用户天然拥有交易需求,如果币不用提出钱包就可以实现交易,不但减少了用户提币转币的操作步骤,减少了犯错的概率,也增强了用户黏性,为钱包项目的后续转型提供了很好的发展方向和资金沉淀。不过内置交易所极大地增加了系统的复杂度,为本身对安全性要求较高的钱包类产品引入了更大的风险,用户资金安全性将受到一定程度挑战。
❖行情资讯服务
钱包内置丰富的新闻资讯、行情快报、项目简介、K线图、大额资金流动监控、代码活跃度等数字资产市场行情信息。
基于以上提供的各类增值服务,目前主流钱包项目方获得盈利的几种方式如表1.1所示。
第二章 数字资产钱包分类概述
随着行业的发展,市场上出现的钱包产品越来越多,使用的技术、策略以及侧重的功能点都不相同,本章将从五个角度出发,对现有的钱包产品做一个分类梳理和总结。如图2.1所示,可以从五个角度对钱包进行分类梳理,每一种分类方式其实都体现了该钱包所采用的策略重点,以及其面向的用户群体。有的体现了安全性、有的坚持易用性、而有些则强调功能。
2.1按是否连网分类
数字资产钱包本质上是存储私钥的工具,私钥的安全性至关重要,为了将安全性做到极致,出现了不连网的冷钱包,因此可以依据钱包是否连网分为冷钱包和热钱包。目前冷热钱包的项目数量占比如下图所示,冷热钱包数量基本符合二八分布定律。
❖热钱包
特点:保持实时连网上线的钱包通常称为热钱包。
【猫说】:热钱包相对于冷钱包使用起来更方便,既可在PC上使用,也可在手机等移动终端使用,还可对钱包内资产随时进行操作,因此目前83.87%的钱包都为热钱包模式。但正由于其连网,也给了黑客攻击的基础条件,钱包安全性会受到挑战。不过通常钱包项目方会对存储的私钥以及通讯数据包进行加密处理,一定程度上也能避免黑客轻易入侵。
❖ 冷钱包
特点:冷钱包通常指不连网使用的钱包,也叫离线钱包。根据实现方式的不同,还可以分为硬件钱包和纸钱包。硬件钱包用来生成密钥和保存密钥,设备本身不会泄露或者输出密钥,而只是在我们按下某个按钮或者输入设备密码后显示密钥的保管情况。纸钱包,顾名思义就,就是把密钥记在纸上,然后把纸锁在保险柜里。
【猫说】:冷钱包将私钥存储在完全离线的设备上,相比于热钱包是更安全的方法,但成本更高易用性更差,需要一台不连网的电脑专门用于安装离线端。虽然冷钱包相对于热钱包更安全,但是冷钱包也不是绝对安全,可能会遇到硬件损坏,钱包丢失等情况,需要做好备份。
2.2按数据存储完整性分类
数字资产钱包通常和区块链节点关系紧密,依据钱包存储节点账本数据的完整性可以将其分为全节点钱包和轻钱包,其中轻钱包也包括SPV节点钱包。由于全节点钱包需要下载所有的账本数据,会占用大量的存储空间以及计算资源,不适用于手机等移动终端,也不便于普通用户使用,故目前市面上约90%的钱包都为轻节点钱包,如下图所示。
❖全节点钱包
特点:全节点钱包参与到网络的的数据维护中同步了区块链上的所有数据,具有更有隐秘、验证更快等特点。但是由于数据量比较大,会导致扩展性低。
【猫说】:由于需要同步链上信息的原因,很多全节点钱包的币种单一,不能够支持多种数字资产,一般为官方钱包。此外,全节点钱包需要占用很大的硬盘空间,并且一直在增长。每次使用前需要先同步区块数据,会导致易用性变差。
❖轻钱包
特点:轻钱包是为了解决全节点钱包需要占据很大的硬盘空间而出现的,不需要存储完整的区块数据。虽然轻钱包不会下载新区块的所有数据,但是它会对数据进行分析后,仅获取并在本地存储与自身相关的交易数据,运行时依赖比特币网络上的其他全节点,一般在手机端和网页端运行。
【猫说】:轻钱包可以有更多的扩展性,一方面可以在币种上进行扩展,用来很方便地对多种资产进行管理。另一方面可以在运行DAPP。因为它只同步和自己相关的数据,所以很轻便。轻钱包根据实现原理可以分为中心化钱包和去中心化钱包。比如,客户端钱包,浏览器钱包,网页版钱包等。
2.3按私钥存储方式分类
私钥是数字资产领域安全的核心,而钱包的本质其实是帮助用户方便和安全地管理和使用私钥,因此,私钥的存储方式非常关键,按照私钥是否存储在本地,我们可以将钱包分为中心化钱包和去中心化钱包两种类型,目前去中心化钱包为主流模式,约占82.76%。
❖中心化钱包
特点:私钥不由用户自持,而是由钱包项目方在链下中心化服务器上保管,通常资金也交由服务方托管。
【猫说】:中心化钱包通常也叫Offchain钱包,私钥和资产都交由钱包进行中心化管理,此种方式的钱包产品用户不必担心私钥丢失而导致资金损失,通常可支持密码找回功能;不过资金风险会更集中在钱包项目方,中心化服务器一旦被黑客攻克,用户将遭受不必要的损失。
❖去中心化钱包
特点:私钥由用户自持,资产存储在区块链上。
【猫说】:去中心化钱包通常也叫Onchain钱包,私钥的保管都转交给用户,若私钥遗失,钱包将无法帮用户恢复,资金将永久遗失;但去中心化钱包很难遭受黑客的集中攻击,用户也不用担心钱包服务商出现监守自盗的情况。
2.4按主链关系分类
目前各区块链公链都是较为独立的平台,平台和平台之间缺乏直接的互通,因此各类钱包出现了两大分化,一种是专门针对某一公链平台的主链钱包,通常由平台项目方或者社区开发提供;另一种则是同时支持多平台接口的多链钱包,支持的资产类型较为多样。依据火币区块链研究院整理的数据显示,主链钱包约占35.48%,支持多链的钱包占绝对多数,随着行业的发展,这一比例可能进一步被拉大。
❖主链钱包
特点: 对于可以定制化发行通证的公链我们定义其为平台类公链,此类公链上可以运行多种DAPP,平台专属钱包不仅是为了满足平台类通证正常使用所必备的核心组件,也可以作为一个应用商店,对基于其平台开发的DAPP进行集中宣发和链接跳转。
【猫说】: 对于平台类公链来说,平台通证通常具备一定的使用功能,平台上的各类角色所开展的活动都是围绕通证来进行,比如说矿工、平台用户、存储节点或者是计算节点等,因此需要钱包来作为各方进行通证存储和流通的节点。钱包也可以作为平台类项目是否可用的判断标准之一。
❖多链钱包
特点: 可支持多种主链平台通证的钱包。
【猫说】: 不同的主链通常采用的技术方案都各不相同,如果要支持多种主链平台的通证接入钱包,则需要逐一进行接口开发,有一定的开发难度和工作量。此类钱包对于支持内置交易所和跨链互兑业务有着天然的优势。
2.5按私钥签名方式分类
为了加强数字资产的安全性并配合某些应用场景使用,出现了需要多方私钥签名才可使用钱包的策略,因此可将钱包分为单签名钱包和多签名钱包。依据火币调研的统计数据分析,如下图,支持多签名的钱包仅占25.81%,单签名模式是市场上更受欢迎的方式。
❖单签名钱包
特点:只需单个私钥签名即可交易。
【猫说】:单签名模式简单,用户可操作性强,但由于只有一个密钥,风险也更集中,私钥持有账户的单点沦陷——如果丢失或者泄漏私钥会可能直接导致账户中所有的资产的丢失。
❖多重签名钱包
特点:必须有2个(或多个)私钥同时签名才可以交易。
【猫说】:通常一个私钥用户保存,一个交给服务器,如果只有服务器私钥被盗,黑客没有本地私钥,交易时无法签名的。也可用于公司或者组织内由多方共同管理财产场景下使用,密钥由多位成员管理,需多数成员完成签名才可动用资产。多重签名机制相较于单签名是更安全了,但易用性却受到很大的影响,用户需要理解一些技术细节,还需要多方协同,学习和使用成本高了不少。此外,多重签名的机制更复杂,也带来一些安全隐患,如parity钱包的多重签名机制就被黑客利用,令逾15万个以太坊被盗。
第三章 数字资产钱包技术实现原理
3.1技术总览
数字资产钱包技术实现主要包含三个部分:
1.钱包自身设计,如何生成助记词,keystore和密码等;
2.私钥、公钥和地址产生的方法;
3.钱包提供商远程调用各公链RPC接口设计;
如下图所示,可总体概括数字资产钱包实现的技术流程:
众所周知,私钥为一串无规律字符串,非常不便于记忆,使用更是不方便,所以从钱包设计的角度,为简化操作同时又不失安全性,就出现了助记词的方法。一般情况下,助记词由一些单词组成,只要记住这些单词,按照顺序在钱包中输入,就能打开钱包,下文将详细阐述其中的原理和方法。
3.2钱包设计框架
3.2.1生成助记词(BIP39标准)
助记词库有2048个词,用11位可全部定位词库中所有的词(2^11=2048),作为词的索引,故一个词用11位表示,助记词的个数可为(熵+校验和)/11,值为12,15,18,21,24。规定熵的位数必须是32的整数倍,所以熵的长度取值为128到256之间取32的整数倍值,分别为128,160,192,224,256;校验和的长度为熵的长度/32位,所以校验和长度可为4,5,6,7,8位。
生成助记词的具体步骤如图所示:
1)生成长度为128〜256位(bits)的随机序列(熵),以128位为例;
2)取熵SHA256哈希后的前n位作为校验和(n= 熵长度/32),图为128/32=4;
3)随机序列(熵) + 校验和拼合为一个字符串,图为128+4=132;
4)把步骤3得到的结果每11位切割,图为 132/11 =12个字符串;
5)步骤4得到的每个字符串匹配预先定义的2048 个词库里的单词;
6)步骤5得到的结果就是助记词串,这是一个有顺序的单词组,也就是我们一直说的助记词。
3.3私钥、公钥和地址产生的方式
从私钥推导出公钥、再从公钥推导出公钥哈希都是单向的,采用不可逆算法,也就是常听到的椭圆曲线算法:如图所示。
整体的公钥和地址生成过程如图所示:
1)通过随机数生成私钥;
2)私钥经过SECP256K1算法处理生成了公钥;
3)同SHA256一样,RIPEMD160也是一种Hash算法,经过一次SHA256 + 一次RIPEMD160哈希运算,由公钥计算得到公钥哈希;
4)将一个字节的地址版本号连接到公钥哈希头部,进行两次SHA256运算,将结果的前4字节作为公钥哈希的校验值,连接在其尾部;
5)将第4步结果使用BASE58进行编码,即得到钱包地址。
从字节层面拆开来看,公钥的详细生成流程如下图所示:
1)私钥是32字节(256位)的随机数;
2)在私钥头部加上版本号;
3)在私钥尾部加上压缩标志;
4)将私钥进行两次SHA256哈希运算,取两次哈希结果的前4字节作为校验码,添加到压缩标志之后;
5)将2,3,4步得到的随机数用BASE58进行编码,就可以得到WIF(Wallet import Format)私钥(用于钱包之间导入导出私钥,是用户较为常见的密钥格式)。
6)私钥经过椭圆曲线乘法运算,可以得到公钥。公钥是椭圆曲线上的点,并具有x和y坐标。
从字节层面拆开来看,钱包地址的详细生成流程如下图所示:
1)将公钥通过SHA256哈希算法处理得到32字节的哈希值;
2)后对得到的哈希值通过RIPEMD-160算法来得到20字节的公钥哈希Hash160;
3)把版本号+公钥哈希Hash160组成的21字节数组进行双次SHA256哈希运算;
4)将哈希值的前4个字节作为校验和,放在21字节数组末尾;
5)对组成25位数组进行Base58编码,最后得到钱包地址。
3.4 恢复钱包的N种方式
了解了钱包的基本技术原理以及助记词、Keystore、私钥、公钥和地址的关系后,遇到私钥丢失等情况我们就可以有条不紊地进行钱包找回工作了,如图3.11所示,只要不是私钥、密码、助记词同时全部丢失,你还有N种方法可以恢复钱包。
4.2 钱包安全策略思维设计
【钱包的安装:imtoken为例】
题库链接:
https://mp.weixin.qq.com/s/inL1xvKXs-NW4AHWKATldQ
钱包安装:
附录1:常见名词
1. 密钥:是指某个用来完成加密、解密、完整性验证等密码学应用的秘密信息。在对称密码中,加密和解密用的密钥是同一个。而在非对称密码中,加密和解密用的钥匙不同,根据是否公开可分为公钥和私钥。
2. 私钥:在非对称密码中,加密和解密用的钥匙不同。根据是否公开,可分为公钥和私钥。公钥和私钥成对生成和使用。其中由用户自己保管、不对外公开的,称为私钥。
3. 公钥:在非对称密码中,可对外公开并传递的密钥称为公钥。
4. 地址:通常由公钥产生。公钥经过多种加密算法、哈希算法等生成用户钱包地址,类似传统金融中的银行卡号。
5. 数字签名:类似写在纸上的普通的物理签名,转移资产的时候需要用户签名才能启动。多重签名,则是地址允许多个用户用一个公钥单独发送部分地址,共同管理资产。
6. 助记词:将难以记忆的私钥通过加密算法转换成一组常见单词。私钥与助记词之间可以互相转换。
7. Keystore:通过加密算法加密过后的私钥,通常以文件格式储存。
8. 冷钱包:离线钱包,在没有连网环境下使用的,统称冷钱包。
9. 脑钱包:脑钱包的主要原理是用可预测的算法把口令转换成一对公私钥,用户通过输入自行编写的一串字符串,即可与一个笃定的密钥生成一一对应的映射,是一种密钥生成方式。
10. 硬件钱包:用专业的硬件存储数字资产,将数字资产私钥单独储存在一个芯片中,与互联网隔离,即插即用。
11. 纸钱包:将私钥或助记词以字符串、二维码等形式记录在纸张上来进行保存和使用的方法。
12. 热钱包:即连网又称在线钱包,处于连接互联网状态,私钥存储能被网络直接访问的钱包。
13. 重钱包:全节点钱包,保存私钥的同时,需同步所有区块链数。
14. 轻钱包:不保存所有区块的数据,只保存跟自己相关的数据的钱包。
15. 去中心化钱包:用区块链网络上其他全节点,不用保存所有区块数据,需保存和同步与自己相关的数据,无需第三方管理存储你的私钥,私钥由本人控制。
16. 中心化钱包:用户无私钥,数据均完全依赖运行提供钱包产品的中心化的第三方。
参考:
链接:https://mp.weixin.qq.com/s/BDr8QlXkLDgUzZLoHYmh8A