今天,钱包的业务是确保资产的安全。由于一切都在链上,目前钱包需要保护的唯一东西是守护这些资产的私钥。如果你改变了密钥,你可以在第二天安全地在互联网上公布你以前的私钥。然而,在ZK的世界里,这不再是真的:钱包不仅仅是保护认证凭证,它还持有你的数据。 我们通过 Zupass 看到了这样一个世界的最初迹象,Zupass 是在 Zuzalu 使用的基于ZK-SNARK的身份系统。用户有一个私钥,他们用它来做认证系统,它可以用来做基本的证明,比如 "证明我是Zuzalu的公民,但不透露是哪一个人"。然而,开始有其他应用程序建立 Zupass 系统之上,最明显例子的是stamps(印章)(Zupass的POAPs版本)。 我的许多 Zupass 印章之一,证实了我是猫咪团队的骄傲成员。
与POAP相比,印章的主要特点是印章是私有的:你在本地持有数据,如果你想让别人知道你的信息,你只能向他们证明一个印章(或印章上的一些计算)。但这创造了额外的风险:如果你失去了这些信息,你就失去了你的印章。 当然,持有数据的问题可以简化为持有单一加密密钥的问题:一些第三方(甚至是链)可以持有数据的加密副本。这有一个方便的好处,即你采取的行动不会改变加密密钥,并不需要与持有你的加密密钥安全的系统进行任何交互。但即使如此,如果你失去了你的加密密钥,你就会失去一切。反过来说,如果有人看到你的加密密钥,他们就会看到所有被加密到该密钥的东西。 Zupass 的事实解决方案是鼓励人们将他们的密钥存储在多个设备上(如笔记本电脑和手机),因为他们在同一时间失去对所有设备的访问的可能性很小。我们可以更进一步,使用秘密共享来存储密钥,在多个监护人之间进行分割。 这种通过MPC的社会恢复对于钱包来说不是一个足够好的解决方案,因为它意味着不但当前的监护人,而且以前的监护人也可能串通起来偷窃你的资产,这是一个不可接受的高风险。但是,隐私泄露的风险通常总是比资产损失要低,有高隐私要求的使用场景的人总是可以接受较高的损失风险,他可以不备份与这些有隐私要求的行为相关的密钥。 为了避免用户被多种恢复路径的繁琐系统所困扰,支持社会恢复的钱包可能需要同时管理资产的恢复和加密密钥的恢复。 回到身份话题这些变化的一个共同点是,"地址"的概念,即你用来代表链上 "你"的加密标识符,将不得不彻底改变。"指示如何与我交互" 将不再仅仅是一个ETH地址;它们将不得不以某种形式,成为多个L2上的多个地址、隐形元地址、加密密钥和其他数据的某种组合。 一种方法是让ENS成为你的身份:你的ENS记录可以包含所有这些信息,如果你向别人发送bob.eth(或bob.ecc.eth,或...),他们可以查询并看到关于如何给你支付和如何与你交互的一切,包括以更复杂的跨域和隐私保护的方式。 但这种以ENS为中心的方法有两个弱点: - 它把太多的东西与你的名称联系在一起。你的名称不是你,你的名称是你的许多属性中的一个。应该可以改变你的名称,而不需要移动你的所有身份资料并在许多应用程序中更新一大堆记录。
- 你不能有无信任的反事实的名称。任何区块链的一个关键用户体验是能够向尚未与链上的人交互的人发送币。如果没有这样的功能,就会有一个相互依赖陷阱:与链上交互(创建他的名称的账号)需要支付交易费用,这就需要他已经拥有Coin(可是他还没有名称的账号)。ETH地址,包括CREATE2的智能合约地址,都有这个功能。ENS名称则没有,因为如果两个Bob都在链外决定自己是bob.ecc.eth,就没有办法选择哪一个得到这个名称。
一个可能的解决方案是把更多的东西放到本文前面的架构中提到的keystore合约中。keystore合约可以包含所有关于你的各种信息,以及如何与你交互(通过CCIP,其中一些信息可以是链外的),而用户将使用他们的keystore合约作为他们的主要标识。但他们收到的实际资产将被存储在各种不同的地方。keystore 合约不与名称绑定,而且它们是反事实的:你可以生成一个地址,而这个地址可以证明它只能由具有某些固定初始参数的keystore合约初始化。 另一类解决方案与完全放弃面向用户的地址概念有关,与比特币支付协议的思想相似。一个想法是更多地依赖发送者和接收者之间的直接通信渠道;例如,发送者可以发送一个索取(claim)链接(作为一个明确的URL或QR码),接收者可以用该链接来接受他们期望的付款。 不管是发送者还是接收者先行动,更多地依靠钱包直接实时生成最新的支付信息可以减少摩擦。也就是说,持久性标识符是很方便的(尤其是ENS),而发送者和接收者之间直接沟通的假设在实践中确实很棘手,所以我们最终可能会看到不同技术的组合。 在所有这些设计中,保持事情的去中心化和对用户的可理解性是最重要的。我们需要确保用户能够很容易地获得最新的信息,了解他们当前的资产是什么,以及有哪些信息是为他们发布的。这些观点应该依赖于开放的工具,而不是专有的解决方案。要避免更复杂的支付基础设施变成一个不透明的 "抽象塔",让开发人员难以理解正在发生的事情并适应新的环境。尽管有这些挑战,但为普通用户实现可扩容性、钱包安全性和隐私性,对以太坊的未来至关重要。这不仅仅是技术上的可行性,而且是普通用户的实际可及性。我们需要起来迎接这个挑战。 特别感谢 Dan Finlay、Karl Floersch、David Hoffman以及Scroll和SoulWallet 团队的反馈、检查和建议。 |