作者:Three Sigma,区块链审计公司 来源:X,@threesigmaxyz 翻译:善欧巴,金色财经
集成 ZK Rollup 和账户抽象为 Layer 2 解决方案带来了可扩展性和灵活性方面的新维度。今天,我们将深入研究 zkSync 以及他们如何在协议中实现账户抽象。
@zkSync 是由 @the_matter_labs 开发的用于以太坊上可扩展、低成本交易的去信任协议,利用 zk-rollup 技术通过批量处理链下执行的交易来缓解拥堵。 zkSync 的架构集成了 zk-rollup 和 Validium,分别定义为智能合约的 zkEVM 和链下数据可用性的 zkPorter。
在此处更深入地了解协议架构:
账户抽象是一项技术,通过利用智能合约作为钱包来消除对 EOA(外部拥有账户)的需求,从而提供更安全、更佳的用户体验,打造卓越的区块链体验。
在著名的 ERC-4337 AA 工作流程中,用户将操作提交到专用内存池。
捆绑者会将这些操作编译成单个交易,发送给 EntryPoint 合约,该合约会使用“validateUserOp”验证每个账户后执行这些操作。
zkSync Era 是第一个原生实现账户抽象的 EVM 兼容链,它通过引入智能账户和支付方这两种主要组件,彻底改变了账户操作。
智能账户由 IAccount 接口表示,该接口具有 5 种方法:
validateTransaction(): 检查交易是否符合账户规则。如果不符合,则会回滚。
executeTransaction(): 在扣除费用后运行交易。
payForTransaction(): 如果不使用支付方,则直接支付费用。
prepareForPaymaster(): 设置支付方支付费用。
executeTransactionFromOutside(): 允许从外部发起交易。
您可以在下面看到IACCOUNT代码
与 EIP4337 一样,zkSync 的账户抽象也支持支付方,支付方是可以补偿其他账户交易执行的账户。
每个支付方都应该实现 IPaymaster 接口,该接口包含以下两种方法:
validateAndPayForPaymasterTransaction(): 确认支付方是否同意支付交易费用并向操作员发送资金。
postTransaction(): 处理交易后的操作,具体取决于交易的结果和费用退款。
请参阅下面的代码:
zkSync 的账户抽象 (AA) 协议与 EIP4337 非常相似,不过为了提高效率和改善用户体验,zkSync 的协议确实存在一些差异。
zkSync 的原生账户抽象与以太坊的 EIP 4337 之间的关键区别:
实现: zkSync 将 AA 集成到协议中,而 EIP4337 避免了协议级别的更改。
账户类型: zkSync 将智能合约和支付方等同对待;EIP4337 则加以区分。
交易处理: zkSync 为所有账户使用统一的内存池,不同于 EIP4337 的分离流程。
支付方: zkSync 支持所有账户的支付方,EIP4337 则将其限制为智能合约。
要在 zkSync 上创建智能账户,请使用 IAccount 实现基本方法,并使用 IPaymaster 实现依赖支付方的费用支付。
确保您的账户支持 EIP-1271 进行签名验证也非常有用。
完成这些步骤后,只需使用 zkSync 的 createAccount 方法部署您的账户即可!
zkSync 目前集成有 2 个智能合约钱包:
✦ HoldstationW
✦ pier_wallet
声明:本文由入驻金色财经的作者撰写,观点仅代表作者本人,绝不代表金色财经赞同其观点或证实其描述。
提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。
金色财经
金色精选
金色精选