系統盤點StarkNet技術優越性

TL;DR

ZKR 設計:彙總經濟學使得交易越多,Gas 越低;ZK 證明-驗證的方法取代了節點執行全部交易以驗證正確性的方法,大大降低鏈上計算與儲存資料量,提高執行效率;工作流優越性需要等待其他 zkEVM/zkVM 確定設計後再對比優越性;原生賬戶抽象可以“消滅”助記詞,已經實現手機硬錢包,併為更加易用、安全、低成本的鏈上可程式設計奠定基礎。

EVM 相容:Solidity-Cairo 轉譯器 Warp 使得 StarkNet 語言級相容 EVM;用 Cairo 編寫的 zkEVM Kakarot 使得 StarkNet 位元組碼相容 EVM。

STARK 證明系統:純粹依賴雜湊和資訊理論,不依賴可信設定,抗量子攻擊,比 SNARK 更安全;證明生成速度具備線性擴充套件性,驗證時間和證明大小具備對數擴充套件性;缺點在於生成的證明尺寸更大;遞迴證明可將多個證明驗證後合併,理論合併量上限達到 6000 萬,也為 L3 奠定技術基礎;STARK 友好的雜湊函式如 Rescue hash function 等相比以太坊 keccak256 有更高執行效率。

Cairo 虛擬機器與語言:Cairo VM 是一個 STARK 友好的、圖靈完備的 CPU 架構;CPU 架構靈活性高,可透過軟體程式設計無限接近 ASIC 效能,理論上可以復刻任意虛擬機器;Cairo 語言基於 Cairo 彙編和 AIR,執行效率非常高,但開發體驗類似 Rust 和 C 語言,指標+記憶體大套餐使得學習難度中上;開發者可使用證明者一側的“提示”(hints)來建立快捷方式並啟用某些計算,降低了開發難度;Cairo 支援透過位元組碼雜湊載入程式,大大提高鏈上擴充套件性和隱私性,成為隱私方案的強力替代。

、ZK-Rollup優越性

在以太坊上,每提交一筆交易都需要所有節點檢查、驗證並執行交易來驗證計算正確性,並將計算後的狀態變化在網路中廣播。

系統盤點StarkNet技術優越性

https://ethereum。org/zh/developers/docs/evm/

StarkNet 僅在鏈下執行計算並生成一個 ZK 證明,然後在鏈上驗證該證明的正確性,最後把多個 L2 交易打包為以太坊上的一筆交易。因此,StarkNet 上發生的交易成本可以被同一打包批次的其他交易所均攤,就像拼車(拼多多)一樣,交易越多,成本越低。

除此之外,相比以太坊讓每個節點完整執行交易的方法,StarkNet 為交易生成 ZK 證明的方法可以大大提高網路執行速度、減少鏈上通訊量、增加網路吞吐,因此 StarkNet 相比以太坊具有更高 TPS 和更低 Gas。

簡而言之,將驗證計算正確性比喻為老師需要檢查同學們是不是掌握了知識。以太坊的方法是檢查每個同學是否能背誦整本教科書,而 StarkNet 的方法是讓同學們做卷子。後者的效率更高,成本更低,但仍然保證安全

StarkNet工作流程

與大部分 ZKR/ZK 專案一樣,StarkNet 存在一類稱之為證明者的角色來生成證明。驗證者作為 L1(以太坊) 上的合約來驗證證明,驗證者合約程式碼都是相同的。

具體而言,StarkNet 有五個組成部分,分別是在 StarkNet 上的 Prover(證明者)、Sequencer(排序器)和全節點,以及部署在以太坊上的驗證者(Verifier)和核心狀態合約(StarkNet Core)。

系統架構如下圖:

系統盤點StarkNet技術優越性

https://david-barreto。com/starknets-architecture-review/#more-4602

StarkNet 的工作流程如下:

1、當我們在 StarkNet 上發起一個交易,一個鏈下伺服器——排序器將會接收、排序、驗證,並將它們打包到區塊。執行交易,然後狀態轉換髮送給 StarkNet Core 合約;

