Whisker17 / BlockchainProject

This repo is a summary for those current Blockchain projects that I'm interested in
0 stars 0 forks source link

ZKSwap #4

Open Whisker17 opened 3 years ago

Whisker17 commented 3 years ago

ZKSwap

l2labs

本项目实现一种基于 ZK-Rollup 技术的 Layer-2 AMM 去中心化交易协议 ZKSwap,在 Layer-2 上实现了 uniswap 的所有功能,在保证去中心化交易的核心价值的同时,实现实时交易,把 Uniswap 的 TPS(每秒可以处理的交易数量)提升了多个数量级,同时交易的过程几乎不需要消耗任何 Gas 费用。

Whisker17 commented 3 years ago

ZK-Rollup 和 zkSync

ZK-Rollups 是近年来比较流行的 Layer-2 扩容解决方案,其基本思想是通过把大量交易聚合,链上验证证明的方式达到扩容的目的。ZK-Rollups 通过智能合约来解析和验证这些聚合的交易,并利用零知识证明技术把聚合交易的证明上链,从而减少了链上需要存储的数据。所有资金本身都锁定在智能合约中,而大部分的计算和存储都放在链下。zkSync 是 ZK-Rollups 的一个实现,目前其v1 版本已经在以太坊主网部署。其基本的工作原理如下:

由于 SNARK 验证的 Gas 消耗远小于验证大量单笔交易的 Gas 消耗总和,且把完整状态存在链下也比存在链上要便宜,因此 ZK-Rollup 在理论上可以实现对以太坊主网 100-200 倍的扩容,同时显著降低 Gas 消耗。ZK-Rollup 的安全性几乎和对应 Layer-1 的安全性保持一致,因为:

zkSync 目前支持三种操作:

Whisker17 commented 3 years ago

image

Whisker17 commented 3 years ago

ZKSwap 智能合约

ZKSwap 会在以太坊区块链上部署一系列智能合约,用于存储用户存入的代币,同时需要记录和验证 Layer-2 的状态更新和相关证明,是连接链上和链下的关键枢纽。

Whisker17 commented 3 years ago

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 智能合约。

Whisker17 commented 3 years ago

Plonk 零知识证明系

ZKSwap 的零知识证明系统采用分布式架构,并采用最新的零知识证明算法 PLONK 生成证明。Prove server 支持多个 Prover。多个 Prover 主动查询 Prove server 中的证明任务,生成证明后发回 Prove server。PLONK 的全局 trust setup 只需要生成一次,电路规模在一定范围内的应用都可复用,极大地降低了零知识证明的使用门槛。

Whisker17 commented 3 years ago

ZKSwap 状态树

ZKSwap 系统的状态树记录了当前系统中所有账户的余额状态。ZKSwap 的状态树是一棵高度为 34 的默克尔树。根节点 Root 的子节点为系统中所有账户节点(24 层)。账户节点分为两种类型: