Curve + zkSync L2:以太坊的ZK Rollup 智慧合約

Curve 和 Matter Labs 團隊很高興宣佈以安全且去中心化的方式向以太坊擴充套件邁出了一大步:今天,我們和 Curve Finance 一起釋出了第一個常駐 dapp 的 zkSync L2 智慧合約測試網。
為什麼選擇 ZK Rollup ?

擴充套件性是以太坊一個迫切的需求 - 隧道盡頭有一個亮燈。Vitalik Buterin 剛剛宣佈 Rollup 是現階段擴充套件以太坊的“唯一選擇”[6], 突出顯示了其[獨特的無需信任安全保證](/ matter-labs/evaluating-ethereum-l2-scaling-solutions-a-comparison-framework-b6b2f410f955 "獨特的無需信任安全保證") 。

ZK Rollup (ZKR)是現有的兩種 Rollup[7] 版本之一,另一種是 Optimistic Rollup (簡寫:OR)[8]。兩種方法都有其取捨(參見詳細比較[9])。這是主要的實際差異:

安全 - 即使使用單個驗證者,ZK Rollup 也非常安全,因為它們依靠純數學,而不是進行持續的經濟激勵活動來確保資金安全。除了密碼學假設外,ZKR 與基礎 L1 一樣安全。這對於處理資產總值高的協議尤其重要。與 ZKR 相比, Optimistic Rollup 具有強大的反網路效應:其安全性與鎖定價值成比例地降低。實際上,需要控制資本上限(數千萬美元的範圍內),才能安全地放如在單個 Optimistic Rollup 中,才能保持對對 L1 的高度合理攻擊的抵抗[10]. 只要以太坊仍然是 PoW 鏈,就無法緩解。

最終確定性。ZK Rollup 的最終確定性時間(分鐘)短,因此支援資本快速退回到 L1(L1:第一層,即以太坊自身網路)。相反, Optimistic Rollup 被迫在快速退出和資本效率退出之間進行選擇[11],但不能兩者兼有。大多數研究人員認為,OR 至少需要一個星期的爭議延遲時間。這對於與 L1 上的合約(至少將在最初)繼續在生態系統中發揮重要作用的合約的互操作性非常重要。

可程式設計性 - 透過 Optimistic Rollup 支援完全的 EVM 相容性更加容易。通常認為 OR 方法是將現有以太坊智慧合約引入 L2 (L2 :二層網路)的唯一可行方法。但是,這種情況即將改變。

ZK Rollup 中的智慧合約?

直到最近,在 ZK Rollup 中支援任意使用者定義的智慧合約還是一項極富挑戰性的任務。但是這些天來,在零知識證明領域中事情發展很快。2020 年帶來了幾項突破,最終使之成為可能:Matter Labs 引入了 Zinc 程式語言和對 SNARK 友好的 Zinc VM,並實現了以太坊的遞迴 PLONK 證明驗證[12]。這些技術的結合將推動 zkSync 上的實現智慧合約。

Zinc VM 如何工作?

合約以 Zinc 程式語言編寫並編譯。編譯器輸出是雙重的:

Zinc 虛擬機器的位元組碼。
合約的 SNARK 驗證金鑰。

Zinc VM 位元組碼+驗證金鑰可以完全無許可的方式部署到 zkSync 網路。合約將在 L2 中被分配一個新地址。每當使用者與該合約進行互動時,zkSync 的驗證程式將執行 Zinc VM 操作碼併產生對交易有效性的零知識證明 – 友好的 SNARK Zinc VM 的特殊設計使其成為可能。然後將由 Rollup 塊電路針對已部署的驗證金鑰來遞迴驗證該證明。然後,以太坊上的 zkSync 智慧合約驗證區塊證明,以授權狀態轉換,所有交易狀態轉換可以在一個區塊快速的驗證。

因此,zkSync 上的 Zinc 智慧合約繼承了有效性證明的嚴格安全保證。

如何為 zkSync 編寫智慧合約?

目前,必須使用 Zinc 程式語言編寫 Zinc VM 的智慧合約。檢視最新版本的Zinc Book[13],你將找到完整的入門指南和完整的開發人員參考。我們期待你在Zinc Gitter 聊天室[14]中提出的問題和反饋。

Zinc 目前處於封閉開發 Beta 版。如果你有興趣為你的專案嘗試,請與我們聯絡[15].

Zinc 與 Solidity/Vyper 有何不同?我可以移植現有的原始碼嗎?
Zinc 遵循簡化的 Rust 語法,但它借鑑了 Solidity 的所有智慧合約元素和結構體。任何有經驗的 Solidity/Vyper 開發人員都可以在幾天之內瞭解到它。

由於 Zinc 在結構體上與 Solidity 相同,因此可以輕鬆地將現有的 Solidity 程式碼轉換為 Zinc。主要的挑戰是 Zinc 目前尚未完全圖靈完備。這意味著:禁止遞迴和無限迴圈(有限迴圈是 OK 的)。

