11

一文读懂 Layer2方案zkSync基本原理

 3 years ago
source link: https://www.tuoniaox.com/news/p-495078.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

摘要:

V 神认为从中长期来看,ZK Rollup 最终将在所有场景中胜出。

一文读懂 Layer2 方案 zkSync 基本原理

以太坊的理想之一是普惠金融,但由于现在几乎所有的交易都在 Layer1 处理,导致网络严重拥堵,矿工费居高不下,不少用户因此被拦在门外。

所以社区希望借助 Layer2 降低矿工费,吸引更多用户参与进来。在《给区块链扩容难吗?从比特币到以太坊》中,我们介绍了 Layer2 中被以太坊创始人 Vitalik 看好的 zkRollup 方案。

从中长期来看,随着 ZK-SNARK 技术的改进,ZK Rollup 最终将在所有场景中胜出。- Vitalik Buterin

imToken 2.9.0 已经深度集成了 zkSync 方案,今天这篇文章我们就来具体介绍下 zkSync 的原理和架构,下文将把 Layer1 和 Layer2 简写为 L1 和 L2。

zkSync 概览

zkSync 是基于 ZK Rollup 架构的低成本扩容协议,主要通过零知识证明和数据可用性保障用户资产安全,该项目目前的产品路线图规划如下:

一文读懂 Layer2 方案 zkSync 基本原理

zkSync 正处于第一阶段:支付场景,如其 Slogan 所述:

zkSync: secure, scalable crypto payments

zkSync:安全可拓展的加密资产支付方案

工作原理

1. 用户签署交易并提交给验证人;

2. 验证人将数千笔交易 Rollup 到一个区块中,并向主网的智能合约提交新状态的默克尔根和加密证明(SNARK),证明新状态是基于旧状态的正确更新;

3. 除了证明以外,每笔交易的数据都会使用廉价的 Calldata 在主网发布,以便任何人在任何时刻都可以重建状态;

4. 证明和状态均由智能合约验证,从而验证区块中所有交易的有效性和区块数据的可用性。

特点

  • 支持 ETH 和 ERC20 转账,L2 毫秒级确认,L1 10 分钟内获得最终确认;

  • 主网级别的安全性,毋需依赖第三方;

  • 零成本创建账户;

  • 极低的交易手续费(低至 $0.001);

  • 支持任意有效的以太坊地址(包括智能合约地址);

  • 支持任意代币作为手续费支付;

  • 15 分钟以内将资金从 L2 提现到 L1(OP Rollup 至少要 1~2 周);

  • 支持多重签名;

  • 支持智能合约(即将到来)。

优势

  • 验证人不可能破坏状态和窃取资金;

  • 验证人即使停止工作,用户也可以借助数据可用性随时取回资金;

  • 用户不必时刻监控 Layer2 网络以防欺诈。

zkSync 架构

一文读懂 Layer2 方案 zkSync 基本原理

架构说明

  • 主要架构分为链上和链下,也就是所谓的 L1 和 L2;

  • L1 的核心为智能合约,主要负责存款、提款、交易验证;

  • L2 分为 L1 交互(Watcher、Sender)、L2 状态维护(Mempool、Block Proposer、State Keeper、Block Commiter)、零知识证明系统。

zkSync 架构运作模式

  1. 当用户想要存款时,调用 L1 zkSync 智能合约存储资金;

  2. Watcher 监控 L1 存款交易,当交易发生时则会放入 Mempool 中;

  3. Block Proposer 处理 Mempool 交易打包,并提交 State Keeper 更新账本。

  1. 当用户想要使用 L2 低成本快速转账时,调用 zkSync API 提交转账交易;

  2. 交易同样会按照流程流转至  Mempool > Block Proposer > State Keeper;

  3. 最终 State Keeper 通知 Block Commiter 收集生成零知识证明所需信息,调用 Plonk Proving System 生成零知识证明后,借助 Sender 将存款和转账等交易数据,以及将对应的零知识证明提交到 L1 的 zkSync 智能合约验证;

  4. 等待 L1 交易确认后,Watcher 会通知 L2 更新交易状态为最终确认。