2、證明者將為交易生成證明,併發送給以太坊的驗證者合約;

3、驗證者將驗證結果傳送到以太坊上的 StarkNet Core 合約,並從 StarkNet Core 合約觸發一組新的以太坊交易,以更新鏈上的全域性狀態以進行記錄儲存。狀態事務作為“calldata” (EIP-4844後為Blob)來發送,以節省 L1 事務 gas。這些“metadata”可被 StarkNet 全節點解密。

全節點基本發揮儲存功能。全節點儲存狀態改變、元資料、證明以及記錄在 StarkNet 中的已被執行的所有事務,並跟蹤系統的當前全域性狀態。在有必要的時候,全節點將解密“metadata”來重構 StarkNet 的歷史。

工作流程方面的優越性結論可能需要等待其他 ZKR/Validity Rollup 工作流基本確定後,透過對比得出。

原生賬戶抽象

不同於以太坊 EOA+CA 的雙賬戶設計,StarkNet 實現了原生賬戶抽象,只有一種賬戶設計。

這對合約錢包以及更加低成本、安全、易開發的鏈上可程式設計打開了大門,這可以推動 ECDSA 以外的簽名驗證方式、多籤管理、社會恢復、聚合簽名、交易限制、隱私保護、gas 最佳化、gas 代付、異幣 gas、應用聚合、自動收益等各個方面的發展。

下圖為 StarkNet 交易流程圖(仍然借鑑了4337的設計思路):

系統盤點StarkNet技術優越性

https://community。starknet。io/t/starknet-account-abstraction-model-part-1/781

而且 StarkNet 已經實現了“手機硬錢包”。

1。以太坊上的 EOA 僅支援 Secp256k1 橢圓曲線上的簽名方案 ECDSA

2。大部分的智慧手機都不支援以太坊的橢圓曲線。

3。所以移動錢包需要依靠軟體簽署交易,移動錢包因此是熱錢包。

4。StarkNet 原生賬戶抽象,支援多種橢圓曲線,簽名驗證高度可程式設計,因此基於 StarkNet/Cairo 的手機錢包完全可以變成硬錢包。

StarkNet 上原子化 NFT 協議 Briq 的開發者 @sylvechv 在部落格中也寫到,在實現了原生賬戶抽象的 StarkNet (程式語言為Cairo)上,可以授權一個 mobile_key 簽署一定數額的交易,和/或只為某些合同,和/或只為某些功能(例如沒有transfer()而只有play())。使用者甚至可以在一定時間後撤銷它。

在 StarkNet 中的合約錢包,授權手機簽名的流程類似於

1)在手機上生成 pub/priv 金鑰

2)使用“管理員金鑰”在智慧錢包上授權 pubkey

二、EVM相容

StarkNet 網路本身不相容 EVM,而設計了另外一套 ZK 友好的 Cairo VM。

StarkNet 沒有針對以太坊操作碼做 ZK 電路,而是自己做了一套更加 ZK 友好的組合語言、AIR(代數中間表示) 以及高階語言 Cairo。

系統盤點StarkNet技術優越性

https://www。youtube。com/watch?v=SEp5SFaYQHY&t=6s

不相容 EVM 的弊端在於無法繼承以太坊程式碼和工具鏈,因此,**以太坊應用生態沒有大規模移植到 StarkNet 的基礎。**且 Cairo 語言對開發者存在一定學習門檻,Cairo 語言和 STARK 證明系統相關工具鏈和庫也處於起步階段。

但獨立設計 VM 的好處在於,StarkNet 的 Cairo VM 更 ZK 友好,電路執行效率更高(程式碼更少),在未來將表現為 TPS 更高,Gas 更低,拋棄 EVM 設計後還能實現許多以太坊不能完成的應用創新,如原生賬戶抽象的合約錢包。

StarkNet 屬於 Vitalik 定義的 type 4 級別——語言相容的 zkEVM(StarkNet由於定製了虛擬機器嚴格來講屬於zkVM)。

系統盤點StarkNet技術優越性