第二受歡迎的 ETH 智慧合約語言 Vyper 也不是圖靈完備的。因此,今天任何 Vyper 程式都可以同構轉換為 Zinc。這正是 zkSync 上 Curve 的工作方式:Matter Labs 幫助 Curve 團隊將現有的 Curve 合約重寫為 Zinc 版本。它幾乎逐行與原始來源相同。

儘管 Zinc 本身不是圖靈完備的,但實際上任何在 Solidity 可以完成的工作而只需進行很少的修改即可在 Zinc 中完成,部分是因為大多數 Defi 應用程式的程式碼很少需要迴圈或遞迴,部分是因為圖靈完整元件可以透過利用交易級別的遞迴來重新實現,即合約透過外部呼叫來呼叫自己的公共方法(在 zkSync 中仍然可以實現)。

此外我們還有更多的好訊息:Matter Labs 正在努力在不久的將來使 Zinc 圖靈完備。在此之前,我們很樂意為你的團隊提供支援,以使現有的 Solidity 程式碼可移植。請聯絡[16].

可組合性如何?

zkSync L2 網路中的所有合約都將能夠以與以太坊主網上完全相同的方式原子地互相呼叫。

如何管理使用者金鑰?

在Gitcoin 贊助第 7 輪[17],zkSync 被直接整合到結帳流程中,這需要信任 Gitcoin 網站。在此 Demo 中,zkSync 私鑰永遠不會離開connect.zksync.dev[18]的範圍。這種型別的整合類似於 Web2 世界中的單點登入身份驗證方案,該方案廣泛用於 Google/Apple/Facebook 登入。這實際上意味著 zkSync 現在可以與任何以太坊錢包和任何數量的完全不受信任的 dapp 結合使用。

即使 zkSync 網站被黑,我們的方法也需要透過以太坊錢包另外簽名每條訊息的方式進行 2 次驗證。目前,該簽名已由我們的伺服器驗證,儘管遞迴 PLONK 證明現在使我們可以將其直接整合到我們的 ZKP 電路中,而無需太多開銷。

同時,我們正在與其他團隊合作開發通用的以太坊 L2 簽名標準,這將使圍繞 L2 合約進行互動的使用者體驗更加令人愉悅。

Zinc Alef 的侷限性是什麼?

測試網功能齊全,你可以編寫智慧合約,將它們部署到測試網,在本地測試它們,並生成智慧合約執行的零知識證明。每筆交易都將導致 zkSync 測試網上的進行真實通證轉移,這將反映在區塊瀏覽器和錢包中。

但是,在此階段,Zinc VM 尚未整合到 zkSync 核心中。Zinc 程式語言中的一些重要功能也可能會丟失。我們將根據社羣的要求優先開發功能。

參考資料

[1]登鏈翻譯計劃: https://github.com/lbc-team/Pioneer
[2]翻譯小組: https://learnblockchain.cn/people/412
[3]演示 demo!: https://zksync.curve.fi/
[4]在 Zinc 上的Curve合約: https://github.com/matter-labs/curve-zinc
[5]Zinc 文件: https://zinc.zksync.io/
[6]剛剛宣佈 Rollup 是現階段擴充套件以太坊的“唯一選擇”: https://www.trustnodes.com/2020/10/05/ethereum-rollups-are-the-only-choice-for-scalability-says-vitalik-buterin
[7]Rollup: https://learnblockchain.cn/tags/Rollup
[8]Optimistic  Rollup (簡寫:OR): https://learnblockchain.cn/tags/Optimistic%20Rollup
[9]參見詳細比較: https://learnblockchain.cn/article/738
[10]對L1的高度合理攻擊的抵抗: https://ethresear.ch/t/nearly-zero-cost-attack-scenario-on-optimistic-rollup/6336
[11]被迫在快速退出和資本效率退出之間進行選擇: https://medium.com/starkware/the-optimistic-rollup-dilemma-c8fc470ca10c
[12]以太坊的遞迴PLONK證明驗證: https://medium.com/matter-labs/zksync-v1-1-reddit-edition-recursion-up-to-3-000-tps-subscriptions-and-more-fea668b5b0ff
[13]Zinc Book: https://zinc.zksync.io
[14]Zinc Gitter聊天室: https://gitter.im/matter-labs/zinc
[15]與我們聯絡: https://zksync.io/contact.html
[16]聯絡: https://zksync.io/contact.html
[17]Gitcoin贊助第7輪: https://gitcoin.co/blog/gitcoin-grants-round-7/
[18]connect.zksync.dev: https://connect.zksync.dev
[19]Cell Network: https://www.cellnetwork.io/?utm_souce=learnblockchain

免責聲明:

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

推荐阅读