1 - 存款

  1. 用户从 L1 调用 zkSync 合约充值 ETH / ERC20 资产;

  2. 用户可以设定充值地址和资产;

  3. 非代币白名单内的资产,可能会出现合约 Revert。

  1. 等待主网 10 个区块确认后,zkSync 会将资产入账;

  2. 如果充值地址此前未创建,那么将会自动为该地址创建账户。

2 - Signer

一文读懂 Layer2 方案 zkSync 基本原理

1. 创建 zkSync 账户

  1. 场景:L1 存款或者 L2 转账都会自动创建账户;

注:zkSync 的创建账户类似 EOS/Cosmos,账户会有唯一 ID 维护 ETH 地址、zkSync Signer 公钥、Nonce、Balance 等关系。

2. 生成 zkSync Signer

  1. 场景:每次调用 Transfer / Withdraw 时派生 Signer 用于授权交易;

    1. ETH 钱包进行 personalSign 签名

    2. 使用「personalSign 签名」作为种子生成 zkSync Signer

3. 设置签名公钥

  1. 场景:每次 Transfer / Withdraw 检查是否设置公钥,如果没有设置则提示用户生成 zkSync Signer 完成签名公钥设置;

    1. 生成:调用 PersonalSign 生成 zkSync Signer

    2. 检查:每次 Transfer / Withdraw 检查是否设置公钥,若有则进入步骤 iv

    3. 设置:调用 zkSync SDK - setSigningKey 设置 Signer 公钥

    4. Next:继续 Transfer / Withdraw

    1. zkSync Signer 专用于 L2 交易签名,但收款地址依然采用以太坊地址,底层签名则是采用 zkSync Signer;

    2. 用户除了首次设置公钥之外,其余场景均对 Signer 没有感知。

3 - 转账

一文读懂 Layer2 方案 zkSync 基本原理

转账机制基本跟以太坊一样,以下罗列部分特点:

1. 收款地址:

  1. 任意有效以太坊地址皆可转账

  2. 但转给不存在的账户需要更多的手续费用于创建账户

  1. 理论上支持任意 ETH/ERC20

  2. 但目前依赖代币白名单

3. 手续费

  1. 支持任意代币支付手续费,比如 Dai

  2. 手续费计价:

    1. 链上(gas 费)

      验证 SNARK (~1.5k gas) + 交易状态 (~0.4k gas)

    2. 链下(存储和证明费)

      ~ 0.001 USD/笔

4. 交易状态

  1. Committed

    1. 时间:秒级;

    2. L2 交易发送成功的状态,交易区块虽然还没有获得 L1 最终确认,但不影响用户继续发起下一笔交易。

  2. Verified

    1. 时间:~10 分钟

    2. 当交易区块 SNARK 证明被 L1 智能合约验证,L2 交易即获得最终性。 

4 - 提款

一文读懂 Layer2 方案 zkSync 基本原理

目前 zkSync 有 3 种提款至以太坊 L1 钱包的方式:

1. Withdraw

  1. 类型:L2 交易;

  2. 时间:~10 分钟 / ~4 小时(由用户选择的挡速决定);

  3. 场景:当你拥有账户的 Signer 密钥即可使用。

2. ForcedExit

  1. 类型:L2 交易;

  2. 时间:不确定;

  3. 场景:当将资金转入智能合约 / 交易所等特殊地址(无法拥有对应私钥),为了解决无主账户(无法设置 Signer)的问题,zkSync 提供一份人工表单登记处理,帮助用户提现资产。

3. FullExit

  1. 类型:L1 交易;

  2. 时间:1 周;

  3. 场景:当遭遇 zkSync 网络不可信,验证人不作为等情况,用户可以选择向 L1 智能合约提交退出证明,将资金提款至 L1。

来源:imToken(ID:imToken)

和11万人同时接收最新行情资讯

搜“鸵鸟区块链”下载

和2万人一起加入鸵鸟社群

添加微信ID:tuoniao02


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK