{"author":{"address":"0xbe3eB708d6F16Bb0EB751e1f3d49449590eE29A9","user":"https://learnblockchain.cn/people/19699"},"content":{"body":"zksync 2.0 （后面简称 zksync）简单而言具体的，实现了 ZK Rollup 的项目，其采用了 ZK-SNARK 的零知识证明算法（经过 Boojum 升级后变为 ZK-STARK 的算法）。根据其官方所讲，其具有以下特点：\r\n\r\n* 可靠的安全性（继承自以太坊的安全性），对第三方零依赖（这个没看懂）\r\n* 无需许可的 EVM 兼容智能合约（不理解无需许可的意思）\r\n* 保留关键的 EVM 功能，如智能合约的可组合性\r\n* 标准的 web3 API\r\n* 通过交易输出，即状态差异进行状态更新（这中方式更加节省成本）\r\n* 原生的抽象账户\r\n\r\n\r\n# 总体\r\n\r\n对于 zksync 的架构组成，可以分为几个部分：\r\n\r\n* zkSync 智能合约：\r\n\r\n  * zksync 部署了 Solidity 合约在 L1（以太坊）网络上，作为 ZK Rollup 的链上部分组件。负责管理用户的 balance（余额）并验证证明者提交的零知识证明与更新状态，同时实现以太坊与 zksync 的交互（存款、取款、跨层消息传递）\r\n* zkSync Prover：\r\n\r\n  * Prover 是一个按需的 worker（需求量大（即 Server 负载高）的时候有多个，不需要（即没有交易输入）的时候没有），可以为一个有效区块生成零知识证明 proof，以此证明链下处理的交易的正确性，然后将证明交给 Server，由 Server 交给链上合约，保证合约只接收有效的交易。\r\n  * 由于生成零知识证明 proof 需要大量的计算，所以作为 Prover 的机器需要有强大的 CPU 与大量的 RAM。\r\n* zkSync Server（服务程序）：\r\n\r\n  * Server 就是 zksync 的网络节点，负责维护链下状态，将交易聚合为 batches，将密封的 batches 发送到链上。具体而言具有以下功能：\r\n\r\n    * 监测智能合约的链上操作（如存款，取款）\r\n    * 接收 zksync 交易\r\n    * 生成 zksync 的区块\r\n    * 为有效区块发出 proof 生成申请\r\n    * 将数据发布到 zksync 的合约上\r\n* ZK Circuits（应该就是具体的 ZKEVM 吧）：\r\n\r\n  * Circuits 的这些电路时复杂的数学结构，代表了可验证的计算逻辑。其负责确定什么可以被验证为有效的 proof。对于 zksync ，Circuits 定义了 EraVM 运行的计算规则，定义了交易的执行方法。\r\n\r\n\r\n![image-20240715143431-myf3tqd.png](https://img.learnblockchain.cn/attachments/2024/07/bO9n12XX6695524e1d5c3.png)总体概览（取自官网）\r\n# 参考文章：\r\n\r\n[ZKsync Era Protocol](https://docs.zksync.io/build/developer-reference/protocol)\r\n\r\n[Dapp-Learning ZKsync Era Tutorial](https://github.com/Dapp-Learning-DAO/Dapp-Learning-ZKsync)\r\n\r\n[zkSync学习记录 2023.01.31](https://community.dorahacks.io/t/zksync-2023-01-31/294)","title":"zksync 介绍"},"history":null,"timestamp":1721062061,"version":1}