StarknetAstro

StarknetAstro

什麼是 Starknet:一個不同的 zkVM 技術堆棧

摘要#

  1. Starknet 的運作方式:與以太坊相比,Starknet 只需要一個序列器來在鏈外執行計算。然後,為了減少數據量,證明者為交易生成 ZK-STARK 證明。最後,驗證者在鏈上驗證證明的正確性,並最終將多個 L2 交易打包成一個在以太坊上的交易(稱為 Rollup)。因此,Starknet 減少了鏈上的執行和存儲成本,從而導致更低的燃氣費用和更高的 TPS。

  2. EVM 等效性:Starknet 擁有一個 ZK 友好的 Cairo VM,這與 EVM 不同,這意味著 Starknet 不支持 EVM 和 Solidity。但隨著 Solidity 編譯器 Warp 和 Cairo zkEVM Kakarot 的引入,Starknet 可以實現 3 類 EVM 等效性

  3. STARK 證明系統:與其他 ZK 證明系統相比,STARK 更安全且更具可擴展性。其證明生成速度是線性可擴展的,驗證時間和證明大小是 對數可擴展的($O (polylog (N))$)。證明越大,總成本和驗證時間越低。此外,STARK 完全依賴於哈希和信息理論,因此它具有更簡單的密碼學假設,使其抵抗量子攻擊。但其缺點是初始證明生成的大小較大。

  4. Cairo VM 和語言Cairo VM 是一個 STARK 友好的、圖靈完備的冯・诺依曼 CPU 架構。它可以通過軟件編程無限接近 ASIC 的性能。它擁有一種名為 Cairo 的編程語言,基於 Cairo 組合 AIR 和 Sierra。這使得編譯效率高且安全。它類似於 Rust,具有一定的學習難度。Cairo 支持驗證者通過字節碼哈希來驗證程序,提高鏈上可擴展性和隱私性。但 Cairo 仍在更新中。

在另一篇文章中,我們將展示證明者、序列器、完整節點、客戶端、Cairo、協議及其他 Starknet 網絡組件的去中心化進展。

🛒 Starknet 的運作方式#

首先,讓我們看看以太坊是如何運作的。在以太坊中,驗證交易的正確性需要所有節點檢查、驗證和執行每個交易。這個過程確保計算的準確性,並在整個網絡中廣播結果狀態的變更。

https://ethereum.org/en/developers/docs/evm/

但 Starknet 只在鏈外執行計算並生成證明,然後在鏈上驗證證明的正確性,並最終將多個 L2 交易打包成一個在以太坊上的交易。準確地說,ZKR 將交易寫入以太坊作為 calldata,其中包含對智能合約函數的外部調用的數據被存儲(類似於內存)。

因此,Starknet 可以大大提高網絡運行速度,減少鏈上通信,增加網絡吞吐量,因此與以太坊相比擁有更高的 TPS 和更低的燃氣費用。

簡而言之,驗證計算的正確性可以比作老師需要檢查班級是否掌握某個主題。

以太坊的方法是檢查每個學生(節點)是否記住了整本教科書(狀態歷史),而 Starknet 的方法則是進行紙質考試。後者更高效且成本更低,但仍然保證安全。

這比文本考試更無聊

與大多數 ZKR(如 Validity Rollup、Scroll、Polygon zkEVM 和 zkSync)一樣,Starknet 擁有一類角色稱為證明者來生成證明。而驗證者則在 L1(以太坊)上驗證這些證明。

具體來說,Starknet 由五個組件組成:證明者、序列器和 Starknet 上的完整節點,以及驗證者和 Starknet 核心(它們都部署在以太坊上)。

下圖顯示了 Starknet 的架構,感謝 David 的出色工作!

image

Starknet 的工作流程如下:

  1. 當我們在 Starknet 上發起交易時,一個鏈外服務器 —— 序列器 —— 接收、排序、驗證並將其打包成區塊。執行交易,然後將狀態轉換發送到 Starknet 核心合約。

  2. 證明者為每個交易生成證明並將其發送到部署在以太坊上的驗證者合約。

  3. 驗證者將驗證結果發送到以太坊上的 StarkNet 核心合約,並觸發一組新的以太坊交易,從 StarkNet 核心合約更新鏈上的全局狀態以進行記錄。狀態轉換作為 "calldata"(EIP-4844 後的 Blob)發送,以節省 L1 交易的燃氣費用。這些 "metadata" 可以被 Starknet 完整節點解密。

