衷心感谢 Yoav Weiss、Dan Finlay、Martin Koppelmann 以及来自 Arbitrum、Optimism、Polygon、Scroll 和 SoulWallet 团队的宝贵反馈和审查意见。
在探讨三大转变的文章中,我阐述了为何需要将L1与跨L2支持、钱包安全及隐私视为生态系统基础设施的核心要素,而非作为可独立设计的钱包插件。本文将聚焦其中一个关键技术子问题:如何实现L1与L2之间、以及不同L2之间的高效状态读取。这一问题的解决不仅对实现资产/密钥库分离架构至关重要,还能显著优化跨L2调用,包括资产跨链转移等场景。
推荐阅读
内容导航
核心目标
随着L2的普及,用户资产将分散在多个L2甚至L1上。当智能合约钱包(如多签或社交恢复钱包)成为主流时,账户访问密钥可能随时间变更,旧密钥将失效。此时,用户需要一种能同时更新多个链上账户密钥的解决方案,而无需逐一处理每笔交易。
反事实地址的处理尤为关键——这些尚未在链上注册却能接收和持有资金的地址。以太坊用户最初生成地址时,就依赖于这种机制:无需预先支付注册费用即可接收资金。智能合约钱包通过CREATE2实现了类似功能,允许预先计算合约地址。
EIP-1014地址生成算法示意图。
智能合约钱包带来了新挑战:密钥变更可能。虽然地址由初始化代码哈希确定,但当前验证密钥存储在钱包存储中,这些记录不会自动同步到其他L2。当用户拥有多个L2上的地址(包括反事实地址)时,资产/密钥库分离架构成为唯一可行的密钥更新方案。该架构包含:(i)存储所有钱包验证密钥的”密钥库合约”(位于L1或特定L2);(ii)分布在L1和多个L2上的”钱包合约”,通过跨链读取获取验证密钥。
实现方式有两种:轻量级方案(仅更新时验证)要求钱包本地存储密钥,通过跨链证明更新;重量级方案(每笔交易验证)则需每笔交易都提供密钥库当前状态的证明。前者节省gas但更新复杂,后者简化密钥更新但增加交易成本。
跨链证明机制
以密钥库在Linea、钱包在Kakarot为例,完整证明包含:从以太坊状态根证明Linea状态根的有效性,再从Linea状态根证明密钥库当前密钥。这涉及两个关键技术问题:证明方案选择(Merkle证明或其他),以及L2如何获取最新的L1状态根(或完整状态)。
证明方案选择
主要选项包括:Merkle证明、通用ZK-SNARK、专用KZG证明、Verkle树证明和直接状态读取。从实施难度和成本考量,ZK-SNARK和KZG方案最具前景。
聚合证明能显著降低成本,特别是当同一区块包含多个跨链操作时。ERC-4337的账户抽象标准为证明聚合提供了理想框架。
L2状态同步机制
所有L2都需要访问最新的L1状态根以处理存款等操作。优化这一过程需平衡安全性与延迟:直接读取L1状态能最小化延迟,但需处理L1重组可能;依赖存款桥更新则可能产生较高成本。最佳方案是L2区块包含指向最近L1区块的指针,实现状态同步。
隐私保护方案
理想方案需满足:隐藏由同一密钥库管理的钱包间关联;社交恢复监护人不知悉具体监护地址。这要求:避免直接使用Merkle证明;KZG或SNARK方案需支持盲验证;聚合过程不泄露原始信息。重量级方案(每交易验证)虽增加成本,但能更好保护隐私。
总结展望
- 跨链社交恢复钱包的核心是密钥库集中管理、钱包分布式验证的架构
- 优化跨链证明(ZK-SNARK/Verkle树/KZG)是关键突破点
- 证明聚合应与ERC-4337生态系统深度整合
- L2需优化L1状态读取延迟,直读功能可大幅提升效率
- 钱包可扩展至L3等连接较弱的系统,但密钥库应部署于L1或高安全ZK-Rollup
- 隐私保护方案需向前兼容,是未来重要发展方向
声明:文章不代表CHAINTT观点及立场,不构成本平台任何投资建议。投资决策需建立在独立思考之上,本文内容仅供参考,风险 自担!转载请注明出处:https://www.chaintt.cn/11932.html