以太坊理想钱包:从跨链体验到隐私保护的全面升级

理想以太坊钱包的愿景:从跨链体验到隐私保护的全方位升级

以太坊基础设施中的钱包层至关重要,但常被核心研究人员和开发者低估。钱包是用户与以太坊世界交互的窗口,用户只有在钱包本身具备相应属性时,才能真正享受到以太坊及其应用程序提供的去中心化、抗审查、安全和隐私等特性。

近期以太坊钱包在改善用户体验、安全性和功能方面取得了显著进展。本文旨在阐述我对理想以太坊钱包特性的看法。这并非一个完整列表,而是反映了我的密码朋克倾向,侧重于安全和隐私方面,在用户体验方面可能有所欠缺。我认为,在优化用户体验方面,不如简单地根据反馈进行部署和迭代更有效,因此我认为关注安全和隐私属性是最有价值的。

跨L2交易的用户体验

目前已经有一个越来越详细的改善跨L2用户体验的路线图,包括短期和长期部分。这里主要讨论短期部分:即当前理论上可实施的想法。

核心思想是:(1)内置跨L2发送功能,(2)链特定地址和支付请求。您的钱包应该能够为您提供一个遵循特定ERC草案风格的地址。

当您收到这种格式的地址时,只需将其粘贴到钱包的"收件人"字段并点击"发送"即可。钱包会自动以最优方式处理发送:

如果目标链上已有足够所需代币,直接发送

如果其他链上有所需代币,使用跨链DEX协议发送

如果有不同类型代币,使用DEX转换为正确类型并发送(需用户确认)

上述适用于复制粘贴地址的场景。对于dapp存款请求,理想流程是扩展web3 API,允许dapp发出链特定的支付请求。钱包可以自由选择满足请求的方式。还需要标准化getAvailableBalance请求,钱包需要考虑将用户资产存储在哪些链上,以平衡安全性和转账便利性。

链特定支付请求也可以放入二维码中供移动钱包扫描。在面对面或在线支付场景中,收款方可以发出二维码或web3 API调用,表明"我想要链X上Y单位的代币Z,参考ID为W",钱包可以自由选择满足方式。另一种选择是claim链接协议,用户钱包生成包含索赔授权的二维码或URL,收款方负责将资金转移到自己钱包。

gas支付也是一个相关话题。如果您在没有ETH的L2上收到资产并需要发送交易,钱包应能自动使用协议在有ETH的链上支付gas。如果钱包预计您将在L2上进行更多交易,也可以只使用DEX发送少量ETH,以便未来交易可以直接在那里支付gas(更便宜)。

账户安全

账户安全的一个概念是,好的钱包应该同时:(1)保护用户免受钱包开发人员的黑客攻击或恶意行为,(2)保护用户免受自身错误的影响。

我长期以来的首选解决方案是具有分级访问控制的社交恢复和多重签名钱包。用户账户有两层密钥:主密钥和N个监护人(如N=5)。主密钥可进行低价值和非财务操作。大多数监护人需要执行:(1)高价值操作,如发送账户全部资产,(2)更改主密钥或任何监护人。如需要,可允许主密钥通过时间锁执行高价值操作。

这是基本设计,可以进行扩展。会话密钥和ERC-7715等权限机制可以帮助在不同应用间平衡便利性和安全性。更复杂的监护人架构,如在不同阈值下有多个时间锁定期,可以最大化成功恢复合法账户的机会,同时最小化盗窃风险。

监护人选择

对于经验丰富的加密用户,可以选择朋友和家人的密钥作为监护人。如果要求每人提供新地址,甚至不需要互相认识。但对大多数新用户来说,这种选择不可行。

第二种选择是机构监护人:专门提供仅在收到额外确认信息时才签署交易的服务。这种尝试由来已久,但至今未取得显著成功。

第三种选择是多个个人设备(如手机、电脑、硬件钱包)。这可行但对新手用户设置和管理困难,且存在设备同时丢失或被盗的风险。

近期出现了基于密钥的解决方案。密钥可以备份在设备或云端,安全性依赖于复杂的密码、机构和可信硬件假设的混合。这对普通用户是宝贵的安全增益,但仅靠它们还不足以保护用户的全部资产。

幸运的是,ZK-SNARK技术为我们提供了第四种选择:ZK包装的中心化ID。这包括zk-email、Anon Aadhaar、Myna Wallet等。基本上,您可以采用多种形式的中心化ID(公司或政府),并将其转换为以太坊地址,只能通过生成ZK-SNARK证明拥有中心化ID来发送交易。

