Aleo 是一個專注於隱私保護的區塊鏈項目,透過零知識證明技術(ZKP)實現更高的隱私和可擴展性。 Aleo 的核心理念是讓使用者能夠在不洩露個人資料的前提下進行身份驗證和資料處理。
本文主要介紹了Aleo 的專案概要及最新進展,對市場十分關心的puzzle 演算法更新做了詳細的解讀。
最新演算法搶先看;)TLDR
Aleo 網路每小時隨機產生一個ZK電路;礦工在這一小時內需要嘗試不同的nonce 作為電路的輸入,計算出witness(即電路中的所有變量,這個計算過程也叫synthesize),對witness 求Merkle root後,判斷是否滿足挖礦難度要求。由於電路的隨機性,這個挖礦演算法對GPU 並不友好,在計算加速方面存在很大的難度。
融資背景
Aleo 於2021 年完成了由a16z 領投的2,800 萬美元的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 任務(7,500 萬),將在前六個月內分發,同時包括質押、運行驗證者和驗證節點的獎勵。
-
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 的合法性需要校驗其epoch_hash 符合validator 維護的latest_epoch_hash,其計算出的proof_target 符合網路中valiator 維護的latest_proof_target,同時該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 的proof_target,判斷其是否滿足當前epoch 的latest_proof_target,若滿足則計算成功,提交上文中構建輸入需要的reward address、epoch_hash 和counter 作為solution 並廣播
-
同一個epoch 中可透過迭代counter 的方式更新EpochProgram 的輸入進行多次solution 計算
挖礦的變化和影響
經過此次更新後,puzzle 由生成proof 轉變為生成witness,每一個epoch 內的所有solution 計算邏輯一致但是不同epoch 計算邏輯有較大區別。
從先前的測試網中我們可以發現許多優化手段著重於使用GPU 對生成proof 階段的MSM 和NTT 計算進行優化從而提高挖礦效率,此次更新完全摒棄了這部分計算;同時由於生成witness 的過程產生於執行一個跟隨epoch 變化的program,其中的指令將存在部分串行執行的依賴關係,所以實現並行化具有不小的挑戰。