引領區塊鏈隱私革命:Aleo 最新算法解讀
Aleo 是一個專注於隱私保護的區塊鏈項目,通過零知識證明技術(ZKP)實現更高的隱私和可擴展性。Aleo 的核心理念是讓用戶能夠在不洩露個人數據的前提下進行身份驗證和數據處理。
本文主要介紹了 Aleo 的項目概要及最新進展,對市場十分關心的 puzzle 算法更新做了詳細的解讀。
最新算法搶先看 ;)TLDR
Aleo 網絡每小時隨機生成一個ZK電路;礦工在這一小時內需要嘗試不同的 nonce 作為電路的輸入,計算出 witness(即電路中的所有變量,這個計算過程也叫 synthesize),對 witness 求 Merkle root 後,判斷是否滿足挖礦難度要求。由於電路的隨機性,這個挖礦算法對 GPU 並不友好,在計算加速方面存在很大的難度。
融資背景
Aleo 於 2021 年完成了由 a16z 領投的 2800 萬美元的 A 輪融資,並在 2024 年完成了 2 億美元的 B 輪融資,投資方包括 Kora Management、SoftBank Vision Fund 2、Tiger Global、Sea Capital、Slow Ventures 和 Samsung Next 等。這輪融資使 Aleo 的估值達到了 14.5 億美元。
項目概要
隱私性
Aleo 的核心是零知識證明(ZKPs)技術,這使得交易和智能合約的執行可以在保持隱私的前提下進行。用戶的交易細節,如發送方和交易金額,默認情況下是隱藏的。這種設計不僅保護了用戶隱私,還允許在必要時進行選擇性披露,非常適合 DeFi 應用的發展。其主要組件包括:
- Leo 編譯語言:基於 Rust 語言改編,專門用於開發零知識應用(ZKApps),降低了開發者對密碼學知識的要求。
- snarkVM 和 snarkOS:snarkVM 允許鏈下執行計算,鏈上僅驗證計算結果,從而提升了效率。snarkOS 確保數據和計算的安全,並允許無許可的功能執行。
- zkCloud:提供安全、私密的鏈下計算環境,支持用戶、組織和 DAO 之間的編程互動。
Aleo 還提供了集成開發環境(IDE)和軟件開發工具包(SDK),支持開發者快速編寫和發布應用;此外,開發者可以在 Aleo 的程序註冊表中部署應用,無需依賴第三方,如此便降低了平台風險。
可擴展性
Aleo 採用了 off-chain 的處理方式,交易首先在用戶設備上計算證明,然後僅將驗證結果上傳到區塊鏈。這種方式大大提高了交易的處理速度和系統的可擴展性,避免了類似以太坊的網絡擁堵和高昂的費用。
共識機制
Aleo 引入了 AleoBFT,這是一種混合架構的共識機制,結合了驗證者的即時最終性和證明者的計算能力。AleoBFT 不僅提高了網絡的去中心化程度,還增強了性能和安全性。
- 區塊快速最終性:AleoBFT 確保每個區塊在生成後立即得到確認,提升了節點穩定性和用戶體驗。
- 去中心化保障:通過將區塊生產與 coinbase 生成分離,驗證者負責生成區塊,證明者進行證明計算,防止少數實體壟斷網絡。
- 激勵機制:驗證者和證明者共享區塊獎勵;鼓勵證明者通過質押代幣成為驗證者,從而提升網絡的去中心化程度和計算能力。
Aleo 允許開發者創建不受 gas 限制的應用程序,因此尤其適用於機器學習等需要長時間運行的應用。
目前進展
Aleo 將於 7月1日啟動激勵測試網,以下是一些重要的最新信息:
- ARC-100 投票通過:ARC-100("Aleo 開發人員和運營商的合規最佳實踐"提案,涉及合規方面、Aleo 網絡上資金的鎖定和延時到帳等安全措施)的投票已經結束,並獲得通過。團隊正在進行最終的調整。
- 驗證者激勵計劃:該計劃將於 7 月 1 日啟動,旨在驗證新的 puzzle 機制。計劃將運行至 7 月 15 日,期間將分配 100 萬 Aleo 積分作為獎勵。節點生成的積分百分比將決定其獎勵份額,每個驗證者至少需賺取 100 代幣才能獲得獎勵。具體細則尚未敲定。
- 初始供應和流通供應:初始供應量為 15 億代幣,初始流通供應量約為 10%(尚未最終確定)。這些代幣主要來自 Coinbase 任務(7500 萬),將在前六個月內分發,同時包括質押、運行驗證者和驗證節點的獎勵。
- Testnet Beta 重置:這是最後一次網絡重置,完成後將不會添加新功能,網絡將與主網類似。重置是為了添加 ARC-41 和新 puzzle 功能。
- 代碼凍結:代碼凍結已於一周前完成。
- 驗證節點擴展計劃:初始驗證節點數量為 15 個,目標是在年內增加到 50 個,並最終達到 500 個。成為委託者需要 1 萬代幣,成為驗證者需要 1000 萬代幣,這些數額將隨著時間逐漸減少。
算法更新解讀
Aleo 於近日公布最新測試網消息的同時,更新了最新版本的 puzzle 算法,新算法不再著重於 zk proof 結果的生成,移除了 MSM 和 NTT (二者是 zk 中生成 proof 大量使用到的計算模塊,之前測試網參與者以優化該算法的效率來提升挖礦收益)的計算,著重於產生 proof 之前的中間數據 witness 的生成。我們在參考官方的 puzzle spec 和代碼後,對最新算法做一個簡單介紹。
共識流程
共識協議層面上,其流程中 prover 和 validator 分別負責產生計算結果 solution 和出塊並聚合打包 solution。流程如下:
- Prover 計算 puzzle 構建出 solutions 並廣播到網絡中
- Validator 聚合交易和 solution 為下一個區塊,保證 solution 數量不超出共識限制(MAX_SOLUTIONS)
- Solution 的合法性需要校驗其 epochhash 符合 validator 維護的 latestepochhash,其計算出的prooftarget 符合網絡中 validator 維護的latestprooftarget,同時該 block 中包含的 solution 數量小於共識限制
- 有效的 solution 可以獲得共識獎勵
Synthesis Puzzle
最新版的算法核心稱為 Synthesis Puzzle,其核心是針對每個 epoch 固定產生一個共同的 EpochProgram,通過為輸入和 EpochProgram 構建 R1CS 證明電路,產生對應 R1CS assignment (即大家提到的 witness)並作為 Merkle tree 的葉子節點,計算出所有葉子節點後生成 Merkle root 並轉換為 solution 的 proof_target。構建 Synthesis Puzzle 的詳細流程和規範如下:
- 每一次 puzzle 計算稱為 nonce,它是由接收挖礦獎勵的地址、epoch_hash 和 一個隨機數 counter 構建,每次需要計算新的 solution 時可以通過更新 counter 獲得新的 nonce
- 每一個 epoch 中,網絡中所有 prover 需要計算的 EpochProgram 是同一個,它由當前的 epoch_hash 產生的隨機數從指令集中抽樣出來,抽樣邏輯是:
- 指令集是固定的,每一個指令(instruction)包含一個或多個計算操作,每一個指令有一個預設的權重和操作計數
- 抽樣時根據當前 epoch_hash 生成隨機數,根據該隨機數從指令集中結合權重獲取指令並順序排列,累積操作計數到 97 之後停止抽樣
- 將所有指令組成 EpochProgram
- 使用 nonce 作為隨機數種子生成 EpochProgram 的輸入
- 聚合 EpochProgram 對應的 R1CS 和 input,進行 witness (R1CS assignment)計算
- 計算出所有 witness 後,這些 witness 將被轉換為對應的 merkle tree 的葉子節點序列,merkle tree 是一個深度為 8 的 8 元 K-ary Merkle tree
- 計算 merkle root 並將其轉換為 solution 的 prooftarget,判斷其是否滿足當前 epoch 的 latestprooftarget,若滿足則計算成功,提交上文中構建輸入需要的 reward address、epochhash 和 counter 作為 solution 並廣播
- 同一個 epoch 中可通過迭代 counter 的方式更新 EpochProgram 的輸入進行多次 solution 計算
挖礦的變化和影響
經過此次更新後,puzzle 由生成 proof 轉變為生成 witness,每一個 epoch 內的所有 solution 計算邏輯一致但是不同 epoch 計算邏輯有較大區別。
從之前的測試網中我們可以發現很多優化手段著重於使用 GPU 對生成 proof 階段的 MSM 和 NTT 計算進行優化從而提高挖礦效率,此次更新完全摒棄了這部分計算;同時由於生成 witness 的過程產生於執行一個跟隨 epoch 變化的 program,其中的指令將存在部分串行執行的依賴關係,所以實現並行化具有不小的挑戰。