记录一下个人学习笔记,参考网上资料,本文主要是我个人学习笔记,内容出处均在文末注明。部分内容源自ChatGPT,如文中有错误还请不吝赐教。【文本】标识的内容文本为作者个人观点,仅供参考。zkSync是一种基于以太坊的二层扩容解决方案,它利用了零知识证明技术来提高交易吞吐量和降低交易成本。z
记录一下个人学习笔记,参考网上资料,本文主要是我个人学习笔记,内容出处均在文末注明。部分内容源自 ChatGPT,如文中有错误还请不吝赐教。【文本】标识的内容文本为作者个人观点,仅供参考。
zkSync 是一种基于以太坊的二层扩容解决方案,它利用了零知识证明技术来提高交易吞吐量和降低交易成本。zkSync 属于目前以太坊比较流行的扩容方案 ZK-Rollup 的一种,通过将大量交易批量处理并将结果提交到以太坊主链来实现高性能和低成本的交易。ZK-Rollup 是基于零知识证明的 Layer2 扩容方案,采用有效性验证方法(VP),默认所有交易都是不诚实的,只有通过有效性验证才会被接受。ZK-Rollup 在链下进行复杂的计算和证明的生成,链上进行证明的校验并存储部分数据保证数据可用性。
zkSync 背后公司: MatterLabs
zkSync Lite
):于 2020 年 6 月在以太坊主网上启动,zkSync1.0 是 zkSync 的轻量级版本,它提供了简化的支付和资产转移场景。但是它并不兼容以太坊虚拟机(EVM)。zkSync Era
):于 2023 年 3 月启动,zkSync 2.0 对比 1.0 最大的特点就是兼容 EVM,可以执行 Solidity 或以太坊开发中使用的其他高级语言编写的智能合约,极大的降低了开发成本。1.0 和 2.0 的主要区别如下:
智能合约
账户抽象
可组合性
开发工具
预编译
zkSync 的优势
zkSync 主网
* Network Name: `zkSync Era Mainnet`
* RPC URL: `https://mainnet.era.zksync.io`
* Chain ID: `324`
* Currency Symbol: `ETH`
* Block Explorer URL: `https://explorer.zksync.io/`
zkSync Sepolia 测试网
* Network Name: `zkSync Era Sepolia Testnet`
* RPC URL: `https://sepolia.era.zksync.dev`
* Chain ID: `300`
* Currency Symbol: `ETH`
* Block Explorer URL: `https://sepolia.explorer.zksync.io/`
zkSync 官方跨链桥:https://portal.zksync.io/bridge/
如果要开发自己的跨链桥可以参考:zkSync - Bridging Assets
区块浏览器:
交易状态 zkSync 的 rollup 操作指由 L2 上的 rollup 账户在 rollup 内部发起的交易。所有 rollup 交易都需要操作员(operator)的处理,操作员将所有交易打包,计算正确状态转换的零知识证明,并通过与 L1 的 Rollup 合约交互进行最终的状态转换。
zkSync rollup 操作生命周期如下:
【原文的描述太简略了,说实话有些地方没看明白是在L2上合约操作还是L1上,所以下面根据GPT补充了一下细节,如果细节有问题欢迎评论区告诉我,感谢🙏】
在 zksync 上开发 dapp:
开发者可以在 zkSync 上利用 Solidity 或 Vyper 开发智能合约,大部分合约可以无缝从主网迁移到 zkSync 上。并且,zkSync 提供了定制化的 Hardhat 和 Foundry 帮助开发者编写智能合约。但是由于 zkSync 是第 4 类 zkEVM,因此并不完全兼容 L1 的智能合约。
举几个例子:
call
而不是 transfer
或 send
:transfer
和 send
函数限制了发送 ETH 时的 gas 消耗,上限为 2300 gas
。而 zkSync 的账户都是智能合约,转账时消耗可能因为超出 2300
,导致交易失败。因此,智能合约应使用没有 gas 消耗上限的 call
。具体流程⬇️ 1.用户在 L2 上创建交易。 2.操作员处理交易并创建区块。 3.操作员提交区块承诺给 zkSync 智能合约【部署在eth上】。 4.操作员生成 zk-SNARK 证明(这一步需要计算时间)。 5.操作员提交 zk-SNARK 证明给 zkSync 智能合约。 6.智能合约验证 zk-SNARK 证明。 7.验证成功后,更新 L1 上的状态,新状态视为最终状态。
1.交易创建
2.操作员处理
3.区块创建和提交
4.状态验证
承诺和证明的提交时间间隔问题
zkSync Era 是第一个实现原生账户抽象(Account Abstraction)的 EVM 兼容链。 【首先得了解eth的账户抽象时什么,ETH的账户抽象ERC4337协议还是需要EOA address的参与,所以这个方案并不好,原生的意思就是不需要EOA了,address 本身就支持智能账户控制】
在传统的以太坊生态中,账户分为外部拥有账户(Externally Owned Accounts, EOAs)和合约账户。EOAs 由私钥控制,而合约账户则由部署在其中的代码控制。这种设计虽然简单有效,但在某些情况下限制了可操作性和灵活性。
zkSync 的原生账户抽象允许每个账户都能像智能合约一样拥有自己的逻辑。这意味着用户可以直接在他们的账户内部实现自定义逻辑,比如自动化的支付、权限管理、多重签名等,而无需通过外部合约或服务。
原生账户抽象有许多优势:
zkSync 提供了一系列模版和工具帮助开发者基于账户抽象进行开发,在之后的文章详细介绍。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!