https://vitalik。eth。limo/general/2022/08/04/zkevm。html

儘管 StarkNet 本身不相容 EVM,但 StarkNet 仍然可以透過其他方式相容以太坊。

1、Warp:將 Solidity 轉譯為 Cairo 語言的轉譯器

Warp 是一個 Solidity-Cairo 轉譯器,目前已經由以太坊著名基礎設施團隊 Nethermind 開發完成。Warp 可以把 Solidity 程式碼轉譯為 Cairo,但轉譯後的 Cairo 程式往往需要修改並增添 Cairo 特性(如呼叫內建函式,最佳化記憶體等)才能最大化執行效率。

2、Kakarot:一個用 Cairo 語言編寫的 zkEVM

Kakarot 是一個用 Cairo 寫的 zkEVM,是一個位元組碼等效 EVM 的 zkEVM,目前處於測試階段。以太坊應用可以透過部署到 Kakarot 的方式移植到 StarkNet。

此前以太坊聯創 Vitalik 和 StarkWare 聯創 Eli Ben-Sasson 參與了 Kakarot 舉辦的 Twitter Space。

三、STARK證明系統

3.1簡介

目前有許多不同的證明系統(生成和驗證證明) ,如 Halo、PLONK、Groth16、Groth09 、Marlin、Plonky2 等,它們都屬於 SNARK 證明系統。證明系統存在一個證明者生成證明,一個驗證者驗證證明。而不同的 ZK 專案幾乎都會使用不同的證明系統,StarkNet 使用的 STARK 某種意義上屬於一種特別的 SNARK 。

系統盤點StarkNet技術優越性

https://medium。com/alliancedao/zkps-in-web-3-now-and-the-future-21b459348f29

SNARK 全稱 Succinct Non -interactive Argument of Knowledge(零知識簡潔非互動論證),STARK 全稱

S

calable Transparent Argument of K

nowledge(零知識可擴充套件透明知識論證)。

SATRK 作為一種特殊而創新的 SNARK,S 的含義從簡潔(Succinct)變為可擴充套件(Scalable),T 代表透明,取代了非互動屬性。

系統盤點StarkNet技術優越性

https://www。altoros。com/blog/zero-knowledge-proof-improving-privacy-for-a-blockchain/

STARK 相比 SNARK 有更多創新。它不需要和 SNARK 一樣依賴“可信設定”。

它還帶有更簡單的密碼學假設,避免了對橢圓曲線、配對和指數知識假設的需要,純粹依賴雜湊和資訊理論,因此抗量子攻擊。總體來講 STARK 比 SNARK 更安全。

在擴充套件性方面,STARK 的擴充套件性更強。證明生成速度具備線性擴充套件性,驗證時間和證明大小具備對數擴充套件性。

但缺點在於生成的證明尺寸更大。但隨著證明規模增加,驗證成本將會邊際遞減——這意味證明越大,總成本越低。

系統盤點StarkNet技術優越性

https://research。thetie。io/zero-knowledge-starks-snarks/

3.2擴充套件性詳解

3.2.1證明時間線性擴充套件:證明人花費的時間與雜湊呼叫的數量呈近似線性關係。

在 80 位元的安全級,STARK 每 12288 次雜湊呼叫的證明者執行時間為 1 秒,得 12288次/S;而每 98304 次雜湊呼叫需要 10 秒,得 9830次/S,因此,我們可以知道 STARK 的證明時間和雜湊呼叫基本呈近似線性關係。如下圖所示

系統盤點StarkNet技術優越性

ttps://eprint。iacr。org/2021/582。pdf(左圖 80 位元安全性右圖 100 位元安全性,y軸單位為秒)

3.2.2驗證和證明大小對數擴充套件:驗證時間(與證明大小)與雜湊呼叫呈現對數關係。

如下圖所示:

系統盤點StarkNet技術優越性

https://eprint。iacr。org/2021/582。pdf(y軸單位為毫秒)

