化繁為簡:Cairo 1.0 如何改變 StarkWare 的編寫範式

1 月 5 日, StarkWare 宣布正式推出編程語言 Cairo 1.0 公開版本,正式取代為期兩年的測試、預覽版本,也標誌著使用該語言在 StarkNet 上編寫智能合約已經成為可能,同時也會兼顧高效的執行效率,成為 ZK 系 Layer 2 Rollup 技術派的里程碑事件。

此次更新的功能可歸納為三點,分別是智能、效率和安全。

  • 更為智能:實現 Sierra 設計,確保 Cairo 代碼可證明,StarkNet 智能合約將在下一個版本中實現。
  • 更加高效:跟進 Rust 語言的強類型、所有權機制和借用等設計思路,兼顧執行效率和編寫規範性;
  • 更為安全:保持圖靈完備性,STARK 機制的安全性由數學證明來保證;

Cairo 1.0 公開版的工作流程將與以往有所不同,最主要的開發方向將是在智能合約編寫能力和開發者友好方面進行持續改進。

兩全:走向 ZK-EVM

在本輪的 Layer 2 纏鬥中,ZK 系中的 STARK 和 SNARK 成為兩大主流路線,但 EVM 兼容性和執行效率也成為各方關注的焦點,更好的兼容性將會獲得以太坊主網的安全性加持,而較高的執行效率則會加快 L2 自身的執行速度。

延伸閱讀

但這其中存在一個悖論:EVM 兼容性和執行效率往往無法兼得,越好的 L1 兼容性則會降低 L2 執行效率,反之則存在安全性問題。

因此 StarkWare 希望能使用 Cairo 語言作為兩者之間的黏合劑,通過其編寫的智能合約不僅可在 StarkNet 上全速運行,也可和以太坊主網保持較高的兼容性,這也是 ZK-EVM 的真正含義。

在本次更新中,Cairo 將會支持完整的 Cairo-VM,其中的關鍵就在於中間表示層 Sierra 。

簡單而言,Sierra 將作為 Cairo 語言編寫的代碼和其底層字節碼之間 “翻譯層”,並且這種翻譯將在確保安全性的基礎上進行提速,而無需設置交易的執行狀態,直接可根據當前狀態開展證明。

這是 Cairo 自身的語法改進,除此之外,StarkWare 的智能合約也將逐步過渡到完全的 Cairo 語言上去,以完成自身的語言標準的統一。

化繁為簡:Cairo 1.0如何改變StarkWare的編寫範式

由於保持了相當程度的以太坊主網兼容性,Cairo 和 Solidity 編寫的智能合約之間的轉換也將更為簡易,以太坊客戶端 Nethermind 的轉譯器 Warp 已經支持將 Uniswap V3 重寫為 Cairo 代碼。

實際上,在 2022 年 10 月末,StarkNet 便宣稱使用 Cairo 開發出 ZK-EVM,而在接下來隨著 StarkNet 的真正投入生產環境,這種兼容性的實際效果便可一驗真偽。

新芽:基於 Rust 的平衡特性

化繁為簡:Cairo 1.0如何改變StarkWare的編寫範式

事實上,Cairo 本身可以視為 Rust 語言寫就的語言,其繼承了較多的 Rust 特性。

Rust 本身不同於 Python/Go 等所謂的現代語言,其運行效率高度接近於較為底層的開發語言,但同時又兼顧了可讀性,比如特殊的內存管理機制——所有權(ownership)和借用等特殊設計。

準確而言,Cairo/Rust 的所有權是指管理內存的顯性要求,由於區塊鏈特殊的節點運行機制,其是典型的內存敏感性開發環境,以 C/C++、 Java 為例,目前主流有三種內存資源利用機制:

  • C/C++:手動管理內存,得益於(受害於)現代設備的進步,大多數開發者並未養成及時釋放內存的習慣,會造成嚴重的資源浪費;
  • Java:自動回收資源機制,JVM 是 Java 運行時的虛擬機,其具備自動管理內存的功能,但一般為保證運行效率,JVM 會保持一段的內存資源,也會造成供需不匹配的問題;
  • Cairo/Rust:所有權機制管理內存資源,Rust 中的任何變量必須指定所有者,並且一次僅能有一個,當變量執行後即被釋放,不能繼續存在內存中。

這樣的所有權機制設計可以保證寶貴的內存資源僅在執行時調用,即可以兼顧 C/C++的運行效率,但又避免了內存洩漏等問題,內存資源無需時刻準備著,對於減輕智能合約的整體大小具有重要意義。

其次是強類型的思路,Cairo/Rust 涉及眾多智能合約的編寫和運行,而其上承載的都是高價值的 Token 、 NFT 以及個人數據,需要特殊對待,並且每次改變都需要慎重對待。