一個 完整節點 存儲狀態變更、元數據、證明,並記錄在 Rollup 中執行的所有交易。它跟踪系統的當前全局狀態。解密 "metadata" 允許在必要時重建 Starknet 的歷史。

🚄EVM 等效性#

Starknet 網絡本身不是 EVM 等效的,並設計了一個 ZK 友好的 Cairo VM。

Starknet 並沒有為以太坊的操作碼製作電路,而是製作了自己的一套更 ZK 友好的組合語言、AIR(代數中間表示)和高級語言 Cairo。

https://drive.google.com/file/d/1dhZ5GtSK4sHCNcklGzNHfR-lSzplpD8J/view

不與 EVM 等效的缺點是無法繼承以太坊的 Solidity 代碼和工具鏈,因此沒有大規模將以太坊應用生態系統遷移到 Starknet 的基礎。Cairo 語言對開發者有一定的學習門檻,Cairo 工具鏈和庫仍處於起步階段。

然而,設計獨立的 VM 也有其好處。例如,Starknet 的 Cairo VM 更加 ZK 友好,能更高效地執行電路,從而在未來實現更高的 TPS 和更低的燃氣使用(更多細節將隨後提供)。此外,放棄 EVM 設計為應用創新開辟了許多在以太坊上無法實現的可能性。

Starknet 屬於 Vitalik 定義的 4 類 EVM 等效性(嚴格來說,Starknet 是一個 zkVM)。

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

儘管 Starknet “本身” 不是 EVM 等效性,但 Starknet 在其他方面仍然與以太坊等效。

Warp 是一個 Solidity-Cairo 轉換器,現在已經完成,由 Nethermind 開發。它使 Warp 能夠將以太坊智能合約轉換為 Starknet Cairo 合約。

https://github.com/NethermindEth/warp

然而,有幾個 Solidity 的特性尚未得到支持或在 Starknet 中沒有類似的功能。雖然 其中一些特性 可能在未來引入,但由於平台之間的根本差異,其他特性可能無法實現。

Kakarot 是一個用 Cairo 編寫的 zkEVM(因此它是一個合約),字節碼等效 EVM,允許開發者運行任何 EVM 字節碼程序。以太坊應用可以通過部署到 Kakarot 在 Starknet 上部署。

https://github.com/sayajin-labs/kakarot

Kakarot 仍在進行中,尚未準備好投入生產。

Starknet 的 ZK 友好的 Cairo VM 不支持 EVM 和 Solidity。然而,通過引入 Solidity 編譯器 Warp 和 Cairo zkEVM Kakarot,Starknet 將能夠實現 3 類 EVM 等效性。

🧬 STARK 證明系統#

目前,有許多不同的證明系統可用於生成和驗證證明,例如 Halo、PLONK、Groth16、Groth09、Marlin 和 Plonky2 等,這些都屬於 SNARK 證明系統。每個證明系統都有一個證明者生成證明和一個驗證者驗證證明。不同的 ZK 項目幾乎使用不同的證明系統。主要的證明系統是 SNARK 和 STARK。而 Starknet 使用 STARK。

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

SNARK 代表簡潔的非交互式知識論證,而 STARK 代表可擴展的透明知識論證。STARK 是一種特殊且創新的 SNARK 類型,"S" 從簡潔變為可擴展,"T" 代表透明,取代了非交互式特性。

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

STARK 比 SNARK 有更多創新。它不需要像 SNARK 一樣依賴於 “可信設置”。它還具有更簡單的密碼學假設,避免了對橢圓曲線、配對和指數知識假設的需求,完全依賴於哈希和信息理論,因此抵抗量子攻擊。一般來說,STARK 比 SNARK 更安全。

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

而且 STARK 更具可擴展性。證明生成速度是線性可擴展的,驗證時間和證明大小是對數可擴展的。然而,缺點是生成的證明大小較大。隨著證明大小的增加,驗證成本會略微降低,這意味著證明越大,平均成本越低。

證明時間線性擴展#

讓我們看看 STARK 的 文檔。證明者花費的時間幾乎與哈希調用的次數成線性擴展。

