Open Whisker17 opened 3 years ago
ZK-Rollups 是近年来比较流行的 Layer-2 扩容解决方案,其基本思想是通过把大量交易聚合,链上验证证明的方式达到扩容的目的。ZK-Rollups 通过智能合约来解析和验证这些聚合的交易,并利用零知识证明技术把聚合交易的证明上链,从而减少了链上需要存储的数据。所有资金本身都锁定在智能合约中,而大部分的计算和存储都放在链下。zkSync 是 ZK-Rollups 的一个实现,目前其v1 版本已经在以太坊主网部署。其基本的工作原理如下:
由于 SNARK 验证的 Gas 消耗远小于验证大量单笔交易的 Gas 消耗总和,且把完整状态存在链下也比存在链上要便宜,因此 ZK-Rollup 在理论上可以实现对以太坊主网 100-200 倍的扩容,同时显著降低 Gas 消耗。ZK-Rollup 的安全性几乎和对应 Layer-1 的安全性保持一致,因为:
zkSync 目前支持三种操作:
ZKSwap 会在以太坊区块链上部署一系列智能合约,用于存储用户存入的代币,同时需要记录和验证 Layer-2 的状态更新和相关证明,是连接链上和链下的关键枢纽。
ZKSwap 服务端是在链下实际处理所有交易的模块。ZKSwap 服务端可以通过 WebSocket 接口和用户发生交互,同时还可以监 听以太坊区块链上的交易。所有合法的交易请求将被放入 ZKSwap 内存池中,最终由 Swap Engine 负责处理。内存池中的交易类型和上一节中 Uniswap 所有操作类型保持一致。Block proposer 对交易进行 Rollup,生成新区块,并由State Keeper 更新 Layer-2 中所有代币的状态。State Keeper 会把状态发送给Commiter,后者负责与 Prove server 通信,获得对应交易的证明,并最终将状 态和对应的 SNARK 证明通过 Ethererum sender 发送到链上的 ZKSwap 智能合约。
ZKSwap 的零知识证明系统采用分布式架构,并采用最新的零知识证明算法 PLONK 生成证明。Prove server 支持多个 Prover。多个 Prover 主动查询 Prove server 中的证明任务,生成证明后发回 Prove server。PLONK 的全局 trust setup 只需要生成一次,电路规模在一定范围内的应用都可复用,极大地降低了零知识证明的使用门槛。
ZKSwap 系统的状态树记录了当前系统中所有账户的余额状态。ZKSwap 的状态树是一棵高度为 34 的默克尔树。根节点 Root 的子节点为系统中所有账户节点(24 层)。账户节点分为两种类型:
ZKSwap
l2labs
本项目实现一种基于 ZK-Rollup 技术的 Layer-2 AMM 去中心化交易协议 ZKSwap,在 Layer-2 上实现了 uniswap 的所有功能,在保证去中心化交易的核心价值的同时,实现实时交易,把 Uniswap 的 TPS(每秒可以处理的交易数量)提升了多个数量级,同时交易的过程几乎不需要消耗任何 Gas 费用。