以太坊共同创办人V神(Vitalik Buterin)昨(20)日晚间发布了新的技术文件《深入探讨钱包和跨Layer2用例》。
V神直接地关注特定子问题的技术领域,罗列了三种可能情况来解释:
如何更容易从Layer2读取Layer1
如何更容易从Layer1读取Layer2
如何更容易从Layer2读取Layer2
同时他强调上述三种情况,都需要基于资产/私钥库分离框架的实现。并且,该框架还可以优化跨Layer2的调用,包括在Layer1和Layer2间的资产转移。
资产/私钥库分离框架的实现
V神首先陈述一个现状,随着智能合约钱包(例如多签钱包)的兴起,访问某些账户所需的私钥,将随着时间的推移而改变,旧私钥将不再有效。
基于此,如果用户在Layer2上拥有地址,包括用户所在的Layer2并不知道该地址(因为ETH使用「反事实」EIP-1014(CREATE2)协议)。这种情况下,只有依赖资产/私钥库分离架构才能让用户更改他们的私钥:
用户拥有一个「私钥库合约」(在Layer1或特定Layer2上),它储存所有钱包的验证私钥及更改规则。
Layer1和许多钱包的「钱包合约」能够跨链获取验证私钥。
IP-1014(CREATE2)地址算法
Layer2是储存私钥库的优选
V神解释,当前有五种主要的办法来解决私钥库的存放问题,它们分别是:
Merkle证明
ZK-SNARK证明
特殊用途证明(例如使用KZG)
Verkle证明
无须证据,依赖静态识别
而考量Layer1高昂的网路成本,V神认为聚合协议是优选,因为用户可以通过生成聚合证明来打包用户提交的操作,以此降低成本。
优化Layer2内部读取Layer1状态的延迟降到最低,再使用Layer2直接读取Layer1就是一个节省证明空间的理想方案。
虽然安全性也是重要的考察标准,私钥库存放在Layer1的安全性也会远远高于Layer2,但长远来看,这样的储存行为代价太大,成本最高,因此V神认为综合来看在Layer2上保存私钥库是经济、安全性兼顾的做法。
重点整理
要拥有跨链社交恢复钱包,最现实的工作流程是在一个位置维护私钥库的钱包,以及在多个位置维护。
使这成为可能的一个关键因素是跨链证明。我们需要努力优化这些证明。等待Verkle证明的ZK-SNARKs或定制的KZG解决方案似乎是最佳选择。
从长远来看,生成聚合证明作为创建用户提交的所有User Operations的捆绑的一部分的聚合协议将是必要的,以最大限度地降低成本。这可能应该集成到ERC-4337生态系统中,尽管可能需要对ERC-4337进行更改。
L2s应该被优化以最小化从L2内部读取L1状态(或至少状态根)的延迟。L2s直接读取L1状态是理想的,可以节省证明空间。
钱包不仅可以在L2上,用户还可以将钱包放在与以太坊连接级别较低的系统上(L3,甚至是仅同意在以太坊重组或硬分叉时包含以太坊状态根和重组或硬分叉的独立链)。
但是,私钥库应该位于L1或高安全性ZK-rollup L2上。在L1上可以节省很多复杂性,但从长远来看,即使这样也可能过于昂贵,因此需要在L2上使用密钥库。
保护隐私将需要额外的工作,并使一些选择变得更加困难。然而,无论如何,我们可能应该转向保护隐私的解决方案,并且至少确保我们提出的任何建议都与保护隐私向前兼容。