zkSync引入账户抽象、L2 → L1消息传递
今天,我们正在推动重大的结构变化,以改善用户体验,提高与 以太坊 EVM 的兼容性,并升级 zkSync v2 测试网的性能。
你好,账户抽象
在这次升级中,我们增加了账户抽象功能,这个功能被认为是「以太坊开发者社区的长期梦想」。帐户抽象的目标是减少帐户类型或具有以太坊( ETH )余额可以发送交易的实体的数量 以太坊目前有两种帐户类型——由私钥控制的帐户和合约帐户。
账户抽象转向强制执行单一账户类型,就像合约账户,并将验证签名、gas 支付和重放保护等功能从核心协议中推到 EVM 中,这与今天的以太坊不同,所有交易都必须从 EOA 或由私钥控制的帐户开始 在非常高的层面上,帐户抽象化使我们能够编程授权,通过用例实现更大的钱包和协议设计多样性,包括:
- 实施智能合约钱包,以改善私钥存储和恢复的用户体验(例如社交恢复、multisig)
- 在 ETH 以外的代币原生支付天然气费用的能力
- 帐户更改公钥和私钥的能力
- 添加非加密修改,用户可以要求交易有过期时间,确认略微失误,等等
- 签名验证系统的多样性,从目前的 ECDSA,包括后量子安全签名算法(例如,Lamport,Winternitz)
换句话说,账户抽象化给整个用户体验带来了重大改进,并为开发者扩大了应用设计空间,当涉及到如何使用它时,我们一定会看到上面没有涵盖的许多创造性的使用案例出现。注意:像 Metamask 这样的 AA EOA 账户仍然被 zksync 支持。
呼叫第 1 层,L2 -> L1 消息已上线
在本次升级之前,开发人员可以将消息从以太坊通信传递给 zkSync v2,但无法将消息从 v2 传递回以太坊。此升级关闭了通信循环,并允许开发人员在 L2 上发生事情时向以太坊发送信息,然后可以对此采取行动。
例如,DAO 可以将投票 Token 锁定在 L1 的保险库中,但在费用低得多的 zkSync 上进行投票。一旦投票最终确定,zkSync 可以将结果转发给以太坊,在那里可以对这些信息采取行动。
我们增加了对 msg.value 的支持
msg.value 是一个交易属性,它定义了一个交易中发送了多少 ETH。鉴于 ETH 是一种特殊的代币类型(不是 ERC20),依赖于这个属性,这意味着 zkSync v2 上的原生 ETH 交易在以前是不可能的,这迫使开发人员对现有的代码库进行修改,利用包装的 ETH 代替。有了这个新增加的功能,原生 ETH 可以在 zkSync v2 上进行交易,开发人员比以往更容易迁移他们的代码库。
新的操作码
L2 -> L1 消息的添加使我们能够简化协议的接口,并将硬编码操作(例如提款)替换为通用的 L1 <> L2 通信。编译器现在支持以下操作码,使 L1 智能合约迁移到 zkSync 的过程更加顺畅。
EXTCODESIZE
CALLVALUE (msg.value)
BALANCE
SELFBALANCE
EXTCODEHASH
我们已经进行了一次重置
为了实现这些变化,我们对 zkSync 2.0 测试网进行了重置,这意味着合同必须被重新部署,账户余额和交易的状态也被重置,在主网启动之前,我们将进行另一次重置。
内务管理
这些升级是开发人员最需要的升级之一,我们很高兴看到他们解锁了哪些独特的应用程序。鉴于测试网的目的是强化我们的系统,可以预料到错误和问题(特别是账户抽象,这应该被认为是一个不稳定的功能,预计在不久的将来会有突破性的变化)。
原文标题:《zkSync-引入账户抽象、L2 L1 消息传递等》
原文作者:水多多|zkSync
来源:区块律动