作者:Ggg,Redline DAO
2010 年,以太坊创始人 Vitalik Buterin 在魔兽世界中有一个术士的账号,有一天暴雪决定将术士角色大削,移除了生命虹吸法术的法伤部分。他哭着睡着了,并且在那一天意识到集中服务器会带来怎样的恐怖,于是他决定退出,创建了去中心化网络以太坊。2022 年 11 月,世界上最大的衍生品交易所 FTX 被曝挪用用户资金,创始人 SBF 被巴哈马警方逮捕,准备移交美国受审。
从 13 年前被暴雪莫名背刺的术士玩家,到今天维权的 FTX 受害用户,我们越来越认识到“Not your key, not your coin”这句话的重要性:即使有第三方的审计 / 监管机构,中心化的服务器仍然可以肆意篡改、粉饰数据,而在去中心化网络上,链上账本透明且无法篡改,只要我们拥有自己账户的私钥,便拥有对个人资产的绝对控制权。
去中心化是美妙的,但代价呢?
生活在区块链网络中的我们,是个人资产的第一负责人。大部分的用户选择在选择链上钱包时,最关键的权衡是,我愿意为我的资产承担多大的风险以及多大的责任?以传统金融机构为例:
- 在追求安全性的用户的眼里,他们希望将钱放在开户步骤繁琐,但是规模体量庞大的银行里:大银行的资金安全(风险) > 标准严格的开户步骤(责任)
- 在追求应用性的用户眼里,他们仅仅将钱放在微信和支付宝里即可,微信和支付宝能够便捷地完成 P2P 交易,而且只需要身份证和手机号即可完成注册,即使微信和支付宝只是两家上市企业而非国家支持的银行机构:微信的便捷性(责任)> 微信的运营状况(风险)
回到 web3,我们在 web3 中存放资产有两种方式,托管钱包和非托管钱包,而在此之前我们需要对钱包的原理进行一个简要的介绍:
钱包与私钥
账户的生成即私钥的创建过程。在以太坊上,有两种账户类型:EOA账号(External Owned Account,外部账户)和合约账户(通过 EOA 账户部署在链上的智能合约):
以 EOA 账户为例,
EOA address
- 通过生成 256bit 的随机数作为私钥,再通过私钥由 SHA3 算法推导出对应的公钥,然后再通过 keccak-256 计算出地址(原始哈希的后 20 字节),便得到了一个由唯一私钥对应的个人账户。在这个过程中,私钥会计算生成 12 个助记词,我们可以用助记词来重新推导出私钥。
- 目前各大主链上最主流的 dApp 钱包都是 EOA 钱包,如 Metamask,Phantom(Solana),BSC Wallet(BSC),Keplr(Cosmos)。
- 而智能账户则是通过 EOA 账户在链上部署的一段 EVM 编码,可以实现不同的功能。但是和 EOA 账户不一样的是,合约账户没有私钥,不能主动执行,它只能被 EOA 账户发起调用,也正因此,智能合约钱包的最终控制权 = 部署合约使用的 EOA 账户私钥,在这个层面上理解,智能合约账户也是被私钥控制的。只要钱包地址是合约,那就是智能合约钱包。
- 智能合约钱包分为多签钱包(Multisig account)和账户抽象钱包(Abstract account):
- 多签钱包:早在 2013 年,多签钱包就已经成为基金组织的首要选择。这项技术最初是在比特币生态系统中开发的,现在以太坊中也存在优秀的多签钱包(如 Gnosis Safe):以太坊基金会用的就是一种 4-of-7 的多签钱包(即创建一个智能合约用于存放基金,通过 7 个 EOA 账户对合约进行控制,只有达到 4/7 以上的 EOA 账户签名,才可以完成签名)
- 账户抽象则是以单个 EOA 钱包控制合约地址,达到用智能合约模拟 EOA 的效果,如 Argent/Loopring 等热门项目都属于账户抽象钱包
Apecoin Contract Address
3.账户创建之后,我们参与任何链上活动,都离不开私钥的参与。
- 根据廖雪峰老师的介绍:
在去中心化的网络中,并没有一个类似银行这样的信任机构存在,要想在两个节点之间达成交易,就必须实现一种在零信任的情况下安全交易的机制。
我们假设小明和小红希望达成一笔交易,一种创建交易的方法是小红声称小明给了他 1 万块钱,显然这是不可信的;
还有一种创建交易的方法是:小明声称他给了小红一万块钱,只要能验证这个声明确实是小明作出的,并且小明真的有 1 万块钱,那么这笔交易就被认为是有效的。
- 如何验证小明做出的声明呢?
- 通过私钥创造的签名可以让验证者确认这个声明的发起方:任何人都可以通过公钥对数字签名和转账的结果进行对照验证,由于只有拥有私钥的小明才可以发起这个声明,所以可以确信这个声明的确是小明做的。
- 而在以太坊网络中,这样的交易不仅包括 P2P 的转账交易,也包括对智能合约的调用。
- 所以当我们日常使用钱包时,等于通过钱包平台对本地私钥进行调用以完成链上的签名。
钱包的安全性,门槛与抗审查性
钱包的一切都围绕着私钥构建。钱包本质上是一个 1.创建私钥,2.保管私钥,3.使用私钥,4.备份私钥,5.恢复私钥的工具,目前的主流私钥备份 / 恢复方案便是助记词,即在注册钱包时出现的 12/24 个单词组合:
- 助记词可以推导出私钥的明文,当用户迁移钱包至新的设备上时,只需要在钱包 app 上输入助记词便可推导出私钥,从而重新获得钱包的控制权
- 对于用户来说,私钥=助记词,但这两个概念在钱包的日常使用中仍然是有区别的:助记词是用户私钥的备份恢复方案
- 一个比喻:助记词等于将你的钥匙复制了下来,当你的钥匙丢失之后,可以通过助记词再生成一把一样的钥匙
由于私钥是我们与区块链网络进行交互的唯一凭证,我们的责任在于保管好我们的钱包私钥和助记词。最安全的创建账户方式当然是在一个离线的环境,自己通过代码运行随机数(私钥)和 SHA256 算法生成自己的地址,但是无疑这个门槛太高,并不适用与绝大部分的用户。所以在钱包的选择上,用户需要考虑三点:安全性,门槛和抗审查性:
- 安全性:黑客破解钱包私钥 / 助记词的成本有多高
以硬件钱包为例,黑客只能通过钓鱼或者线下盗取私钥的方式才能获得用户私钥
- 门槛:钱包的易用性如何
Metamask 的注册过程中需要用户记录 12 个助记词,更换设备时需要重新输入 12 个助记词,而 Binance 的交易所注册和换设备登录都可以通过邮箱登录一键完成
- 抗审查性:钱包的最终控制权是否在用户手里
如果钱包 app 会保存用户导入的助记词明文上传至服务器,导致黑客可以通过破解服务器盗取用户钱包。而即便没有黑客攻击,也存在这 Slope 项目方监守自盗的可能性,没有达到抗审查。
钱包类别主要分为两种:非托管钱包和中心化的托管钱包。
- 非托管钱包:用户自行保管助记词
a.以主流钱包 Metamask 为例,MetaMask 是一种非托管(或自托管)加密货币钱包。非托管意味着 MetaMask 不存储有关钱包的任何数据,而私钥数据都在本地级别的浏览器或移动应用程序中,当用户需要进行链上签名活动时,Metamask 将从本地文件调用私钥进行签名。而如果用户的私钥和助记词都丢失 / 窃取,Metamask 将无法帮助用户寻回,用户的资产也将永久丢失
b.被公认为最安全的硬件钱包(如 Ledger),则是采用了一个硬件设备离线生成私钥和钱包地址,再通过将地址的公钥导入至网页钱包如 Metamask,需要签名时再通过 Ledger 硬件的线下确认,由于私钥完全不接触互联网,黑客很难窃取硬件钱包里的私钥。但是如果用户把助记词丢失了,或者被钓鱼了,硬件钱包的防护作用也归零,用户的资产依旧会被盗走。
- 托管钱包
交易所钱包如Coinbase/Binance 等则采取了托管钱包的方式,不同之处在于,Coinbase 内显示的账户不是用户持有自己的私钥,而只是 Coinbase 程序里显示的记账数字而非 Etherscan 上显示的链上资产,可以理解为用户信任 Coinbase,将资产托管给 Coinbase 而非自己拥有,所以 coinbase 的账户也无法和 Uniswap 等 dAPP 进行交互
Source: Binance
总体而言,托管钱包中,项目方代为保管助记词,注册和恢复钱包的门槛低,但是钱包的安全取决于项目方而非用户自身,且项目方拥有钱包的实际控制权;非托管钱包的助记词掌握在用户手中,注册和恢复钱包的门槛高,但是安全性和抗审查性都很高。
助记词方案的缺陷
随着 WEB3 不断向前发展,越来越多的需求和应用场景随之出现,链上的生态蓬勃发展,尤其是 2021 年的 Defi Summer 吸引了大批原本只在交易所交易的用户将资产迁移至链上,截至 2022 年 3 月,MetaMask 月活用户已经达到 3000 万,但同时,助记词作为目前最主流的助记词账户恢复方案,成为了黑客的主要攻击目标:对于普通用户而言,最常见的钱包被盗事件便是助记词在剪贴板被复制,或者遇到了钓鱼网站被窃取了储存于本地的私钥文件。
- 当黑客进行攻击时,他需要衡量攻击的成本以及获得的回报,所有的私钥(12 个助记词)都是字典的子集,只要穷尽字典的排列,黑客便可以获得链上的所有资产。然而这个投入产出比是糟糕的,字典如果通过暴力算法排列所有的组合;
- 目前主流的助记词是 12 个英语单词,词库一共 2048 个单词。也就是 2048^12=5.44e39 种(5444517870735000000000000000000000000000);
- 如果要使用如此庞大的算力,黑客已经可以通过 51% 攻击控制 BTC 网络;
- 所以,黑客回报率更高的方法是,通过钓鱼的方式获取用户的助记词,或者窃取用户本地设备保存的私钥。
继续以 Metamask 作为例子,黑客可以在两个地方获得保存的助记词和私钥:
- 助记词
a.钱包创建之后,用户需要保管好生成的助记词,一般建议采取用纸笔的方式抄写在白纸上并妥善保管,但是也有懒惰的人会使用剪切板进行复制粘贴,保存在 doc 文档,甚至是微信的聊天记录里;
b.如果黑客已经在用户的手机上 / 电脑上安装的恶意软件,时刻监控用户的剪贴板,便可以窃取到刚刚创建的私钥。比如 QuickQ VPN 曾被曝出复制用户的剪贴板窃取助记词。
- 私钥
a.同时,Metamask 一般会将私钥加密后保存在创建钱包的本地设备以便随时调用,如果是在 Chrome 上安装的 Metamask 插件:
i.在 Windows 上的储存位置,Metamask 的私钥保存地址:
C:\Users\USER_NAME\AppData\Local\Google\Chrome\User Data\Default\Local Extension Settings\nkbihfbeogaeaoehlefnkodbefgpgknn。
ii.在 Mac 上的储存位置:Library>Application Support>Google>Chrome>Default>Local Extension Settings>nkbihfbeogaeaoehlefnkodbefgpgknn
b.即 Metamask 的安全性取决于 Chrome 的安全性,一旦 Chrome 的防火墙被黑客攻破,黑客便可以获得用户的地址私钥,转移所有资产。这也是为什么硬件钱包在安全性上优于 Metamask 等插件钱包。
Metamask 以外,部分非托管钱包,甚至达不到高抗审查性,如 Solana 上的 Slope 钱包被盗事件:Slope 的移动应用在创造 Phantom 钱包时,通过 TLS 向他们的 Sentry 服务器发送助记词,这些助记词随后以明文形式存储,这意味着任何可以访问 Sentry 的人都可以访问用户私钥。
除此之外,还有更多的钱包安全事故值得我们反省:
EOA 账户被盗
- Fenbushi 资本创始人钱包被盗:
沈波钱包被盗原因为助记词泄露,被盗时使用的钱包为 Trust Wallet,被盗金额包括约 3823 万枚 USDC、1607 枚 ETH、72 万枚 USDT 和 4.13 枚 BTC。
- Wintermute 钱包遭攻击损失约 1.6 亿美元,被盗原因是 Wintermute 为了节省 Gas 费使用了 Profanity 来创建 Vanity 钱包(开头 0x0000000,它可以在调用智能合约时达到节省 Gas 的效果):
Profanity 的设计目的,是帮助人们生成一个具有特殊视觉效果的账号,比如以特殊字符开头或者结尾的账号,另一方面,一些开发者使用它来生成开头为很多个 0 的账号。
Profanity 在获取到第一个 32 位私钥 SeedPrivateKey 以后,为了碰撞出需要的账号地址,会通过一个固定的算法不断迭代这个私钥,最多 200 万次(数值来源于 1inch 披露的文章)。当 PublicKey 已知时,我们可以通过穷举 SeedPrivateKey 和 Iterator 来得到 SeedPrivateKey,计算量大概为 2^32 乘以 200 万次,算力大的显卡在几天甚至几个小时内就能完成。
合约账户被盗
- Paraswap 的合约部署地址被盗:
根据慢雾的调查报告:黑客地址(0xf358..7036)已经获得了 ParaSwap Deployer 和 QANplatform Deployer 的私钥权限。黑客从 ParaSwap Deployer 中提取了 1000 美元,并将其转入转出 QANplatform 部署者地址作为测试。我们使用 AML 平台对 0xf358..7036 进行分析后发现,黑客还盗取了 The SolaVerse Deployer 及多个其他靓号地址。截止目前,黑客已经窃取了超过 17 万美元的资金。
- Ronin 桥于今年 3 月受到黑客攻击,损失 17.36 万枚 ETH 和 2550 万枚 USDC:
黑客虚构了不存在的公司,通过 Linkedin 和 WhatsApp 勾搭了 Axie 的高级工程师,利用新工作机会引诱他,还安排了面试,最后开出丰厚的待遇,但 offer 文件有毒,于是成功侵入 Axie 系统,盗窃工程师部署合约的 EOA 地址私钥。
助记词方案除了是黑客的主要攻击目标以外,同时也是阻止新用户进入 WEB3 的高门槛。
- 创建钱包时,为了安全起见需要手动抄写 12 个单词,而且这张白纸最好不要拍照保存。即使使用可信的开源密码保存软件(如 1password),我们也无法使用便捷的复制粘贴保存,因为存在剪贴板被盗风险
- 恢复钱包时,即更换登录设备时,需要翻出这张白纸,重新输入 12 个单词
保管一张写有 12 个单词的白纸这件事情本身听起来就很不靠谱且不 web3:我们期待着生活在 metaverse 的未来,但是我们的账户安全却靠一张宋代发明的白纸。至此,这两个步骤足以劝退大部分的 web2 玩家,毕竟在 web2 的世界里,大部分注册流程都可以使用 google 账号 /ios 账号一键登录。
无助记词的账户恢复新方案
为了降低钱包的门槛,吸引更多的用户进入 WEB3,我们需要使用如 Web2 的社交账号登录方案,而不损失钱包的安全性和抗审查性。由此,我们需要更便捷且安全的的账户恢复方案,目前的一切讨论都指向一个终局:无助记词。目前的无助记词有两种实现方案:MPC 方案和社交恢复方案。
- MPC 方案:私钥由多方共同计算生成,从而避免用户端私钥丢失 / 备盗导致的单点事故。
可以理解为:MPC 是一个 3FA,每一个验证方式都掌握着一个密钥碎片,门锁没有一个单独的钥匙,当其中的一个密钥碎片丢失了,用户可以用其他的验证方式恢复丢失的密钥碎片
- 社交恢复方案:将资金储存于智能合约中,通过多签 / 单签的方案由 EOA 钱包控制,并指定可信的第三方监护人,当 EOA 钱包私钥丢失,通过第三方监护人更换合约的控制权,所以用户不需要保存助记词。
目前的讨论通常将社交恢复和账户抽象钱包并列讨论,需要注意的是,社交恢复方案是智能合约上的一个标准和功能,由 2019 年的 EIP-2429 提出,指用户可以通过监护人对合约的控制私钥进行更换;最近热议的 EIP-4337 则是有关账户抽象的讨论,我们会在下面的篇章中讨论
MPC 方案
MPC 方案是在创建 EOA 钱包时,多方共同创建私钥碎片。2019 年,在 CRYPTO 2019 上公布了《基于安全多方计算的两方椭圆曲线数字签名》的论文,正式将 MPC 的实现带入大家的视野。MPC 即安全多方计算(Secure Multi-Party Computation)。
- 多方计算(MPC)是加密技术的一个分支,始于将近 40 年前的 Andrew C. Yao 的开创性工作。使用多方计算,私钥的生成不再需要单点完成,而是可以由一组互不信任的多方(n 方)共同计算得出并持有(n 个碎片私钥),这项技术即 DKG(Distributed Key Generation)。
- 分布式密钥的生成可以采用允许不同类型的访问结构的方式进行:常规的 “t out of n”(只要 n 份私钥碎片中的 t 份参与签名,即可证明是有效签名)设置将能够承受与私钥相关的操作中最多 t 次任意失败,而无需损害安全性。
- 门限签名方案(TSS)是对分布式密钥生成(DKG)和分布式签名这种组合的称呼。
- 同时当其中一方的私钥碎片丢失 / 暴露,MPC 方案支持恢复和更换私钥碎片,达到无需更换账户也能保证账号安全的效果。
MPC 方案做到了在账户创建,使用,保存,备份和恢复都没有出现完整的私钥,通过多方共同生成 / 持有私钥碎片以及”t out of n“的 TSS 门限签名方案,达到了比 Metamask 等单点生成 / 持有私钥钱包更高的便捷性。安全性和抗审查性:与传统的助记词方案相比,大大提高了用户使用的安全性,甚至可以媲美硬件钱包
- 安全性
a.无私钥 / 助记词:钱包生成的过程中,各方(钱包项目方和用户)通过 MPC 各自生成私钥碎片,完整的私钥在整个过程中都没有出现过,可以理解为 MPC 是真正的无私钥钱包;
b.黑客攻击成本大大增加:黑客即便入侵了用户的本地设备,也只能获得私钥碎片。只有当黑客掌握了钱包方的服务器 + 用户的本地设备才可以盗取用户的财产。
- 门槛:
社交登录:用户可以通过邮箱等身份验证方式在 MPC 钱包上创建账户(假设 MPC 钱包采用了 2/2 的签名方案,即两个私钥碎片同时使用才可签名)。
- 抗审查性:
中心化机构(钱包方 / 备份的设备)只持有账户私钥碎片,无法控制用户的账户。
社交恢复方案
社交恢复方案部署在智能合约账户上,智能合约钱包可以理解为用 EOA 账户在链上部署了一个用于管理资金的合约,和普通的智能合约相同,部署者的 EOA 钱包拥有对于智能合约的控制权。
- 智能合约钱包并不是无私钥的解决方案,因为控制的 EOA 钱包存在私钥;
- 但是智能合约钱包可以通过社交恢复方案更改用户的签名私钥;
- 社交恢复方案是在你的钥匙丢失之后,让监护人给你换一把钥匙。
EIP-2929 提案之后过了两年,2021 年 Vitalik 首次在论坛里提出了社交恢复的钱包应用案例:
- 在创建智能合约钱包时,用户可以指定其他 EOA 地址作为“监护人”,“监护人”地址需要在链上签名确认,付出 gas fee;
- 用户的 EOA 账户作为“签名私钥”,可用于批准交易;
- 至少有 3 名 ( 或更多 )“监护人”EOA 账户,不能批准交易,但可以更改”签名私钥“。更改“签名私钥”也需要“监护人”付出 gas fee 进行签名确认;
- 签名私钥具有添加或删除监护人的功能,但整个过程需要经过一段时间(通常为 1-3 天)。
- 在日常的使用场景里,用户可以像使用普通的钱包一样使用具有社交恢复功能的智能合约钱包(如 Argent 和 Loopring),用他们的签名密钥确认交易。这样,每笔交易都可以通过一次确认快速完成,就像在传统钱包(如 Metamask)中一样:
a.创建私钥
账户抽象钱包在私钥的创建上和 Metamask 无异。
b.保管私钥
由于控制合约的 EOA 钱包只是作为“签名私钥”使用,并可以通过监护人转移控制权,所以用户不需要特意保管助记词。
c.使用私钥
○ 合约钱包同样是转账 / 交易,因为需要调用合约,所以会比 MPC 钱包和传统钱包更贵;
○但也因为是调用合约,所以支持使用 USDC/USDT 等非 Native token(如 ETH 是 Ethereum 上用于支付 gas fee 的 native token)支付,这无疑会大大降低 Web3 新玩家的交互难度:原理上,项目方在同一个交易里,将用户的 USDC swap 成 ETH 之后代为支付 gas fee。
d.备份私钥
账户抽象钱包的私钥备份步骤用“监护人”代替,然而这是反直觉并且高成本的:
①用户初次使用 web3,希望注册钱包,却需要寻找三个已经在 web3 内有 EOA 钱包的可信任的好友,让他们付出 gas fee 成为自己的监护人;
②若用户希望补偿好友的 gas fee,用新创建的钱包进行三次转账,则创建一个钱包,一共需要给出 6 次 gas fee,而 MPC 钱包创建账户是无成本的。
e.恢复私钥
如果用户丢失了他们的签名密钥,这时可以申请使用社交恢复功能。用户需联系他们的监护人,让他们签署一项特殊的交易(用户或监护人支付 gas fee),将钱包合约中注册的签名公钥更改为一个新的签名即可。这就简单多了:监护人可以通过访问一个网页,比如 security.loopring,查看恢复请求并签名。
然而,在私钥的安全性上,没有达到 MPC 钱包的高度:
- 被攻击的成本:黑客仍然可以通过入侵用户设备获取完整的私钥,换言之,用户使用智能合约钱包仅仅只是在私钥丢失这个场景下,多了一种找回私钥的手段
- 抗审查性低:由于社交恢复方案需要指定“监护人”,存在着“监护人”相互串通作恶的可能性
- 社交恢复的主要风险是:
①合谋:如果一些用户知道他们是某个恢复的一部分,他们可能会对恢复攻击的执行感兴趣;
②目标攻击:外部代理可能了解恢复的所有者,并瞄准执行恢复攻击所需最薄弱的点;
③一般暴露:攻击者如果设法感染大型用户基础环境依赖项,并获得对多个身份的访问权限,也可能通过恢复对未受影响的用户产生副作用。
MPC 方案 v.s. 社交恢复方案:安全性,门槛,抗审查性
Mass Adoption 的未来:Web3 钱包
有了无助记词账户恢复方案之后,我们可以期待新一代的 Web3 钱包,即可以使用邮箱注册和登录的钱包。在我们挑选了 MPC 钱包和账户抽象钱包的代表项目来分别做分析:用户准入上他们都达到了无助记词的低门槛,我们从安全性和抗审查性分别对他们做评估——
Bitizen
在 MPC 钱包中,抗审查性和便捷性做得比较彻底的 Bitizen 钱包采用了 2/3 的 TSS 方案,让我们从钱包的安全性和抗审查性对其进行分析:
- 安全性:
a.创建
为了达到强审查性,用户在完成钱包注册之后,可以用第二台设备通过蓝牙进行私钥碎片备份,采用 2/3TSS 方案:Bitizen 服务器,用户本地设备以及用户第二台设备。
b.保管
由于钱包创建过程中没有生成过完整私钥,所以也没有助记词:用户的 Bitizen 账号会关联用户的云盘和邮箱,用户只需邮箱登录,便可正常使用 Bitizen 钱包。
c.使用
①用户通过面容识别认证获得 Bitizen 云端储存的私钥碎片和本地设备储存的私钥碎片进行签名即可(2/3);
②当第二台设备通过蓝牙备份私钥碎片之后,可以完全离线保存,平日也完全不需要用到(签名只需要 Bitizen 的服务器和用户的主力设备完成即可)。
d.备份
①将本地私钥碎片备份至用户的云盘;
②当用户需要更换设备登录,只需要通过邮箱和面容认证即可,Bitizen 会请求用户从云盘上的恢复私钥碎片的备份。e.恢复①同样的,当用户的设备丢失 / 误删了 Bitizen 的本地文件,可以通过云盘恢复私钥碎片;
②当用户甚至无法登录云盘,Bitizen 会通过服务器上的私钥碎片和用户第二台备份设备,重新计算出私钥碎片,让用户恢复正常的使用。
Source: Bitizen
- 抗审查性:
2/3 的 TSS 方案让用户拥有自己钱包的绝对控制权(2/3 的私钥碎片在用户手里),即使 Bitizen 倒闭或者跑路,用户依然可以正常行使钱包的控制权。
Unipass
- 账户抽象钱包以 Unipass 为例,Unipass 采取了智能合约 +MPC 钱包的方式,结合两种方案的优点:
在交易上,可以使用钱包支持的任意代币(主流的,流动性强的代币)支付 gas fee;
在保管私钥上,使用了 MPC(2/2)和 TSS 技术分布式生成私钥,从而不会发生私钥被黑客单点获得的可能性——私钥分成两片,一片保存在 Unipass 的服务器上,一份保存在用户的本地设备中;
- 在恢复私钥上,Unipass 使用了 DomainKeys Identified Mail (DKIM) 方案,用户可以使用邮箱地址作为“监护人”,而不是其他的 EOA 地址,如此大大降低了用户寻找监护人的门槛:并不需要监护人使用区块链,只需要监护人的邮箱即可。
Source: Unipass
低门槛 —> 高应用性
低门槛钱包并不是钱包应用的终点,目前的 Web3 基础设施与 Web2 的传统金融相比仍有一定距离。Visa 提供的自动扣款和定期自动付款功能为用户带来了巨大的便捷,但在以太坊上实现仍具有一定难度。账户抽象账户可能会是下一个高应用性的区块链钱包叙事:Visa 发布文章「自我托管钱包的自动支付(Auto Payments for Self-Custodial Wallets)」,探索利用账户抽象钱包 Argent 在 StarNet 网络上实现自动可编程支付,允许用户使用自我托管钱包自动付款而无需签署每笔交易。而账户抽象钱包具体是如何实现的呢?这个概念实际起源已久。
账户抽象 - 从 EIP-2938 到 EIP-4337
随着 EIP-4337 的提出,账户抽象这个话题重新回到大家的视线。社交恢复方案和账户抽象(将智能合约作为 EOA 钱包使用,即账户抽象)早于 EIP-1271 已经提出,并且由 Argent 等钱包在 StarkNet 等 Layer2 完成了落地应用,最近社区热议的EIP-4337 方案(账户抽象)有何不同呢?
从 2015 年的 EIP-86 到最近热点 EIP-4337,开发者们的核心的思路围绕着“合约即为钱包”,帐户抽象使用户能够以直观的方式与主网进行交互。从而使用户对账户的关键权限进行精准控制。由于 EOA 账户的代码已经被规定,无法在 EOA 钱包上进行模块化和功能化的设计,比如增加批量转账 / 社交恢复等功能,所以大家将突破口放在了智能合约上。与 EIP-4337 最为接近的提案是 EIP-2938,EIP-2938 同样定义了一个新的智能合约运作协议,但是需要在共识层进行了修改,开发者们难以对其进行维护,而 EIP-4337 的主要创新点在于主网就不需要进行共识级别的协议更改。
- 在 EIP-1237 中,合约地址的签名发起需要依赖于中心化的 Relayer 进行签名,而 Relayer 是中心化的,并且各个 Relayer 之间的标准不一,无法兼容多链 / 多 dAPP;
- EIP-4337 中,提出了用 Bunbler 代替的 Relayer,Bundler 是去中心化的多方,由此提升了智能合约钱包的抗审查性并且统一了签名标准,可以大大降低开发者的集成难度;
- EIP-4337 会在未来造成影响,但是就目前而言对用户的使用体验没有提升。所以该方案的讨论狂热在局限在 VC 和开发者,更像是 Move 之于 Aptos,让 VC 等资方和开发者社区狂热,对于 web3 用户来说,这个 Layer1 是用 solidity 写的还是 Move 写的对用户体验目前没有太大改变。
①毕竟从账户抽象钱包 Argent 从 2018 年至今,已经完成了 5620 万美元的融资,经过 4 年的开发,也仅仅只有 7.4w 地址:正如 defi 兴起之后,币圈用户才从交易所转去使用 Metamask 冲土狗挖高 APY 矿,造就了 Metamask 的崛起,目前来看智能合约钱包的热潮仍需一个新的催化剂;
Source: Dune
②Argent 上目前的用户存款还没有融资额多
Source: Dune
③但是随着以太主网的账户抽象提案落地,意味着 Argent 用户可以从 StarkNet 无缝衔接至 Ethereum 主网,这个过程中燃起的火花也值得我们期待。
- 使用案例
①精细化权限控制:将 EOA 单一的签名权限精细化:
▽赋予 A 用户合约里的 X 个 TokenB 的转账额度
▽赋予 B 用户合约的授权 tokenC 的交易权限而非转账的权限
▽当合约长时间无人使用,自动将合约的使用权转移
②Gas 的多样化支付方式:他人代付或者任意代币支付
③自动扣款 / 自动退款
拥抱 Web3 的未来
老生常谈一句,web2 用户 48 亿人,web3 用户在 22 年刚刚超过了 1 亿,我们仍处在区块链发展的早期蛮荒阶段。
回到文章开头的那个问题:“我愿意为我的资产承担多大的风险以及多大的责任?”,能不能既不用记住我的私钥,也能保证我的钱包不丢失?
一直都有听到传统的 VC 质问:有没有什么场景,是只有 web3 可以做到而 web2 做不到的?我们认为,Web3 钱包就其中一个打脸传统 Web2 的例子:只有在 Web3 的去中心化网络中,我们才能期待一个满足抗审查性,安全性和用户体验的好钱包,用户既不用承担风险,也不用承担责任。而这样的钱包出现,也是 47 亿 Web2 用户拥抱 Web3 未来的重要基础:钱包是不仅是 Web3 第一个入口,更是链上域名(如 ENS),灵魂绑定代币(Soul-Bounded Token),链上声誉系统(Decentralized Identifiers)等发展的基础,如果没有安全的钱包环境,Web3 Lego 的搭建就没有稳固的根基。
我们需要更认真地思考,熊市开枪的机会不多,MPC 给我们看到了 EOA 钱包更易用更安全的未来,并且能够适配目前所有的 EVM 链,智能合约的接入 dAPP 还有很长一段路要走,社交恢复方案目前看着鸡肋,但是智能合约的未来可能性让人期待,我们究竟要押宝在谁身上,我们会用真金白银交上这份答卷。
2022 是加密货币黑暗的一年,但是我们依旧相信未来是光明的。我们是魔兽世界里觉醒的术士,我们希望创造一个这样的世界:在这个世界里,没有人能拿走我们的生命虹吸(除非提案投票通过)。