这种方法需要通过简化且集成的UI实现:您应该能够仅指定"example@gmail.com"作为监护人,它会自动在后台生成相应的zk-email以太坊地址。高级用户应该能够将电子邮件(及可能保存的隐私盐值)输入到开源第三方应用中,并确认生成的地址正确。对其他支持的监护人类型也应如此。

目前zk-email面临的一个实际挑战是依赖DKIM签名,该签名使用每隔几个月轮换的密钥,且这些密钥本身未经其他机构签名。这意味着当前zk-email在提供商之外还有一定程度的信任要求。如果zk-email在可信硬件内使用TLSNotary验证更新的密钥可以减少这种情况,但仍不理想。希望电子邮件提供商能开始直接签署其DKIM密钥。目前,我建议使用一个zk-email监护人,但不建议大多数监护人使用:不要将资金存储在zk-email损坏就无法使用的设置中。

新用户和应用内钱包

新用户实际上不希望在首次注册时输入大量监护人。因此,钱包应该提供一个非常简单的选择。一种自然方式是在电子邮件地址上使用zk-email、本地存储在用户设备上的密钥(可能是密钥)以及提供商持有的备份密钥,进行2-of-3选择。随着用户积累更多经验或资产,应在适当时机提示添加更多监护人。

钱包集成到应用程序中是不可避免的,因为面向非加密用户的应用不希望用户同时下载两个新应用(应用本身加上以太坊钱包),这会带来混乱的用户体验。然而,许多应用内钱包的用户应该能够将所有钱包链接在一起,这样就只需关注一个"访问控制问题"。最简单的方法是采用分层方案,通过快速"链接"过程允许用户将主钱包设置为所有应用内钱包的监护人。Farcaster客户端Warpcast已支持这一点。

保护用户免受诈骗和其他外部威胁

除了账户安全,当今钱包还做了很多工作来识别虚假地址、网络钓鱼、诈骗等外部威胁,并尽力保护用户。同时,许多对策仍相当原始:例如,无论发送100美元还是10万美元,都要求点击确认才能向任何新地址发送ETH或其他代币。这里没有灵丹妙药,需要针对不同类别威胁进行一系列持续改进。继续努力改进这方面很有价值。

隐私

现在是时候更加认真地对待以太坊的隐私了。ZK-SNARK技术已非常先进,不依赖后门来降低监管风险的隐私技术(如隐私池)越来越成熟,像Waku和ERC-4337 mempools这样的二级基础设施也逐渐稳定。然而,目前在以太坊上进行私人转账需要用户明确下载并使用"隐私钱包",这增加了极大不便并减少了愿意进行私人转账的人数。解决方案是将私人转账直接集成到钱包中。

一个简单实现如下:钱包可以将用户部分资产作为"私人余额"存储在隐私池中。用户转账时,会先自动退出隐私池。如需接收资金,钱包可以自动生成隐形地址。

此外,钱包可以为用户参与的每个应用程序自动生成新地址。存款来自隐私池,提款直接进入隐私池。这允许用户在不同应用程序中的活动互不关联。

这项技术不仅是保护隐私资产转移的自然途径,也是保护隐私身份的自然途径。身份已经发生在链上:任何使用身份证明门控的应用程序、代币门控聊天、以太坊遵循协议等都是链上身份。我们希望这个生态系统也能保护隐私。这意味着用户的链上活动不应集中在一处:每个项目都应单独存储,用户的钱包应该是唯一具有"全局视图"的东西,可以同时看到所有证明。每个用户拥有多个账户的原生生态系统有助于实现这一目标,EAS和Zupass等链下证明协议也是如此。

这代表了中期内以太坊隐私的务实愿景。尽管可以在L1和L2引入一些功能以使隐私保护传输更高效可靠,但现在就可以实现。一些隐私倡导者认为,唯一可接受的是所有事物的完全隐私:加密整个EVM。我认为这可能是理想的长期结果,但需要对编程模型进行更根本的重新思考,目前还未达到可在以太坊上部署的成熟水平。我们确实需要默认隐私以获得足够大的匿名集。然而,首先关注(1)账户间转账,(2)身份和相关用例(如私有证明)是务实的第一步,更容易实现,而且钱包现在就可以开始使用。

以太坊钱包也需要成为数据钱包

任何有效的隐私解决方案都会产生用户存储链下数据的需求。这在Tornado Cash中很明显,它要求

随便看看