左圖可以看出,當雜湊呼叫從 3072 增加到 49152,驗證時間從 40 毫秒增加到 60 毫秒。而當雜湊呼叫從 49152 增加到 786432,驗證時間僅從 60 毫秒增加到 80 毫秒。 證明大小同理。因此,我們可得知,

雜湊呼叫次數越多,平均驗證時間越短,平均證明大小也會更小。

上述試驗的配置統一如下

1、作業系統:Linux 5。3。0-51-generic x86 64。

2、CPU:英特爾(R)酷睿(TM)i7-7700K @ 4。20GHz(4個核心,每個核心2個執行緒)。

3、記憶體:16GB DDR4(8GB × 2,速度:2667 MHz)

4、證明者使用多執行緒,驗證者被限制為單執行緒。

3.2.3遞迴證明

任何通用的、簡潔的知識系統的證明/論證(特別是STARKs) 都可以用來遞增地驗證計算。這意味著一個計算可以產生一個證明,以證明該計算的前一個例項的正確性,這個概念被非正式地稱為 “遞迴證明組合”或者“遞迴STARKs”。

換句話說,一個遞迴 STARK 證明者可為一個陳述生成一個證明,即系統的狀態可以從 a 移到 a+1。因為證明者已經驗證了一個證實 a 的計算完整性的(遞迴)證明,並且忠實地執行了狀態 a 的計算,達到了新的狀態 a+1。

簡而言之,你可以理解該過程將 a 和 a+1 兩個證明合併為了一個證明。如下圖所示:

系統盤點StarkNet技術優越性

https://medium。com/starkware/recursive-starks-78f8dd401025

這些陳述各自被平行證明。然後,每對證明都由遞迴驗證器語句(一個驗證 STARK 證明的 Cairo 程式)進行驗證,併為其生成一個證明。該宣告斷言兩個證明已被驗證是正確的。

接下來,這兩個證明透過遞迴驗證程式語句再次合併。這匯出為證明所有四個原始陳述的一個證明。然後可以最終在鏈上提交該證明,由 Solidity 驗證者智慧合約進行驗證。

遞迴證明為 L3 的發展奠定技術基礎。類似於 StarkNet 作為 L2 在 L1(以太坊)上工作的方式——StarkNet 將計算證明交給以太坊上用 Solidity 編寫的驗證者合約驗證證明。L3 可以在 StarkNet 上部署一個用 Cairo 編寫的驗證者合約以驗證 L3 中的遞迴證明。

3.2.4遞迴證明歷史線索

StarkWare 在 2020 年 8 月 31 日釋出的文章中提到,能夠將 30 萬筆交易在 6 分 3 秒內聚合為一個證明。

ZK 友好的雜湊函式

雜湊函式在以太坊(以太坊使用keccak256)中常用於生成區塊、交易、狀態雜湊,是區塊鏈基礎技術。

ZK 友好的雜湊函式的意義在於,EVM 本身使用的 keccak256 ZK 不友好,變成電路執行效率非常低(很多行),

使用 ZK 友好的雜湊函式轉為電路的程式碼量更少,因此可以提高證明效率。

因此,StarkNet 使用 STARK 友好的雜湊函式(SFH)可以顯著提高執行效率。

STARK 友好的雜湊(SFH)函式,如 Rescue hash function(擴充套件性部分的Hash呼叫),特點包括以下三點

1、帶有證明的算術化電路,能夠將10萬個雜湊值(3。2MB的資料)壓縮到 200kB,有 80 位元的安全性。

2、證明者在四核CPU和16GB記憶體的配置下能夠每秒壓縮100個雜湊值。

3、驗證者在單核CPU和4GB記憶體的情況下,能夠在 10ms 內對證明進行驗證。

系統盤點StarkNet技術優越性

https://twitter。com/Ingo_zk/status/1573033153672921093

四、Cairo虛擬機器和語言

4.1簡介

Cairo VM 是一個是一個採用馮諾依曼架構的 CPU VM,其程式語言也叫 Cairo。整個 Cairo VM 以及 Cairo 語言基於 STARK 設計。

Cairo 是

C

PU

A

lgebraic

