探讨加密货币钱包的运行原理、秘钥管理以及智能钱包设计思路,理财等增值服务将是留住用户的核心功能。
原文标题:《向互联网产品迈进的加密钱包》
撰文:郑嘉梁,HashKey Capital 研究总监
加密货币钱包是加密资产的进行储存和管理私钥的必要工具,经过多年发展已经形成了以分层确定性(HD)钱包为主流产品、多个规范性行业标准确立的局面。
未来加密钱包会在安全性、易用性、附加价值等多个层面进行发展,广义的智能钱包的出现提供了这很好的发展思路,但是概念和产品都较新,产品设计思路体现着不同团队对加密世界的理解,钱包能提供的越来越多样化,会出现用户体验上可以和互联网产品比较的钱包。虽然传统钱包占据了主流,但是我们认为加密钱包的市场大幕才刚刚开始。
本文将从加密钱包的运行原理开始,详述并例证在安全性和易用性方面的最新进展,并在最后给进行总结和展望。
加密货币的钱包,从程序角度,是存储和管理密钥和地址的系统。从普通用户角度,钱包是一个面向用户界面的应用,里面「存储着」加密货币资产,管理着密钥和地址,用户可以查看钱包并进行交易的操作,此外对于带有智能合约的区块链加密代币,钱包起着和智能合约交互桥梁的作用,因而也成为 Web3 的必备设施。
对于加密钱包最大的一个误解就是,加密钱包中含有加密货币。而其实加密钱包只包含密钥,所有的加密代币都被记录在区块链上,钱包用户获得的是加密代币的使用权,即通过公私钥的钥匙串来对交易进行签名,以证明对该加密货币的使用权和所有权。所以钱包本质上是加密货币的密钥管理和私钥容器系统。
根据钱包中包含的密钥之间的关系,可以分成非确定性钱包和确定性钱包两种。非确定性钱包中密钥相互之间没有关系,所以也叫「一堆密钥钱包」,但是由于难以管理,所以比特币开发组 Bitcoin Core 推荐大家使用确定性钱包,确定性钱包中最常使用的是分层确定性(hierarchical deterministic)钱包,也简称为 HD 钱包,也是目前市面上使用最广的钱包。
目前大部分 HD 钱包的标准都根据部分 BIP (Bitcoin Improvement Proposal)确定下来(包括比特币钱包和非比特币钱包),主要为以下四个:
BIP-32 :多层确定性钱包(HD 钱包)
BIP-39 :助记词规则
BIP-43 :多用途 HD 钱包结构
BIP-44 :多币种多账户钱包
很多钱包,包括硬件钱包都支持这一类标准,包括 Breadwallet、Copay、Multibit HD 和 Mycelium、Jaxx、MetaMask、MyEtherWallet 、Keepkey、Ledger 和 Trezor、其中 Trezor 还是 BIP-39 的提出人。
当然也有不根据 BIP 规则进行设计的钱包,如 Electrum 是最早使用助记词模式的钱包,也是在 2011 年推出了第一款确定性钱包,后来 Trezor 提出了助记词规则 BIP-39,随着广泛应用成为了备受认可的行业标准。Electrum 和 BIP-39 的助记词规则类似,但是 BIP-39 采用一套固定的 2048 词库,Electrum 采用别的词库,但是可以兼容 BIP-39 的助记词词库,反向不能兼容。
一般助记词的个数为 12 个,也可以为 15、18、21、24 个,像硬件钱包 Ledger Nano S 就采用了 24 个助记词,由于整个生成助记词和公私钥的过程较为复杂,我们以 12 个助记词钱包为例,以下图简要描述生成的关键步骤。(详细步骤可以参阅《精通比特币》相关章节)
图 1:HD 钱包助记词及公私钥生成顺序及逻辑
根据以上概述,所以加密钱包的风险约等于密钥管理(Key Management)风险。除了传统的密钥管理办法,有一些新的密钥管理办法可供参考。
私钥管理是加密钱包的重要部分,在一定程度上私钥管理几乎可以和钱包安全性划等号。当然钱包的私钥管理又是最容易出问题的,目前钱包产品涉及到几个问题:
除了传统的 HD 助记词钱包,最近一两年诞生了多种新型的钱包,在私钥管理方向取得了很多进展,特别是在不削弱安全性的前提下,大幅提升了用户使用感观,我们认为新型的钱包按照技术手段大致分成三类:
门限签名:以 ZenGo 为代表
半去中心化管理:以 Torus,Fortmatic 为代表
智能合约管理:以 MYKEY、Argent、Dapper 为代表
但每个钱包产品的技术路径和设计思路都不尽相同,下面我们会以具体产品为例,介绍各自特点和独特的技术。
ZenGo
ZenGo 运用了基于安全多方计算(MPC)的门限签名技术(Threshold Signature,TSS)。其使用分片把钱包的私钥分成两个部分,一部分储存在 ZenGo 的服务器上,一部分保存在手机上,若用户使用 iOS 系统,手机上的部分可以通过使用 TouchID/FaceID 授权访问,若使用 Android 系统,将借助 ZoOm® 3D Face Authentication solution 授权访问,只有手机方和服务器方私钥同时在线签名,才可以实现对钱包的控制(加密货币交易的签名)。
无障碍使用:用户在整个使用钱包过程中不会接触到密钥,也不需要自己保存和记录密钥。完全通过刷脸或指纹控制整个流程,易用性极高。
钱包恢复:若需要钱包的恢复,假设用户的设备丢失,设备的密钥之前被存在了 ZenGo 服务器上,解密密钥则通过个人 iCould 储存(iOS 系统)或 Google Drive 储存(Android 系统),通过 iCloud 或 Google Drive 就可以恢复设备密钥。若 ZenGo 服务器关停,其建立的托管服务 Escrow 会进入恢复模式,帮助客户还原密钥。只要设备丢失和 iCould/Google Drive 服务器关停不同时发生,就可以恢复钱包和资产。
密钥的生成:ZenGo 的密钥生成过程,也是采用了分布式密钥生成(Distributed Key Management,DKG),每方(这里是两方)各持有私钥的一部分,并且不对对方透露该部分。公钥的生成过程和传统的生成过程类似,保持区块链的一致特性。
半去中心化钱包是借助了中心化的互联网服务器,如 Google、Facebook 的账号或者密钥系统,来登录和控制去中心化的服务,并加以技术手段保证密钥安全,符合传统互联网用户习惯,其思路也值得借鉴:
Fortmatic
Fortmatic 是一款网络轻钱包,但是和 MetaMask 不同,他甚至不是一个浏览器的插件,而只是一个钱包的 SDK,用户只需要通过手机号就可以注册一个以太坊账户,这和传统的助记词类账户相比方便很多。Fortmaitc 的账户也是跟随手机,只要手机可以接受短信验证码即可。Fortmatic 主要是面向 dApp 而开发的,大幅缩减了用户使用 dApp 的繁琐流程,其号称从 22 个步骤减少到 8 个步骤,而且该账户系统跟随手机,在浏览器上随时可以登录。
Fortmatic 的私钥管理采用半去中心化的代理私钥管理(Delegated Key Management )模式,在 2019 年 11 月升级后的采用,之前采用的是托管模式(custodial model )即中心化模式。代理私钥管理下用户的私钥的产生和加密都放在 Fortmatic 的安全飞地(secure enclave)上。
代理私钥管理的流程是:Fortmatic 使用亚马逊的 AWS Key Management Service (KMS),用户直接和亚马逊 KMS 进行交互,完全不会通过 Fortmatic。AWS KMS 会提供硬件安全模块 HSM 提供用户主钥匙,用户的加密和解密完全在 HSM 里进行。
密钥生成:用户通过 Fortmatic Relayer, 在亚马逊的 Amazon Cognito 完成用户注册,然后生成私钥,用户使用 Amazon Cognito 生成的范围凭证(scoped credential)通过 HSM 加密后的,私钥保存在用户手里,Fortmatic 方面也保存的是加密后的私钥作为回复备份。
密钥使用:用户直接和 HSM 交互,HSM 解密加密后的密钥,用户使用解密后的密钥签名交易,和区块链应用交互。
账户恢复:若用户忘记密码,需要使用邮箱进行验证,通过亚马逊的 Amazon Cognito,获得访问通证和范围凭证,用户可以用访问通证从 Fortmatic 下载加密后的私钥。
这种私钥的管理模式,使得其他方很难接触的到解密后的私钥,除非亚马逊的 KMS 出现 bug,当然前提是用户需要相信亚马逊的 KMS,不会受到攻击以及亚马逊不会窃取用户密钥。
Torus
Torus 和 Fortmatic 有一些类似,Torus 不建立新的账户,而是使用原有的中心化账户如 Google、Facebook、Github 等登录。使用 Torus,用户不需要注册新账户,不需要参与密钥的生成和保存。Torus 使用去中心化密钥生成技术(DKG),将密钥分片后通过密钥共享模式(SSS)保存在各个节点之上,用户本身不存储密钥,当使用时,用户通过 Google 的账户登录,获得访问令牌,节点验证令牌后将密钥分片传回给用户,用户通过 VSS 中心组建密钥,进行签名交易。只要用户的中心化账户密码没有丢失,就可以找回钱包的控制权。这里面 Torus 借助了中心化网络的账户体系,虽然使用 DKG、SSS 等技术,所以我们也把他归类为半去中心化管理类别。
2019 年 Vitalik 在上海万向区块链峰会提到了智能钱包 smart wallet 或者叫 contract wallet 的概念,是指通过智能合约来控制钱包里的代币,还可以支持多签、密钥进行分布式保存,还支持社交账户。由于概念较新,目前业内对于智能钱包也有不同的定义:
如果完全以是否已智能合约账户作为标准,则只有那些使用了智能合约账户的钱包系统才可以算作智能钱包,但是如果以对用户体验来说,那些同样可以做到安全特性的钱包也可以被称为智能钱包,如 ZenGo,虽然严格定义上说不能叫 Smart Contract Wallet。
智能钱包的技术基础是以太坊的账户类型,如 Preethi Kasireddy 在介绍以太坊运行机制的时候写到:以太坊网络包含了两种账户类型,一种是外部账户,一种是合约账户。外部账户由私人密钥控制(或衍生出的助记词),没有与之相关的代码。合约账户由合约代码控制,有与之相关的代码。
外部账户可以实现普通的价值转移,但是外部账户可以通过向合约账户发送消息,来激活合约账户代码,进行一系列操作,如转移代币、写入内存、生成新的代币、执行计算、创建新合约等。合约账户自己不能启动交易,必须收到其他外部账户或者合约账户的交易后进行。
图 2:外部账户和合约账户运行机制
通过外部账户和合约账户的运用,在钱包上就可以添加智能操作,典型的智能钱包功能包括:
从目前的智能钱包产品来看,还没有一个非常统一的架构或者标准,各个产品都在按照自己的业务逻辑去进行智能合约功能的编辑,而且相关智能合约都是自己进行开发,也没有调用外部的智能合约,钱包也要为智能合约安全负责。所以是处在一个较为初步的阶段,通行的智能钱包的标准还没有出现。
另外对于密钥的管理模式,各个钱包智能合约的设计思路也都非常不同,比如有的钱包完全不会让用户接触到私钥,有的钱包认为用户保管自己的私钥还是必要的(虽然不涉及复杂的私钥管理),现在也很难断定哪类容易获得大量用户的青睐。
另外有的钱包虽然是智能合约钱包,但是业务逻辑比较混乱,比如一开始需要创造智能合约账户,但实现需要用户先支付 gas 费,这貌似已经违背了智能合约的初衷,智能是用来解决问题的,不是来增加负担的。
智能钱包最有特色的代表有几个:
Argent
Argent Wallet 是 Vitalik 在峰会以及其他场合广泛提及的智能钱包的例子。Argent 提出「No phone. No seed. No problem」的概念,同样也是让用户不接触到 seed 的情况下,可以安全管理自己的资金,主要机制是通过 Guardian (守护人)和智能合约的配合。如果出现手机被盗,可以通过守护人机制转移被智能合约控制的资金到安全的地方。
守护人可以是朋友或者家人(需要使用 Argent),甚至支持设备比如硬件钱包,以及第三方的服务设施,比如 Argent Guardian Service 或者第三方 KYC 提供商网络。用户可以使用多守护人的组合,并按自己的意愿进行添加和删除。
在守护人的存在下,智能合约就可以发挥作用。钱包的私钥保存在手机中,但是资金在以太坊的智能合约上受到控制,而且,守护人机制也是被智能合约所控制的,所以守护人是智能合约的一部分,在出现问题时,用户和守护人通信就可以启动智能合约进行资金转移。当丢失手机时,用户可以找到守护人,让他们锁定在合约里资金,在新手机上重新输入 Argent 的用户名和密码,联系守护人,就可以在新的手机上把钱包恢复。
MYKEY
MYKEY 是一款智能合约多链钱包,支持 ETH 和 EOS 链,采用了介于中心化存管和用户存管之间的模式,依靠智能合约进行了如下设计:
用户需要在 MYKEY 钱包注册 Key ID,其中 Key ID 协议将采用权限分离制度,链上权限被拆分成了管理权限和操作权限。
密钥管理和账户恢复:MYKEY 的管理私钥导出以后,便永久离线储存。用户需要按照类似传统助记词模式进行私钥的物理保存。而操作私钥只能跟随设备。进行管理私钥的导出业务逻辑类似于不要把身份证和银行卡放在一起。管理私钥离开手机后,相当于进行了离线保存,使得用户不会因为丢失手机而完全丧失对账户的管理能力。此外 MYKEY 提供了用户的实名认证机制,相当于组建了用户的数据库,若用户账户丢失,可以通过 MYKEY Lab 进行紧急的恢复,也可以通过社交关系(紧急联络人)恢复。
升级过程保障账户安全:MYKEY 的主要一个设计思路就是在保证用户资金安全的前提下可以进行智能合约的升级,一是通过外部代码审计确保合约安全,二是延时交易功能,给客户 4 天时间用于接受新的升级,由于账户管理合约和业务逻辑合约分离,用户若有担心可以在 4 天内转移钱包内的资产而不是用 MYEKY 的钱包,可以在之后继续选择接受升级后的功能。
简化网络费设置:另外一个值得一提的是 MYKEY 网络费设置,极大地提升了 ETH 和 EOS 的用户体验。ETH 的 gas 费模型相对还算简单,而 EOS 的资源模型确实过于复杂,还涉及 cpu,ram 的转换、使用以及租赁,对于普通用户来说门槛非常高。MYKEY 把这些复杂的资源体系隐藏在后端,在用户前端用网络费的形式展现给用户,用户只需要知道到底需要使用多少网络费即可,而中间的操作(如租赁等)完全自动化,MYKEY 会通过实际产生费率折算成成网络费。当然用户也要相信 MYKEY 的操作不会多扣费,目前 MYKEY 的做法是不会收取任何多余费用,且对新用户都有网络费的补贴,相对友好。
Dapper
该钱包为 CryptoKitty 团队 Dapper Lab 开发的智能钱包,可以使用浏览器和安卓版本。也使用手机验证等安全方式,此外加了一层 rescue kit 的工具,相当于下载保存的密钥,rescue kit 的是一个文件,包含了用户所需要的各类密钥,免去了用户记录,保存密钥的过程,自动完成了分离。而且 Dapper 是为了用户使用 Dapp 方便而设计的,也加入了元交易的功能,这也是智能合约钱包能提供的特性。当然是否应该由 relay operator 提供交易费有争议。
因为智能合约钱包可以支持的功能较多,所以也造成其重点不尽相同,比如支持元交易的钱包,其更有可能是面向 Dapp 的使用的,如 Dapper。而如使用社交恢复机制的钱包,像 Argent、MYKEY,则更多侧重于如何让用户资产得到尽可能地保护。
当然,智能合约钱包也有其缺点的。比如智能合约本身也是有风险的,像以太坊智能钱包应用 Authereum 公布了来自研究人员 Sam Sun 披露的漏洞,该漏洞利用了帐户合约元交易功能的操作顺序,并允许攻击者控制钱包帐户。Authereum 团队后来解决了该问题。智能钱包因为还比较细分,出现作恶的情况少,未来若智能钱包行业兴起,也一定会有攻击者出现。有些智能钱包已经有了后备措施,如 Argent 和 InstaApp 已经在 NextMutual 上购买了保险。
加密钱包可以类比为一个银行账户。十几年前的银行账户就是一个存折,能做的大概不超出存贷汇三类业务。但经过互联网对金融基础设施的改造,现在作为一个银行的用户,可以有多种服务可以选择,如,活期、定期、理财、基金、保险、工资、便民支付、借贷等多种额外的服务。如果去看下支付宝,则支持的功能更加五花八门。
现在的加密货币用户,特别是中国用户,是经历了这样的互联网时代巨变的,所以对于一款加密钱包的需求也是多种多样的,良好的用户体验、安全方便的密钥管理、对 DApp 的入口(Web3.0 浏览器)、钱包内的交易、货币闪兑、法币与加密货币的兑换、Staking、理财等需求未来还会继续增加。
东方的互联网思维对市场和产品拥有极致的把握,由于加密世界的开放性和流动性,以及不存在地域市场隔阂,也会逐渐地影响西方的加密产品,我们已经看到许多加密钱包在用成熟的互联网产品思维在进行因地制宜的改造。
HashKey Hub 是一款托管钱包,是香港金融科技集团 HashKey Group 推出的钱包产品,已经在新加坡进行了支付牌照的备案,并准备进行支付牌照的申请。未来也有计划推出去中心化钱包,让用户可以自主选择对私钥的保管模式。未来也有计划推出去中心化钱包,让用户可以自主选择对私钥的保管模式,并基于 Web3 的理念,探索对资产、身份(DID)的集成。
与其他钱包不同,HashKey Hub 的业务定位在于财富管理,基本上市面上可以见到的加密理财模式都具备,此外还有自己的独特产品:
另外 Hub 拥有自己的积分系统,未来会率先寻找实用的商业场景,在支付牌照的支持下进行数字积分和实体购物之间的聚合支付业务,增加用户的使用体验。总体而言,HashKey Hub 是业内为数不多的以财富管理平台定位加密钱包的产品。
Staking 是加密世界带来的一种新的治理模式和增益模式,随着以太坊 2.0 上线日期临近,未来基本上新一代公链都会采用类 PoS 机制,包括 Tendermint,PBFT,DPoS,PoS 等。PoS 机制最大的特性是,除了链上治理功能,还会获得 staking 收益,用户可以选择委托挖矿(将将币矿池打理)或者质押挖矿(用户自己给验证节点投票)两种模式,区别在于前者是复利计算,后者是单利计算。
现在 staking 服务商基本划分成了 to B 或者 to C 两种模式,对于 to B 的 staking 服务商,钱包自然而然就可以成为用户和 staking 之间的桥梁,staking 也就直接对钱包服务,甚至有的钱包自己就开始做 staking,比如去年开始流行的交易所 soft staking 业务。像很多钱包如 imToken、Cobo、HashKey Hub 等都增加了 staking 的选项,为了方便用户操作,还可以直接进行钱包内加密货币的闪兑,方便直接参与 staking 服务。知名的 staking 服务商 HashQuark、InfStones 在 to B 和 to C 方向都有布局。
除了做 staking 外,还有钱包可以直接使用 DeFi 的借贷理财。比如 ZenGo 最近就推出了 Delightful Finance 理财功能,支持 Dai、USDC、0x、BAT、Augur 这五类加密货币的借贷服务(通过 Compound 进行),以及 Tezos 的 staking 服务(通过 Figment 进行)。ZenGo 在理财过程中几乎不赚手续费,其中货币的借贷利率和直接在 Compound 上进行借贷利率几乎一致。自动复利投资,存贷获得利息被自动投入,享受借贷复利。最重要的是没有锁定期,可以随时赎回。实质上 ZenGo 也继承了 MoonPay 的法币出入金入口(关于法币出入金可以详见我们之前的报告)。也可以类比为一个小型加密货币中心,包含入金、交易、存贷和 staking 理财,还有安全的门限签名保障。
智能钱包 MYKEY 也刚刚推出了自己的理财功能,可以提供 Dai 和 USDC 的借贷服务,通过 Oasis 金库和 Compound 进行。对这两个 DeFi 的集成非常到位,没有跳转页面类似的操作,如同内嵌服务,利率水平和 DeFi 直接提供的一致。
除财富管理功能以外,我们还注意到 AlphaWallet 这款钱包产品,基于 Web3.0 理念,把 token 的设计功能进行了大胆的创新,推出了被称为「Token Script」的新型语言。使得实物商品 / 服务的去中心化流通成为可能。TokenScript 把原本 Token 上需要 Web 服务的那一层用本地 TokenScript 文件替代,实现了真正的去中心化,一个商品或者服务通过这样的 Token 化,就实现了不需要第三方担保的原子化的货款兑付,消除了市场摩擦。
其 TokenScript 的一大应用就是把票务 token 化并实现了去中心化流通:2020 年欧洲足球锦标赛将有超过两万张的门票以非置换代币(NFT)的 形式发售。这两万张 NFT 门票将由欧足联亚洲独家销售代理商盛开体育与加密货币钱包 AlphaWallet 合作推出。用户通过 Web3.0 钱包,可以直接在 OpenSea 上交易这个 NFT 形式的门票。这也是 AlphaWallet 带来的不同于 Web2.0 产品的体验,其早前也为 2018 年俄罗斯世界杯门票进行了区块链测试解决方案。
本文主要探讨了数字货币钱包的安全性,易用性,以及附加增值属性,也着重讨论了钱包的 Key Management 以及智能钱包的设计思路。目前看来新的易用性钱包以智能合约账户架构开始做服务的思路被许多团队所采用的,也有技术较强的团队选用门限签名、密钥分享模式等也可以完成相同的用户体验,但是智能钱包的都属于较新的产品,产品时间都不算长,因此用户数量上还难以和传统的 HD 钱包相比。钱包的增值服务将是留住用户的核心功能,各类钱包将会不断地拓展和创新,目前来看在理财层面已经初步和移动互联网体验接近。也开始出现提供 Web3.0 服务的钱包。
六个方向的展望:
此文完成过程中得到 ZenGo 密码学专家 Omer Shlomovits、MYKEY 研究员姚翔和 HashKey Hub 研究员刘议骏的支持,在此表示感谢。
声明:本内容为作者独立观点,不代表 CoinVoice 立场,且不构成投资建议,请谨慎对待,如需报道或加入交流群,请联系微信:VOICE-V。
简介:Hashkey Capital 旗下研究机构
评论0条