一文讀懂 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 架構的低成本擴容協議,主要透過零知識證明和資料可用性保障使用者資產安全,該專案目前的產品路線圖規劃如下:

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 架構

架構說明

主要架構分為鏈上和鏈下,也就是所謂的 L1 和 L2;

L1 的核心為智慧合約,主要負責存款、提款、交易驗證;

L2 分為 L1 互動(Watcher、Sender)、L2 狀態維護(Mempool、Block Proposer、State Keeper、Block Commiter)、零知識證明系統。

zkSync 架構運作模式

存款

當使用者想要存款時,呼叫 L1 zkSync 智慧合約儲存資金;

Watcher 監控 L1 存款交易,當交易發生時則會放入 Mempool 中;

Block Proposer 處理 Mempool 交易打包,並提交 State Keeper 更新賬本。

轉賬

當使用者想要使用 L2 低成本快速轉賬時,呼叫 zkSync API 提交轉賬交易;

交易同樣會按照流程流轉至 Mempool > Block Proposer > State Keeper;

最終 State Keeper 通知 Block Commiter 收集生成零知識證明所需資訊,呼叫 Plonk Proving System 生成零知識證明後,藉助 Sender 將存款和轉賬等交易資料,以及將對應的零知識證明提交到 L1 的 zkSync 智慧合約驗證;

等待 L1 交易確認後,Watcher 會通知 L2 更新交易狀態為最終確認。

1 - 存款

L1

使用者從 L1 呼叫 zkSync 合約充值 ETH / ERC20 資產;

使用者可以設定充值地址和資產;

非代幣白名單內的資產,可能會出現合約 Revert。

L2

等待主網 10 個區塊確認後,zkSync 會將資產入賬;

如果充值地址此前未建立,那麼將會自動為該地址建立賬戶。

2 - Signer

1. 建立 zkSync 賬戶

場景:L1 存款或者 L2 轉賬都會自動建立賬戶;

注:zkSync 的建立賬戶類似 EOS/Cosmos,賬戶會有唯一 ID 維護 ETH 地址、zkSync Signer 公鑰、Nonce、Balance 等關係。

2. 生成 zkSync Signer

場景:每次呼叫 Transfer / Withdraw 時派生 Signer 用於授權交易;

步驟

ETH 錢包進行 personalSign 簽名

使用「personalSign 簽名」作為種子生成 zkSync Signer

3. 設定簽名公鑰

場景:每次 Transfer / Withdraw 檢查是否設定公鑰,如果沒有設定則提示使用者生成 zkSync Signer 完成簽名公鑰設定;

步驟

生成:呼叫 PersonalSign 生成 zkSync Signer

檢查:每次 Transfer / Withdraw 檢查是否設定公鑰,若有則進入步驟 iv

設定:呼叫 zkSync SDK - setSigningKey 設定 Signer 公鑰

Next:繼續 Transfer / Withdraw

說明:

zkSync Signer 專用於 L2 交易簽名,但收款地址依然採用以太坊地址,底層簽名則是採用 zkSync Signer;

使用者除了首次設定公鑰之外,其餘場景均對 Signer 沒有感知。

3 - 轉賬

轉賬機制基本跟以太坊一樣,以下羅列部分特點:

1. 收款地址:

任意有效以太坊地址皆可轉賬

但轉給不存在的賬戶需要更多的手續費用於建立賬戶

2. 代幣

理論上支援任意 ETH/ERC20

但目前依賴代幣白名單

3. 手續費

支援任意代幣支付手續費,比如 Dai

手續費計價:

鏈上(gas 費)

驗證 SNARK (~1.5k gas) + 交易狀態 (~0.4k gas)

鏈下(儲存和證明費)

~ 0.001 USD/筆

4. 交易狀態

Committed

時間:秒級;

L2 交易傳送成功的狀態,交易區塊雖然還沒有獲得 L1 最終確認,但不影響使用者繼續發起下一筆交易。

Verified

時間:~10 分鐘

當交易區塊 SNARK 證明被 L1 智慧合約驗證,L2 交易即獲得最終性。

4 - 提款

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

1. Withdraw

型別:L2 交易;

時間:~10 分鐘 / ~4 小時(由使用者選擇的擋速決定);

場景:當你擁有賬戶的 Signer 金鑰即可使用。

2. ForcedExit

型別:L2 交易;

時間:不確定;

場景:當將資金轉入智慧合約 / 交易所等特殊地址(無法擁有對應私鑰),為了解決無主賬戶(無法設定 Signer)的問題,zkSync 提供一份人工表單登記處理,幫助使用者提現資產。

3. FullExit

型別:L1 交易;

時間:1 周;

場景:當遭遇 zkSync 網路不可信,驗證人不作為等情況,使用者可以選擇向 L1 智慧合約提交退出證明,將資金提款至 L1。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;