I

ntermediate

R

epresentation (代數中間表達)的首字母縮寫。Cairo VM 包含單個 AIR 來驗證這個 「CPU」 的指令集。Cairo 語言基於 Cairo 彙編,因此編譯效率非常高。

Cairo 語言的程式設計體驗偏彙編(C和Rust,經常會用到指標),它具有以下特性:記憶體、函式呼叫、遞迴和分支條件。它還使用證明者一側的“提示”(hints)來建立快捷方式並啟用某些計算。

系統盤點StarkNet技術優越性

https://www。cairo-lang。org/docs/how_cairo_works/index。html#how-cairo-works(我捏)

Cairo VM 和 Cairo 讓我有一種 Unix 和 C 語言的感覺。

系統盤點StarkNet技術優越性

https://www。cairo-lang。org/docs/hello_cairo/amm。html(AMM程式碼片段)

接下來將介紹 Cairo 的一些強大特性。

4.2啟動載入:從雜湊載入程式

程式可以將另一個程式位元組碼寫入記憶體,並讓 Program Counter 指向該記憶體段,然後執行該程式。

一個從雜湊啟動載入的用例是,一個被稱為啟動載入器的程式計算並輸出另一個程式的位元組碼,然後像之前一樣開始執行它。這樣驗證者只需要知道程式的雜湊而非完整位元組碼。

這有兩個好處:

可擴充套件性,驗證時間和程式大小呈現對數關係,正如 STARK 部分提到的。

隱私性,驗證者可以驗證程式是否正確執行而無需知道計算。

4.3在同一個證明中執行不同程式

正如前文所述,啟動載入器可以做一個擴充套件。比如執行好幾個程式。輸出每一個程式的位元組碼hash和程式的輸出。而程式可以描述完全不同的計算。

因為proof的大小和驗證時間都和計算的大小呈亞線性關係,因此可以使用一個載入器執行多個程式,然後生成一個證明來確保所有程式的有效性。

系統盤點StarkNet技術優越性

就像滴滴打車一樣

驗證的成本在這些程式之間被攤銷了。隨著更多程式加入批處理,最終的攤銷驗證成本將越來越接近於0。參考 STARK 部分的“驗證和證明大小對數擴充套件”。

4.4高階最佳化:即時編譯和位元組碼生成

在程式執行過程中,一些高階最佳化可以透過位元組碼的自動生成來實現。

比如,對於一個函式,不同於從記憶體中預取對應的值,你可以直接複製程式的位元組碼,然後在對應的指令上直接賦予對應的值;考慮一個指令“從記憶體中讀取x和c,然後計算x+c”,一旦c的值是已知的(此時用C表示),我們可以用更高效的指令去替代它,“從記憶體中讀取x,然後計算x+C”,C是指令的立即數。

因此,我們可以進一步提高執行效率

4.5增量可驗證計算:很牛的遞迴證明

類似 STARK 的遞迴證明recursive proof部分提到的。

基於從hash啟動載入的概念,整個驗證過程可以編碼成一個hash,然後整個驗證過程作為引數傳遞給自己(這也是生成遞迴證明的一個步驟)。

4.6其他重要優勢

內建函式

開發者直接呼叫內建函式可以減少計算開銷,而不需要程式碼轉換。相當於 ASIC 晶片寫好的電路或者數學中給定的、驗證過的公式。

圖靈完備

支援計算(或者驗證,因為Cairo VM本身不執行計算,僅驗證計算正確性,計算在鏈下)一切可計算的問題。因此理論上能夠復刻其他虛擬機器,比如前面提到的用 Cairo 編寫的 zkEVM,理論上也可以復刻其他在未來可能開源的 zkEVM/zkVM 如 Scroll、Hermerz、zkSync、Miden、Zero 等。

CPU 架構

更加靈活,可以透過軟體程式設計的方式無限接近 AISC 的效能(所以Cairo會做CPU?)。

提示:關於 CPU 架構、記憶體、Cairo 語法等方面的更多特性我還在挖掘中(C語言沒跑了)……