活動預告
imToken 邀請到了 zkSync 創始人 Alex 和鏈聞研究總監潘致雄,明晚 19:30 和大家一起聊聊 Layer2,掃描文末二維碼參加活動。
以太坊的理想之一是普惠金融,但由於現在幾乎所有的交易都在 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:安全可拓展的加密資產支付方案
工作原理
- 用戶簽署交易並提交給驗證人;
- 驗證人將數千筆交易 Rollup 到一個區塊中,並向主網的智能合約提交新狀態的默克爾根和加密證明(SNARK),證明新狀態是基於舊狀態的正確更新;
- 除了證明以外,每筆交易的數據都會使用廉價的 Calldata 在主網發布,以便任何人在任何時刻都可以重建狀態;
- 證明和狀態均由智能合約驗證,從而驗證區塊中所有交易的有效性和區塊數據的可用性。
特點
- 支持 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
- 創建 zkSync 賬戶
- 場景:L1 存款或者 L2 轉賬都會自動創建賬戶;
注:zkSync 的創建賬戶類似 EOS/Cosmos,賬戶會有唯一 ID 維護 ETH 地址、zkSync Signer 公鑰、Nonce、Balance 等關係。
2. 生成 zkSync Signer
-
- 場景:每次調用 Transfer / Withdraw 時派生 Signer 用於授權交易;
- 步驟
- ETH 錢包進行 personalSign 簽名
- 使用「personalSign 簽名」作為種子生成 zkSync Signer
- 設置簽名公鑰
-
- 場景:每次 Transfer / Withdraw 檢查是否設置公鑰,如果沒有設置則提示用戶生成 zkSync Signer 完成簽名公鑰設置;
- 步驟
- 生成:調用 PersonalSign 生成 zkSync Signer
- 檢查:每次 Transfer / Withdraw 檢查是否設置公鑰,若有則進入步驟 iv
- 設置:調用 zkSync SDK - setSigningKey 設置 Signer 公鑰
- Next:繼續 Transfer / Withdraw
- 說明:
- zkSync Signer 專用於 L2 交易簽名,但收款地址依然採用以太坊地址,底層簽名則是採用 zkSync Signer;
- 用戶除了首次設置公鑰之外,其餘場景均對 Signer 沒有感知。
3 - 转账
轉賬機制基本跟以太坊一樣,以下羅列部分特點:
- 收款地址
- 任意有效以太坊地址皆可轉賬
- 但轉給不存在的賬戶需要更多的手續費用於創建賬戶
- 代幣
- 理論上支持任意 ETH/ERC20
- 但目前依賴 代幣白名單
- 手續費
- 支持任意代幣支付手續費,比如 Dai
- 手續費計價:
- 鏈上(gas 费)
- 驗證 SNARK (~1.5k gas) + 交易狀態 (~0.4k gas)
- 鏈下(存儲和證明費)
- ~ 0.001 USD/筆
- 交易狀態
- Committed
- 時間:秒級;
- L2 交易發送成功的狀態,交易區塊雖然還沒有獲得 L1 最終確認,但不影響用戶繼續發起下一筆交易。
- Verified
- 時間:~10 分鐘
- 當交易區塊 SNARK 證明被 L1 智能合約驗證,L2 交易即獲得最終性。
4 - 提款
目前 zkSync 有 3 種提款至以太坊 L1 錢包的方式:
- Withdraw
- 類型:L2 交易;
- 時間:~10 分鐘 / ~ 4 小時(由用戶選擇的擋速決定);
- 場景:當你擁有賬戶的 Signer 密鑰即可使用。
- ForcedExit
- 類型:L2 交易;
- 時間:不確定;
- 場景:當將資金轉入智能合約 / 交易所等特殊地址(無法擁有對應私鑰),為了解決無主賬戶(無法設置 Signer)的問題,zkSync 提供一份人工表單登記處理,幫助用戶提現資產。
- FullExit
- 類型:L1 交易;
- 時間:1 週;
- 場景:當遭遇 zkSync 網絡不可信,驗證人不作為等情況,用戶可以選擇向 L1 智能合約提交退出證明,將資金提款至 L1。
如何體驗 zkSync 呢?
imToken 2.9.0 已經深度集成了 zkSync,如果你想上手體驗 zkSync 的完整流程,可以點擊視頻👇 查看。
-活動報名-
明晚 19:30,我們邀請到 zkSync 創始人 Alex 和鏈聞研究總監潘致雄,和大家聊聊 Layer2 能否解決以太坊擁堵問題? zkSync 是 Layer2 騰飛的引爆點嗎? zkSync 會如何考慮 Native Token 機制和發放計劃?掃描海報二維碼即可報名參加活動。