ブロックチェーンプライバシー革命をリードする:Aleoの最新アルゴリズム解説
Aleoはプライバシー保護に特化したブロックチェーンプロジェクトで、ゼロ知識証明技術(ZKP)を通じてより高いプライバシーとスケーラビリティを実現しています。Aleoの核心理念は、ユーザーが個人データを漏らすことなく、認証とデータ処理を行えるようにすることです。
この記事では、Aleoのプロジェクト概要と最新の進展、特に市場で注目されているpuzzleアルゴリズムの更新について詳しく解説します。
最新アルゴリズムの先行公開 ;)TLDR
Aleoネットワークは毎時ランダムに1つのZK回路を生成します;マイナーはこの1時間の間に異なる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はオフチェーンの処理方式を採用しており、取引はまずユーザーのデバイス上で証明を計算し、その後検証結果のみをブロックチェーンにアップロードします。この方式は取引の処理速度とシステムのスケーラビリティを大幅に向上させ、Ethereumのようなネットワークの混雑や高額な手数料を回避します。
コンセンサスメカニズム
AleoはAleoBFTを導入しており、これは検証者の即時最終性と証明者の計算能力を組み合わせたハイブリッドアーキテクチャのコンセンサスメカニズムです。AleoBFTはネットワークの分散化を高めるだけでなく、性能と安全性も強化します。
- ブロックの迅速な最終性:AleoBFTは各ブロックが生成された後すぐに確認されることを保証し、ノードの安定性とユーザー体験を向上させます。
- 分散化の保障:ブロック生成とcoinbase生成を分離することで、検証者がブロックを生成し、証明者が証明計算を行うことにより、少数の実体によるネットワークの独占を防ぎます。
- インセンティブメカニズム:検証者と証明者はブロック報酬を共有し、証明者がトークンをステーキングして検証者になることを奨励し、ネットワークの分散化と計算能力を向上させます。
Aleoは開発者がガス制限のないアプリケーションを作成できるようにしており、特に機械学習など長時間実行が必要なアプリケーションに適しています。
現在の進展
Aleoは7月1日にインセンティブテストネットを開始する予定で、以下は重要な最新情報です:
- ARC-100投票通過:ARC-100(「Aleo開発者と運営者のコンプライアンスベストプラクティス」提案、コンプライアンス関連、Aleoネットワーク上の資金のロックと遅延入金などの安全対策に関するもの)の投票が終了し、通過しました。チームは最終調整を行っています。
- 検証者インセンティブプログラム:このプログラムは7月1日に開始され、新しいpuzzleメカニズムを検証することを目的としています。プログラムは7月15日まで実施され、その期間中に100万Aleoポイントが報酬として配分されます。ノード生成のポイントの割合がその報酬のシェアを決定し、各検証者は報酬を得るために最低100トークンを獲得する必要があります。具体的な詳細はまだ確定していません。
- 初期供給と流通供給:初期供給量は15億トークンで、初期流通供給量は約10%(まだ最終確定していません)。これらのトークンは主にCoinbaseタスク(7500万)から来ており、最初の6ヶ月内に配布される予定で、ステーキング、検証者の運営、検証ノードの報酬も含まれます。
- Testnet Betaリセット:これは最後のネットワークリセットで、完了後は新機能が追加されず、ネットワークはメインネットに類似します。リセットはARC-41と新しいpuzzle機能を追加するためのものです。
- コードフリーズ:コードフリーズは1週間前に完了しました。
- 検証ノード拡張計画:初期の検証ノード数は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に一致し、かつそのブロックに含まれるsolutionの数がコンセンサス制限を下回る必要があります。
- 有効なsolutionはコンセンサス報酬を得ることができます。
Synthesis Puzzle
最新版のアルゴリズムの核心はSynthesis Puzzleと呼ばれ、各epochごとに固定的に生成される共通のEpochProgramを対象としています。入力とEpochProgramのためにR1CS証明回路を構築し、対応するR1CSアサインメント(すなわち皆が言及するwitness)を生成し、Merkleツリーの葉ノードとして使用します。すべての葉ノードを計算した後、Merkle rootを生成し、solutionのproof_targetに変換します。Synthesis Puzzleを構築する詳細なフローと規範は以下の通りです:
- 各puzzle計算はnonceと呼ばれ、これはマイニング報酬を受け取るアドレス、epoch_hash、ランダム数counterから構築されます。新しいsolutionを計算する必要があるたびに、counterを更新することで新しいnonceを得ることができます。
- 各epoch内で、ネットワーク内のすべてのproverが計算するEpochProgramは同じで、これは現在のepoch_hashから生成されたランダム数を指令セットからサンプリングすることで得られます。サンプリングロジックは以下の通りです:
- 指令セットは固定されており、各指令(instruction)は1つ以上の計算操作を含み、各指令には事前に設定された重みと操作カウントがあります。
- サンプリング時には、現在のepoch_hashに基づいてランダム数を生成し、そのランダム数に基づいて指令セットから重みを考慮して指令を取得し、順序を並べ、操作カウントが97に達するまでサンプリングを停止します。
- すべての指令を組み合わせてEpochProgramを構成します。
- nonceをランダム数の種として使用してEpochProgramの入力を生成します。
- EpochProgramに対応するR1CSとinputを集約し、witness(R1CSアサインメント)を計算します。
- すべての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の変化に従ったプログラムを実行することから生じるため、その指令には一部の直列実行の依存関係が存在し、並列化の実現にはかなりの挑戦があります。