美文网首页
跨L2的钱包

跨L2的钱包

作者: 雪落无留痕 | 来源:发表于2023-06-24 14:23 被阅读0次

本文主要关注从L2读L1, 从L1读L2, 或者L2读L2的状态。这对实现asset/keystore 分离的钱包技术架构很关键。

目标

随着L2成为主流,用户可能在多个l2上都拥有资产。随机智能合约钱包 (multisig, social wallet) 等普及,用户密钥可能随时间一直需要更新,如何同步更新密钥也是一个问题。

counterfactual addresses: 尚未在链上注册的地址。

智能合约钱包地址可以利用create2 , 在各个l2生成相同的地址。

但是智能合合约钱包存在一个关键挑战:如何更新同步更新访问密钥。

唯一可行的解决方案是: asset/keystore 分离架构。每个用户都有一个: (1) keystore 合约, 用于存放verification key ; (2) wallet 合约,在其它的L1或L2上,通过跨链读到verification key.

有两上办法实现这个目的:

  • Light version: 每个钱包本地存储verification key, 包含一个函数,用于检查一个跨链的证明,用于获取keystore 的状态,并更新本地年verificaation key。 它优秀点在于当跨链证明代价比较高时,可以不用频繁更新verification key. 只有当前的密钥可以处理合约钱包的资产;
  • Heavy version: 对于每个交易,生成一个跨链的证明,用于验证当前verification key的有效性。

跨链证明

假设keystore 在Linea上, 钱包在Kakarot上, 跨链的证明如下:

主要包含两个证明:

  • 对于指定的Ethereum 状态根,证明Linea 状态根的有效性;
  • 对于指定的Linea 状态根,证明keystore的的有效性。

证明的实现方案

  • Merkle proofs
  • 通用的ZK-SNARKs
  • 专用的证明(KZG);
  • Verkle 证明,
  • 直接的状态读取

聚合是将一个块中的多个跨链证明聚合在一起, 对于SNARKs和KZG可以进行聚合,可以有三种聚合方式:

  • 将N 个Merkle 证明生一个证明;
  • KZG multi-proof
  • Verkle multi-proof

参考

https://vitalik.ca/general/2023/06/20/deeperdive.html

相关文章

网友评论

      本文标题:跨L2的钱包

      本文链接:https://www.haomeiwen.com/subject/srjbydtx.html