強類型語言和弱類型語言是相對於變量的定義而言的,簡單而言,強類型要求變量在使用前進行 “數據類型” 方面的定義,如整數、浮點數、字符串等,未經明確的類型變換操作,不可隨意更改其定義。

弱類型語言並無此嚴格規定,變量的數據類型可靈活改變。

在智能合約的編寫中,資產類型和數量必須被顯性對待,以確保其歸屬權清晰和交易、轉換等流程明確,而 Cairo/Rust 的可讀性強,其對開發者較為友好,便於避免更多的安全問題。

化繁為簡:Cairo 1.0如何改變StarkWare的編寫範式

按照官方進度,Cairo 1.0 的編譯器將在今年一季度面世,屆時,將和 StarkNet 進行更深度的融合,而藉助 Rust 的語言特性,有望從底層提高執行速度,從而將其 TPS 抬升到日常可用的水平。

重生:開發者友好

Cairo 1.0 肩負著打通 L2 和以太坊主網的重任,根據其官方的 Regenesis(重生)計劃,StarkNet 將在 2023 年一季度完全過渡到 Cairo 之上,結束目前的割裂狀態,從而進入生態競爭的新發展階段。

化繁為簡:Cairo 1.0如何改變StarkWare的編寫範式

而缺乏真正殺手級的應用,再疊加上 dYdX 等頭部項目的出走,StarkWare 的晉級之路仍然佈滿荊棘。

在目前的公鏈/L2/dApp 開發格局中,Solidity(Vyper)佔據了近 98% 的壟斷地位,而 Cairo 僅佔據不到 1% 的市場空間,基本上目前只有 StarkWare 能夠支撐起運行。

自從 StarkNet 和 StarkEx 設立以來,由 Cairo 驅動的 dApp 已經處理了超過 3 億筆交易,鑄造了超過 6500 萬個 NFT,並處理了價值 7000 億美元的交易,並且這些交易都利用以太坊上作為最終結算層。

在 Cairo 1.0 真正應用至 StarkNet 之前,開發者的體驗是爭奪其進入 StarkWare 生態的第一步,除 Nethermind 的 Warp 支持之外,ConsenSys 也和 StarkWare 達成合作,將為 Cairo 提供智能合約提供安全審計服務。

根據官方說明,目前 Cairo 0 的各項功能開發進度如下,我們也可從中參照 Cairo 1.0 的發展方向,並且說明 StarkWare 將會遵循將全部 StarkNet 開源的計劃,Cairo 將是其開邁出的第一步。

相關閱讀:盤點 StarkWare 生態:StarkEx 共 7 個應用,StarkNet 105 個生態項目

化繁為簡:Cairo 1.0如何改變StarkWare的編寫範式

可以從中發現,Cairo 的功能開發進度較快,並且預計實現的功能也較多,而 StarkNet 也將在 Cairo 實現後補齊目前的功能缺口,而最終實現 StarkNet 系統級調用的全功能模塊。

目前可以適當參考下 StarkEx 的數據,不同於 StarkNet 的通用化路線,StarkEx 面向主要幾個大型項目,包括 Immutable X 、 Sorare 、 Rgino.Fi 和 dYdX,使用過服務的用戶數達 2 千萬人次,日均月活在數萬量級。

化繁為簡:Cairo 1.0如何改變StarkWare的編寫範式

借助和成熟的 DeFi 和鏈游進行合作,StarkEx 的市場化之路整體較為順利,但是 StarkNet 將作為通用 Layer 2 參與各個 L2 競爭之中,Cairo 將有望進一步帶動 StarkNet 市場佔有率的提升。

結語

Cairo 1.0 並非簡單作為語言更新,而是要承擔更為豐富的角色,包括激活 StarkNet 的 EVM 兼容性和執行效率,通過借助 Rust 成熟的編程範式,如所有權、強類型等,減輕了開發難度。

同時需要注意,Cairo 1.0 仍有些未完全實現的功能,其完全狀態可能需要更長的開發週期,其代幣發行時間也會隨之進行調整。

總之,Cairo 在結束 StarkNet 目前的 “非完全” 版具有重要意義,結合 Sierra 、編譯器等新工具,以及和主流開發工具的結合,顯著減少開發者在其上編寫智能合約的壓力。


(以上內容獲合作夥伴 PANews 授權節錄及轉載,原文連結

聲明:文章僅代表作者個人觀點意見,不代表區塊客觀點和立場,所有內容及觀點僅供參考,不構成投資建議。投資者應自行決策與交易,對投資者交易形成的直接間接損失作者及區塊客將不承擔任何責任。

免責聲明:本文只為提供市場訊息,所有內容及觀點僅供參考,不構成投資建議,不代表區塊客觀點和立場。投資者應自行決策與交易,對投資者交易形成的直接或間接損失,作者及區塊客將不承擔任何責任。

下一篇