在 80 位安全性下,STARK 每 12,288 次哈希調用執行 1 秒,產生每秒 12,288 次調用;而每 98,304 次哈希調用則需要 10 秒,產生每秒 9,830 次調用。因此,我們可以知道證明者花費的時間幾乎與哈希調用的次數成線性擴展,如下圖所示:

https://eprint.iacr.org/2021/582.pdf

驗證者時間和證明大小對數擴展#

https://eprint.iacr.org/2021/582.pdf

如左圖所示,當哈希調用從 3,072 增加到 49,152 時,驗證時間從 40 毫秒增加到 60 毫秒。而當哈希調用從 49,152 增加到 786,432 時,驗證時間僅從 60 毫秒增加到 80 毫秒。證明大小保持不變。因此,我們可以得出結論,哈希調用越多,平均驗證時間越短,平均證明大小越小。

舉個例子:驗證兩個 100 萬步程序的證明

● 每個單獨驗證的總驗證成本:$2 log2 (T) \approx 794$

● 同時驗證兩者的總驗證成本:$log2 (2T) \approx 438$

成本降低的因子為 1.8(或幾乎 2)

所有實驗均在具有以下規格的同一台機器上運行:

  1. 操作系統:Linux 5.3.0-51-generic x86 64。

  2. CPU:Intel (R) Core (TM) i7-7700K @ 4.20GHz(4 核心,2 線程每核心)。

  3. RAM:16GB DDR4(8GB × 2,速度:2667 MHz)
    當證明者使用多線程時,在所有實驗中,驗證者僅限制使用單個線程。

递归证明#

一個通用且簡潔的知識證明 / 論證系統,例如 STARKs,可以用來增量驗證計算。這意味著一個計算可以生成一個證明,證明該計算的先前實例的正確性。這一概念非正式地稱為 “遞歸證明組合” 或 “遞歸 STARKs”。

換句話說,遞歸 STARK 證明者將為一個聲明生成證明,該聲明表示系統的狀態可以從 a 移動到 a+1,因為證明者已經驗證了一個(遞歸)證明,證明了 a 的計算完整性,並忠實地在狀態 a 上執行了計算,達到了新狀態 a+1

簡而言之,您可以理解為遞歸證明將兩個證明, aa+1,組合成一個證明。如下圖所示:

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

在這個例子中,四個聲明被發送到 SHARP(驗證者),每個聲明都是並行證明的。然後,每對證明由一個遞歸驗證者聲明進行驗證,這是一個驗證 STARK 證明的 Cairo 程序,並為每次驗證生成一個證明。這個遞歸驗證者聲明確認兩個證明已被驗證為正確。接下來,這兩個證明再次由另一個遞歸驗證者聲明合併。這導致一個證明證明了所有四個原始聲明。最後,這個證明可以在鏈上提交並由 Solidity 驗證者智能合約進行驗證。

根據 Eli Ben-Sasson,StarkWare 的聯合創始人,新遞歸有效性證明有潛力將 6000 萬個交易捲起來,合併為以太坊區塊鏈上的一個交易。

⭐Cairo VM 和 Cairo 語言#

image

Cairo VM 是一個 STARK 友好的、圖靈完備的冯・诺依曼 CPU 架構。它包括一種名為 Cairo 的編程語言,基於 Cairo 組合和 AIR(代數中間表示),使其編譯效率高。

讓我們首先看看 Cairo VM。Cairo VM 是一個並行狀態機,允許交易並行執行,顯著提高 TPS。相比之下,EVM 是一個串行狀態機。

Cairo 是一種智能合約語言,可以在 Starknet 上或鏈外部署。任何 Cairo 程序都可以生成 STARK 證明。其語法類似於 Rust。

這是一個 Cairo 投票系統 的示例:

import json

from starkware.crypto.signature.signature import (
    pedersen_hash, private_to_stark_key, sign)

# 設置一個標識符,表示我們要投票的內容。
# 這將出現在用戶的簽名中,以區分
# 不同的投票。
POLL_ID = 10018

# 生成密鑰對。
priv_keys = []
pub_keys = []

for i in range(10):
    priv_key = 123456 * i + 654321  # 參見下面的“安全注意事項”。
    priv_keys.append(priv_key)

    pub_key = private_to_stark_key(priv_key)
    pub_keys.append(pub_key)

