智能合约钱包确实是未来的发展方向
作者:Cassiop,Web3 投研分析师,专注于链游和基础设施赛道
封面:Photo by Shubham’s Web3 on Unsplash
1. 为什么需要无助记词钱包
「无助记词钱包」并不是任何一种具体的钱包技术,而是一种功能体验:用户不再需要保管复杂的助记词,而是通过邮箱密码即可登录。由此,用户使用钱包的门槛大大降低,使用体验上接近 Web2 产品。
这类钱包的本质是允许密码丢失,也就是在密码丢失的情况下仍然可以保全资产安全、并且最终恢复对钱包的访问。所以,用户不再需要谨小慎微地在线下自行保管助记词,而是可以用安全级别较低的方式来存储密码,包括云端存储、移动端本地存储、第三方托管等等。如此,产品就可以在用户体验上做文章,设计新手友好的登录体验。
实现无助记词有多种技术路线,包括 MPC、智能合约等。但不论何种技术,在获得使用便利性的同时,也都存在某种信任假设——或是需要信任托管中介、或是需要信任智能合约,钱包的安全性并不唯一掌握在用户自己手中。对于安全要求极高的人来说,这未必是个最佳选择;但是对于普罗大众而言,无助记词钱包确实能够降低 Web3 的进入门槛。
2. 无助记词钱包有哪些实现方案
本文介绍市面上主流的三种实现方案。
2.1 MPC 钱包
第一种主流的方式是 MPC(Multi-party Computation,多方计算)。这是一种链下的解决方案,是钱包之外的另一层技术,换言之可以和任何类型的钱包结合,使用了 MPC 技术来保管私钥的钱包都可以称作 MPC 钱包。
MPC 钱包使用 SSS 或 TSS 技术生成私钥的多个分片,分发给多个参与方。在使用钱包时,各方通过自己的分片,在不暴露每一方分片的情况下,生成完整的数据来签名。
MPC 钱包可以灵活地设置阈值策略,比如可以要求 3 个分片中至少 2 个分片参与签名,也可以要求 2 个分片全部参与签名。但是需要注意,虽然允许密码丢失,但是分片的存储方案仍然会影响钱包安全,比如由项目方托管的存储更多依赖于项目方不作恶。目前 MPC 钱包的阈值策略和存储方案并不统一,还没有一个行业标准;每种钱包所使用的不同方案,也体现了不同的安全设计策略。
MPC 钱包的私钥分片方案可以有效避免单点故障:即使丢失了单个分片,也可以保全钱包内资产,而且可以在不改变私钥的情况下更新各个分片,做到密码恢复。此外,MPC 钱包的所有实现都在链下,最终只生成一个私钥签名,因此相比智能合约的多签更节约资源。
典型的 MPC 钱包包括 Web3Auth、Particle Network、Openblock 等。
Web3Auth 采用 SSS(Shamir Secret Sharing,Shamir 私钥分割)方案来进行密钥分割。SSS 区别于 TSS(Threshold Signature Scheme,门限签名方案)的地方在于,SSS 需要首先由单方生成一个私钥,然后再通过密码学分割私钥并分发给各方,签名时也必须先重构完整私钥,因此私钥仍然有在前端暴露的风险;而 TSS 不论在密钥生成还是签名的阶段,都是通过分布式计算进行、而不需要进行重构,因此避免了暴露风险。SSS 方案使得 Web3Auth 存在一定安全缺陷,MPC 钱包的后起之秀通常都使用 TSS。
下图展示了 2-3 模型,也是 Web3Auth 采用的基础模型,即需要 3 个分片中的 2 个分片参与才能完成签名。其中,设备分片存储在用户的本地设备中;OAuth 登录分片由节点网络进一步分割存储;备份分片由用户自行存储,可以存储在单独的设备或通过密码访问。
用户在登录时,首先通过 Gmail 等第三方登录,获得 OAuth 登录分片;再用存储在本地设备的设备分片,就可以重构完整私钥。当用户登录新设备时,必须同时用到第三个分片,也就是备份分片来实现登录。此外,通过用户也可以自己设置不同的阈值模型,比如 3-4、4-5 等等。
Particle Network 采用 TSS,相对 SSS 更安全。其阈值模型采用 2-2,客户和官方分别保管一部分分片。客户端的分片由 Particle 或第三方云服务提供商存储在云端,通过邮件 OTP 或社交登录验证后调用。但是,客户端密钥本质上不受保护,服务提供商可以访问该密钥,这一方案依赖于客户信任 Particle 或者第三方提供商 [1]。
获客方式是所有钱包都面临的难题,因为绝大部分 ToC 市场都已经被占据。Web3Auth 和 Particle Network 都采用 ToB 策略,通过服务项目方来获得用户量。值得一提的是,使用了 Particle Netowork 钱包服务的 Web3 游戏 Power of Women 曾一度登顶美国区谷歌商店游戏总榜,成为了 Web3 游戏破圈的一个标杆案例。MPC 钱包提供了丝滑的登录体验,对于 Free to Play 的游戏来说是一个非常重要的降低门槛的方式,可以预见未来低门槛的 Web3 项目很可能会大规模采用类似的登录体验。
2.2 智能合约钱包
上文说的「MPC 钱包」是使用了 MPC 技术来保管私钥的钱包,「智能合约钱包」则是钱包本身的一种类型。
在 EVM 有两种钱包类型,一种是 EOA 钱包(Externally Owned Accounts ,外部控制账户),由任何人通过私钥控制;另一种是 CA 钱包(Contract Accounts,合约账户),部署在区块链上,由合约代码控制,这也就是智能合约钱包。
目前我们使用的绝大多数钱包都是 EOA 钱包,如小狐狸。事实上,智能合约钱包由于可以自定义合约代码,实现的功能远比 EOA 钱包丰富,例如账户找回、预设执行逻辑等;但是目前普及度并不高,主要是由于使用成本高,每笔交易都会比 EOA 钱包多出一笔 gas fee。因此,目前的使用场景主要在于「多签」这样的机构管理层面,个人用户采用较少。此外,智能合约钱包没有私钥、无法验签,因此交易实质上仍然需要由一个 EOA 钱包来调起,个人用户如果要用智能合约钱包,还需要另外保管 EOA 钱包密钥,仍然有较高的复杂度。
在针对个人用户的智能合约钱包赛道,Argent 是一个先行者,2019 年就开始运营至今。Argent 包含两个产品:
1)移动端 App 钱包「Argent」,在 ETH 和 zkSync 上,实现无助记词功能;在 ETH 上还有「Argent Vault」产品,提供社交恢复功能;
2)浏览器插件钱包「Argent X」,只在 StarkNet 上,是基于账户抽象(Account Abstraction)的钱包,后文会再做解释。
我们先来看第一个产品,移动端钱包 Argent,其中的「Vault」也就是传统的智能合约钱包。
前文说过,EVM 上的智能合约钱包没有私钥、无法验签,发起交易时仍然需要另一个 EOA 钱包,因此使用 Argent 移动端时,实质上是首先生成了一个 EOA 钱包,接着再生成一个智能合约钱包「Vault」,这一步需要额外支付 gas fee。
「无助记词功能」是在生成 EOA 钱包这一步,通过手机本地存储私钥来实现的。用户只需要邮箱或者电话就可以注册生成 EOA 钱包,私钥存储在手机本地、无法导出;与此同时会有一份备用私钥存储在云端,在用户更换设备时使用。具体步骤为:备份私钥被加密后存储在用户的 iCloud 云端,而解密密钥由 Argent 掌握。用户更换设备时,从 iCloud 获取加密后的私钥,再通过邮件电话验证后从 Argent 获取解密密钥,从而获得备份私钥。此外,Argent 在发送解密密钥前等会先通知用户并等待两天,给用户充足的缓冲时间,防止盗窃行为。
「社交恢复功能」在是在生成「Vault」后,通过智能合约钱包实现的,目前只在 ETH 上。值得一提的是,目前「Vault」功能只针对 5 万美元以上存款的用户才提供,门槛不低。设置 Vault 后,用户可以添加 Guardians(守护人),可以是任何钱包,包括 EOA 或者 CA,这些被指定的钱包在用户丢失密钥后可以签名生成一个新的账户设定为钱包 Owner,以此来实现社交恢复。此外,钱包 Owner 还可以设置是否需要 Guardians 批准交易、是否在指定时间段内任意交易等等。
根据 Dune 显示,目前有 7 万多个 Argent 合约钱包,总计存储了 7.6 万个 ETH。
接着再来看第二个产品,浏览器插件「Argent X」。事实上,Argent 公司近期的高估值更多是由 Argent X 之称的,因为这是 StarkNet 上的第一个钱包,也是基于账户抽象的钱包,代表了钱包赛道的新方向。
「账户抽象」是以太坊社区对于钱包发展方向的一个共识概念,可以简单概括为:将 EVM 中的实体(账户)与移动资产的所有权的实体(密钥对或签名者)进行解耦,换言之就是把所有账户都变成 CA[2]。前文提到,EOA 和 CA 是 EVM 中的两种账户类型,CA 无法验签,因此必须依赖 EOA 主动发起交易;而在实现了账户抽象后,CA 将不再依赖 EOA 就可以发起交易,实现更多的自定义功能。
听起来很美好,但这里仍然有很多问题,一是技术实现上仍然有很多工作,比如 Argent X 现在的功能非常有限,还没有做到在 ETH 实现的 Guardians 社交恢复功能;二是智能合约钱包历来面临的 gas fee 问题依然存在,在 Layer2 上虽然有所好转,但是依然不如同链上的 EOA 钱包。gas fee 问题最终的解决方案,是通过批量交易来摊薄额外支出,从这一点来讲智能合约钱包确实是未来的发展方向,有潜力做到比 EOA 钱包更便宜。当然,这就要看赛道上各路英雄的开发速度了。
2.3 MPC+智能合约的混合方案
前文介绍的「MPC 钱包」和「智能合约钱包」其实是两个维度的描述,前者是叠加在钱包之外的一层链下验证技术,后者则是钱包本身的一种类型(相对于 EOA 钱包)。这两种钱包并不冲突,事实上也确实存在两者相结合的混合方案:Unipass 就是在智能合约钱包的基础上,叠加了 MPC 技术。
智能合约钱包的典型功能,就是可以设置多个密钥来管理同一个账户。例如在 Argent Vault 中,用户可以添加 Guardians,在在用户丢失密钥后生成一个新的账户并设定为钱包 Owner;在 Gnosis Safe 中,用户可以添加多个钱包来实现门限签名。Unipass 同样通过一系列具有角色权重的密钥来管理账户,较之 Argent Vault 和 Gnosis Safe 更为丰富,主要有三种角色:
1)Owner:设定为这类角色的密钥可以控制账户,有最高权限;
2)Operator:这类密钥可以转账、交互合约、授权等,是用户最常用的角色;
3)Guardians:这类密钥可以在其他密钥丢失时,用来恢复账户,效果等同于 Argent Vault 的社交恢复。Unipass 更先进的地方在于,Argent Vault 只允许绑定 EOA 钱包作为 Guardians,而 Unipass 则可以绑定邮箱而非钱包来做社交恢复,大大降低了用户门槛。
上述功能体现了智能合约钱包的特性,而 MPC 则体现在上图中的 Master Key 中。Master Key 是默认会为用户生成的主密钥,包含 Owner 和 Operator 角色,可以说是 Unipass 账户中最重要的密钥,而这一密钥的生成管理使用了 MPC 技术。
MPC 方案在分片存储上存在这样一个困境:如果客户端分片由用户保管,那么就存在丢失风险;如果客户端分片实质上仍然由第三方保管(如 Particle Network),就存在中心化风险,密码可以被服务商访问。Unipass 选择了前者:客户端分片中的 Password 由用户自己保管,允许丢失,万一丢失的情况下可以通过 Guardians 来进行社交恢复。相对于纯 MPC 钱包,Unipass 在保持去中心化的前提下,通过智能合约的社交恢复来保证账户安全。
此外,Unipass 也支持 ERC-4337 协议,未来可以提供账户抽象所实现的功能。
3. 总结
本文从「无助记词」的场景出发,探讨了几种典型的实现方式。第一种是以 Web3Auth 和 Particle Network 为代表的纯 MPC 钱包,这类钱包仍然是 EOA 钱包,只是将私钥分片。MPC 方案简单高效,但是面临中心化或者密钥丢失风险。第二种是以 Argent 为代表的智能合约钱包,Argent 通过手机本地存储密钥来实现无助记词功能,并通过智能合约的社交恢复来保障账户安全,应对密钥丢失。第三种则是 Unipass 的 MPC+智能钱包混合方案,将最主要的密钥通过 MPC 技术实现无助记词,再通过智能合约的角色权重管理来实现社交恢复,达到和 Argent 一样的目的。
可以看到,「无助记词」本质是这样一种取舍:用较低安全级别存储密钥的方式,来提升用户登录便捷度。相应地,要么用部份托管的手段来应对密钥丢失风险,要么通过智能合约的社交恢复来保证安全。智能合约钱包并不能直接实现无助记词功能,但是其社交恢复却能给低安全级别的密钥存储带来托底保障,而且去中心化的实现方式更符合 Web3 价值观。
不过另一个值得思考的问题是:什么样的用户需要无助记词钱包?Web3 用户几乎人手多个小狐狸账号,是否会注册新钱包完全取决于项目方集成了什么钱包,在这样的背景下,无助记词钱包似乎更适合 Web2 用户。但是这部分用户原本就是需要教育、获客成本更高的群体,很难转化成高价值 Web3 用户。无助记词钱包面临着类似社交赛道的问题:如何吸引大批量、低资产属性的用户。
参考资料:[1]https://mp.weixin.qq.com/s/TF2FCQDyyApzEVHQjxgZRg[2]https://www.ethereum.cn/Technology/account-abstraction
免责声明:作为区块链信息平台,本站所发布文章仅代表作者及嘉宾个人观点,与 Web3Caff 立场无关。本文内容仅用于信息分享,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。