# 生成選民 3、5 和 8 的 3 票。
votes = []
for (voter_id, vote) in [(3, 0), (5, 1), (8, 0)]:
    r, s = sign(
        msg_hash=pedersen_hash(POLL_ID, vote),
        priv_key=priv_keys[voter_id])
    votes.append({
        'voter_id': voter_id,
        'vote': vote,
        'r': hex(r),
        's': hex(s),
    })

# 將數據(公鑰和投票)寫入 JSON 文件。
input_data = {
    'public_keys': list(map(hex, pub_keys)),
    'votes': votes,
}

with open('voting_input.json', 'w') as f:
    json.dump(input_data, f, indent=4)
    f.write('\n')

Cairo 程序是組合代碼的集合,Cairo 開發者將用高級語言 Cairo 而不是 Cairo 組合編寫智能合約。當我們編寫 Cairo 程序時,Cairo 編譯器將把 Cairo 代碼編譯成 Cairo 組合,然後 Cairo 組合器將組合代碼生成 Cairo 字節碼(在 Cairo CPU 上運行),以在 Cairo VM 中執行。

以下是一些 Cairo 的特性。

引導加載:從其哈希加載程序#

一個程序可以將另一個程序的字節碼寫入內存,然後將程序計數器設置為指向該內存段,從而開始執行另一個程序。

image

這一思想的一個具體用法是 “從哈希引導加載”:一個名為 “引導加載器” 的程序計算並輸出另一個程序的字節碼的哈希,然後如上所述開始執行它。這樣,驗證者只需要知道正在執行的程序的哈希,而不需要知道其完整的字節碼。

這提高了隱私性和可擴展性:

  1. 隱私:驗證者可以在不知道計算內容的情況下驗證程序的執行。

  2. 可擴展性:假設程序哈希對驗證者是已知的,則驗證時間不會線性依賴於程序大小,這將是如果程序 —— 而不是其哈希 —— 作為輸入提供給驗證者的情況。驗證時間和程序大小之間具有對數關係,如 STARK 部分所提到的。

CPU 架構

image

Cairo VM 是靈活的。它可以通過軟件編程無限接近 ASIC 的性能。

內建功能#

開發者可以直接調試和使用內部設置功能,以減少所需的計算開發量,而無需轉換任何代碼。

https://medium.com/@pban/demystifying-cairo-white-paper-part-i-b71976ad0108

ASIC 芯片所表示的電路或開發者數學中描述的實驗等同於 Cairo 的電路。然而,Cairo 仍在更新中,最新版本稱為 Cairo 1.0.

https://medium.com/starkware/cairo-1-0-aa96eefb19a0

Cairo 1.0 的主要新增功能是 Sierra(安全中間表示)。它作為 Cairo 1.0 和 Cairo 字節碼之間的新中間表示層。Sierra 的目標是確保每次 Cairo 運行 —— 即一個 Cairo 程序及其輸入 —— 都可以被證明。

感謝#

特別感謝 Cyberight Capital 對本文章的支持。

https://cyberight.capital/

Cyberight Capital 是一家替代投資機構。我們通過角色轉換和對人與技術的尊重,發現行業的有效潛在點。專注於人文、技術驅動和獨立思考。

參考文獻#

[1] Starknet 架構評審

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

[2]l2beat_final

https://drive.google.com/file/d/1dhZ5GtSK4sHCNcklGzNHfR-lSzplpD8J/view

[3] Web 3 中的 ZKPs:現在和未來

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

[4] 零知識證明:改善區塊鏈的隱私

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

[5] 零知識前沿:關於 SNARKs、STARKs 和未來應用

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

[6] Cairo 白皮書

https://www.cairo-lang.org/cairo-whitepaper/

[7] 揭開 Cairo 白皮書的神秘面紗 —— 第一部分 https://medium.com/@pban/demystifying-cairo-white-paper-part-i-b71976ad0108

[8] 揭開 Cairo 白皮書的神秘面紗 —— 第二部分

https://medium.com/@pban/demystifying-cairo-white-paper-part-ii-9f9dc51886e9

[9] 可擴展、透明和後量子安全的計算完整性

https://eprint.iacr.org/2018/046.pdf

[10] ethSTARK 文檔

https://eprint.iacr.org/2021/582.pdf

[11] 遞歸 STARKs

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

[12] AIR 文檔

https://arxiv.org/pdf/2109.14534.pdf

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。