著者:タイラー・ホール、ヴィンス・ジュリアーノ、イヴァン・モロゾフ、サム・ウィリアムズ、トム・ウィルソン; Compiled by PermaDAO
aoとは?
ao はArweave上で動作するActor Oriented(ロールベース)コンピュータで、コンピュータを構成するノードのネットワークはコア・データ・プロトコルに従っています。コンピュータを構成するノードはコア・データ・プロトコルに従っている。本稿では、プロトコルの仕様、機能、技術的な詳細について簡単に説明する。
ao は、分散ネットワーク上の異種ノードセットでホストされる、単一の統一されたコンピューティング環境(Single System Image)である。aoは、任意の数の並列プロセスが存在できる環境であり、プロセスはオープンアクセスを通じて互いに接続されるように設計されている。aoは、任意の数の並列プロセスが常駐できる環境として設計されており、プロセスはオープンなメッセージングレイヤーを通じて相互に調整される。
このメッセージング標準は、Webサイトが別々のサーバーで実行されるが、統一されたエクスペリエンスを形成するために一緒にハイパーリンクされるのと同じように、機械に依存しないプロセスを一緒に接続して「ネットワーク」を形成する。
既存の分散型コンピューティングシステムとは異なり、aoは、ネットワーク自体の検証可能性を維持しながら(したがって、信頼を最小限に抑えながら)、固有の容量制限やプロトコルの形式によって制約されない柔軟な計算操作をサポートします。
さらに、aoの分散型およびモジュール型アーキテクチャにより、既存のスマートコントラクトプラットフォームがネットワークに簡単に「プラグイン」でき、他のどのプロセスともメッセージを送受信できる単一のプロセスが開放されます。
aoは、すべてのユーザーのコンピューティング環境に一連のルールを押し付けるのではなく、ユーザーが仮想マシン、注文モデル、メッセージングセキュリティ保証、支払いオプションの中から最適なものを選択できるように、モジュール式に構築されています。
このモジュラー環境は、統一されたメッセージ、すべて同じフォーマットで、Arweaveの分散型データレイヤーに落ち着きます。このモジュラー環境は、非常に広範なワークロードのための統一されたコンピューティング環境であり、各プロセスは簡単にメッセージを配信し、コラボレーションすることができます。
aoの中核的な目標は、規模の制約なしに、信頼性のない相互運用可能なコンピュートサービスを実現することです。これにより、過去には不可能だったアプリケーションの新たな可能性が開かれます。スマートコントラクトアプリケーション(コードの信頼のみを必要とするサービス)の利点と、Amazon EC2などの従来のコンピューティング環境の利点を組み合わせることができます。
aos(aoの分散型オペレーティングシステム)により、開発者はスマートコントラクトのようなコマンドラインプロセスを分散型ネットワークで起動することができる。このプロセスは、クラウドサービス上でサーバーを起動するのと似ていますが、分散化と非信頼コンピューティングが主な利点です。
これらのプロセスは、特定の物理的な場所に制約されることなく実行され、ネットワーク上でのシームレスなユーザーインタラクションを可能にします。その結果、物理的な制約やスケーラビリティの制約を超越し、すべての参加者が共有する単一(シングル・システム・イメージ)の統一されたグローバルなコンピューティング・プラットフォームが実現します。
要するに、aoは大規模でスケーラブルなコンピュータを形成し、その上でユーザーはどのようなプロセスとも対話することができ、高度に協力的なエコシステムを形成します。
ユーザーにとって、aoは複数のプロセスを実行できる共有コンピュータを意味する。これらのプロセスは、特定のサーバーに制限されることはなく、個人やグループの自由裁量ではありません。いったん起動されると、これらのプロセスは暗号的に安全な方法でサービスを提供し、客観的で永続的な動作を保証します。
この設計は、アプリケーションへの長期にわたる安定したアクセスをユーザーに与え、システムとのユーザーインタラクションに信頼できる環境を提供します。
コア機能
既存の分散コンピューティングシステムと比較して、aoプロトコルは以下を提供します:
任意の数のプロセス(プロセスはスマートコントラクトに類似している)が並行して実行される:aoでは、アプリケーションは任意の数の通信プロセスによって構築される。オリジナルのアクターモデル(Carl Hewitt, 1973)とErlangにインスパイアされたaoでは、プロセスが互いにメモリを共有することはできませんが、ネイティブのメッセージング標準を介して通信することはできます。
各プロセスはお互いに干渉することなく、利用可能なコンピューティングリソースを使ってフルスピードで実行することができます。メッセージングに焦点を当てることで、aoは従来のスマートコントラクトよりも、従来のWeb2/分散システム環境に近いスケーリングメカニズムを実装しています。Celestia)は、aoネットワークの不活性コンピューティング・アーキテクチャの上に構築されており、aoネットワークのノードは、プログラムの状態遷移でコンセンサスに達するときに計算を実行する必要がありませんでした。
各プロセスのログはすべて保存され、最終プロセスのHolographicStateはArweave上に保持されます。
各プロセスのログはすべて保存され、最終プロセスのHolographicStateはArweaveに保持されます。計算のコストはユーザーに委譲され、ユーザーは自分で状態を計算するか、好きなノードに計算を依頼することができます。
無限のハードドライブであるArweaveへのアクセス:aoプロセスは、どんなサイズのデータでもシームレスに直接メモリにロードして実行し、ネットワークに書き戻すことができます。このセットアップにより、典型的なリソースの制約がなくなり、完全な並列実行が可能になるため、従来のスマートコントラクトプラットフォームの制限を超えて、アプリケーション開発の可能性が大きく広がります。
その結果、機械学習タスクや高負荷の自律エージェントなど、大量のデータ処理や計算リソースを必要とする複雑なアプリケーションへの扉が開かれます。
自動化されたコントラクト:従来のスマートコントラクト環境(Ether、Solana、Polygonなど)では、コントラクトはユーザートランザクションによって要求されなければなりませんでした。"ウェイクアップ "して計算を実行する。この環境では、ユーザーがアプリケーションと対話しない限り、アプリケーションは「アクティブ」ではありません。
aoは、スケジュールされたタスクによって、コントラクトが自動的にウェイクアップし、設定された間隔で計算を実行できるようにすることで、この制限を取り除きます。任意のユーザー、またはプロセス自体が、適切な頻度で計算をトリガーするプロセスに「サブスクライブ」するためにノードを支払うことができます。
スケーリングのためのモジュラーアーキテクチャ:aoのコアアーキテクチャは、誰でも構築できるオープンなデータプロトコルです。シーケンサーからメッセージパッシングリレー、さらにはシステムレベルの仮想マシンに至るまで、すべてを自由に置き換え、拡張することができます。
この柔軟性により、Arweaveエコシステムの既存のスマートコントラクトシステム(Warp、everPay、Memなど)がaoにプラグインし、統一されたネットワークでメッセージを送受信できるようになります。これにより、これらすべてのスマートコントラクトシステムが同じインフラとツールの一部を共有できるようになり、Arweave上でより首尾一貫したコンピューティング体験が得られるようになります。
ao Architecture Introduction
aoの基本コンポーネントは以下の通りです:
プロセス: ネットワークにおける計算の単位。プロセスは、情報データ項目からなるArweaveに保存された相互作用ログとして表現することができます。プロセスの初期化には、計算環境(仮想マシン、スケジューラ、メモリ、必要な拡張機能を含む)の定義が含まれます。
プロセスの状態を計算し、要件を満たす計算ユニットからコンセンサスを得ることができる。プロセスは、ユーザーのウォレットからメッセージを受け取るだけでなく、メッセンジャーユニットを介して他のプロセスからもメッセージを受け取ります。プロセスの開発者は、これらのメッセージの信頼性を判断する方法を自由に選択できます(下記参照)。
メッセージ: aoのプロセスとのやりとりは、すべてメッセージで表現されます。基本的に、メッセージはANS-104に準拠したデータ項目です。ユーザーとプロセスは(アウトボックスとメッセンジャーユニットを通して)、スケジューリングユニットを通してネットワーク内の他のプロセスにメッセージを送ることができます。
aoメッセージの意味上の定義は、UDPとTCPの中間のようなものです。メッセージは一度だけ送信されることが保証されていますが、メッセンジャーユニットによって転送されることがなかったり、受信者が実際に処理することがなかったりすると、メッセージは一度も発生しなかったのと同じことになります。
スケジューリングユニット(SU): スケジューラは、プロセスに送信されるメッセージにアトミックインクリメンタルなタイムスロット番号(イーサネットのnonceに似ている)を割り当てる責任があります。一度割り当てられると、スケジューラはデータがArweaveにアップロードされ、他の人が永久にアクセスできるようにする必要があります。
プロセスは、分散型、集中型、あるいはユーザーホスト型など、さまざまな方法で実装できる好みのシーケンサーを自由に選択できます。
Compute Units (CUs): コンピュートユニットはaoのプロセスの状態を計算するノードであり、その入力はユーザーとメッセンジャーユニットから提供された情報を使用します。スケジューリングユニットはプロセスのメッセージをソートするだけで、プロセスの状態計算のために追加のコンピュートユニットを必要とします。
これにより、計算ユニットがプロセスの状態を計算するサービスを提供し、互いに競争するピアツーピアの計算マーケットプレイスが生まれる。これらのユニットは、価格、計算需要、その他のパラメーターの間でトレードオフ・ゲームを行う。状態の計算が完了すると、計算ユニットは署名付きの出力証明を呼び出し元に返す。
計算ユニットはまた、署名された状態証明を生成し、公開することができる。
メッセンジャーユニット( MUs): メッセンジャーユニットはaoネットワークでメッセージを配信する役割を担っており、クランキングと呼ばれるシステム("start "と "repeat "を持つ固有名詞。)"start "と "repeat "がある)。
要するに、メッセンジャー・ユニットがシステム内でメッセージを処理する場合、適切なSUに情報を送って処理させ、メッセージはSUからCUに届けられて出力を計算し、SUに返され、メッセンジャー・ユニットはこのプロセスを何度も繰り返す。
このプロセスは、処理するメッセージがなくなるまで続く。ユーザーとプロセスは、MUに料金を支払って、時間指定されたスケジュールされたタスクインタラクションによって生成されたすべてのメッセージを処理するプロセスを購読することもできます。プロセスはオプションでメッセージをブロードキャストとしてマークすることもでき、その場合、MUはそのSUにメッセージを送信しますが、応答は聞きません。
このようにして、aoは、仮想マシン(VM)、支払い方法、スケジューラの種類、メッセージのセキュリティなど、ユーザーとプロセスに最大の選択の自由を提供する動的な環境を提供することができます。-- 高価な計算そのものについて合意する必要はない。
Related Work
aoとその経験の類似例はない。しかし、aoの特徴を説明するために比較できる関連プロジェクトやネットワークはたくさんあります。このセクションでは、それぞれについて順番に説明する。
アクター・モデル
アクター・モデルは、カール・ヒューイット(Carl Hewitt)、ピーター・ビショップ(Peter Bishop)、リチャード・スタイガー(Richard Steiger)の論文Actor Modelling for the Use of aoで開発されました。Steigerは論文 "A Generic Modular Actor Formalisation for Artificial Intelligence "において、コンピュータシステムにおける並行処理を理解し実装するための基本的なフレームワークとしている。
このモデルでは、計算の基本単位は「アクター」であり、局所的な決定を行い、より多くのアクターを作成し、メッセージを送信し、入ってくるメッセージにどのように応答するかを決定できるエンティティであると仮定しています。システム設計とプログラミングに対するこのアプローチは、分散され、高度に並行し、スケーラブルなアプリケーションの作成を容易にします。
Erlang
AoはErlangコンピューティング環境とそのプログラミング言語に大きくインスパイアされています。Erlangはアクターモデルの実装で、超並列システム(複数の物理スレッドを持つマシンやネットワーク)で効率的に使うために、実行時にスケジューラによって処理される非常に軽量なプロセスを提供します。
これらの機能は「プロセス指向」プログラミングを生み出します。Erlangはメインストリームコンピューティングではあまり知られていませんが、電話交換やWhatsAppのようなインスタントメッセージングサービスなど、高いパフォーマンスが要求される多くの環境で広く使われています。
aoコンピュータはErlangのプロセス指向のアプローチをそのまま受け継いでおり、Erlangの経験的証拠は、メモリを共有せずにプロセスを通してメッセージを渡すことで分散コンピューティングを実装する環境が非常に効率的であることを示唆しています。aoはこのアプローチをスマート・コントラクトに適用し、Erlangスタイルの環境の最初の単一のシステム・イメージを提供する。
イーサリアムなどのスマートコントラクトプラットフォーム
イーサリアムは分散型計算ネットワークで、すべてのユーザーがメモリと実行スレッドを共有します。もともとはブロックチェーンにチューリング完全計算を追加するというアイデアに基づいていたが、イーサは「世界のコンピューター」を構築するプロジェクトへと発展した。
イーサはローンチ時に、信頼を必要とせずに任意のコードを計算する能力を初めて実証することに成功した。このネットワークはユーザーや開発者の間で絶大な支持を得たが、コアネットワークのスループットは2015年のローンチ以来向上していない。
単一の小さなスレッド実行の処理能力を超えて基礎となるネットワークを拡張しようとする代わりに、イーサリアムのエコシステムは「ロールアップ中心」のロードマップにシフトしました。
このスケーリングアプローチは、イーサの特性のすべてではありませんが、一部を継承する追加の「ロールアップ」ネットワークのサポートに焦点を当てています。この記事を書いている時点で、Etherのエコシステムには14のロールアップ・ネットワークがあり、これらのプロセスの背後にあるプロジェクトの合計価値は1億ドルを超えています。
これら14のロールアップ・プロジェクトはそれぞれ、並列実行可能な別のシングルスレッド(AO用語では「プロセス」)計算を表しています。
Aoは、共有メモリよりも並列実行に重点を置くようにゼロから構築され、プロセスを分散化し、信頼されないように保ちながら、独立したプロセスの任意の数のための新しいアーキテクチャを提供します。
分散型コンピューティング・マーケットプレイス(Akashなど)
イーサリアムのような従来のスマートコントラクト・プラットフォームでは、共有スレッドアーキテクチャにより、各ユーザーは以下のように制限されています。より小さな計算タスクしか実行できません。この制限は、ネットワーク上の操作の複雑さとスケーラビリティを制限します。この共有リソースモデルは本質的にアプリケーションのスケーラビリティと効率を制限し、より計算集約的なスマートコントラクトの可能性に影響を与えます。
Akashのように、分散型環境における大規模計算の促進を目指すネットワークもあります。検証可能で再現可能な計算を重視するプラットフォームとは異なり、Akashや同様のネットワークは、コンテナホスティングサービスのための分散型マーケットプレイスを提供しています。
このアプローチでは、従来の非決定論的なプログラムをx86アーキテクチャの物理マシン上で実行することができます。しかし、このアプローチでは、スマートコントラクトによって駆動されるような、信頼されないサービスを作成する能力が犠牲になります。
Aoでは、開発者は好みの仮想マシン(VM)を選択することができ、初期のリファレンス実装では、WebAssembly(WASM)を使用してプロセスを実行することに重点を置いている。aoのWASMコンテナは最大4GBのメモリを管理できますが、この制限はWASM64の採用により増加すると予想され、長い計算時間が可能になります。
WASMエコシステムの豊富なコンパイルツールはさまざまなプログラムをサポートしており、最近のWASMの使用例としては、ウェブブラウザでのLarge Language Model(LLM)変換モデルの実行、音声認識、さらにはPhotoshopのような計算負荷の高い画像処理ソフトウェアなどがあります。
大きな計算能力に加えて、aoはそのホログラフィック状態メカニズムのおかげで、従来のスマートコントラクトの特性さえも維持しています。aoは計算自体の状態に合意するのではなく、代わりにインタラクションログが永続的に利用可能な状態でArweaveに書き込まれることを保証することに焦点を当てています。
決定論的な課金VMと、Arweave上の全プロセスメッセージの可用性があれば、ホログラムを投影することが可能です:状態は参加者の誰によってもまだ実際に計算されていないかもしれませんが、計算が完了すれば、その出力が常に一貫していることを保証できます。その出力が常に一貫していることを保証できる。
さらに、ホログラフィック・ステート・システムは、Arweaveのメッセージ・ログによって有効化され、aoプロセスが時間に基づいて暗黙のメッセージに応答し、自分自身を目覚めさせ、アクションを実行することを可能にします。
ホログラフィックステートメカニズムと連動して、aoは、計算結果に関する暗号署名された宣言をユーザーに提供するコンピュートユニットの分散ネットワークも提供する。これらのコンピュート・ノードはマーケットプレイスで互いに競争し、ホログラフィック状態を解決するためのユーザーのコストを削減する。
ピアツーピアの仮想マシンホスティング(例:Urbit)
Urbitはピアツーピアの計算システムで、ao.Urbitといくつかの共通点があります。インタラクション・ログの転送と可用性に焦点を当てることで、Urbitは「サーバー」を物理ホストから別のホストに移行できる分散コンピューティング環境を提供することができます。
あるホストから別のホストに切り替える過程で、ホストされている計算との相互作用ログを実行して現在の状態を再計算することができ、Urbitプロセスは互いにメッセージを送信して通信することもできます。
aoとは異なり、Urbitは相互作用ログに関する分散型コンセンサスを持たない。実際には、これは「ロールアップ」に関する権威ある合意や可用性の保証がないことを意味し、したがってプロセスの状態の保証もない。
この場合、UrbitはAkashや他の分散型コンピューティングマーケットプレイスに似ていると見なすことができますが、ホストが移行する意思があれば、あるホストから別のホストに計算を検証可能な形で移行できる機能が追加されています。
aoは、Arweaveにアップロードするスケジューリングユニット(SU)を介してプロセスに送信されるログメッセージの可用性を確保することで、このモデルを拡張している。-特定のコンピュート・ノードに常駐することがなくなり、コンピュート・ユニット(CU)の分散ネットワークによってリアルタイムで状態を解決できるようになります。
このアーキテクチャの違いにより、aoプロセスは、信頼性のないスマートコントラクト(検証可能な分散コンピュート)のデプロイを可能にするために必要な属性と、任意の数のプロセスをホストする能力を持つことが保証されます。この後者の能力は、プロセスをホログラフィックに表現できる(そのメッセージログは永続的に利用可能である)ため、現在プロセスを実行するために計算ユニットをアタッチする必要がないからです。
柔軟な信頼とセキュリティモデル
この文書で説明されているように、aoコアデータプロトコルは安全な計算のフレームワークを提供しますが、それ自体では、経済的な保証を提供したり、強制したりするものではありません。経済的保証を提供したり強制したりするものではない。その代わり、aoは経済的なセキュリティ・メカニズムを可能にする暗号的に安全な要素の柔軟なシステムを提供する。
ユーザーに経済的セキュリティを提供するという役割を果たすため、aoはネットワーク内のセルの正しい動作を経済的に強制する契約とトークンを誓約するために開発されている。
そのようなメカニズムの詳細な仕様は、このデータプロトコル定義の範囲外ですが、我々は次のセクションで、そのようなシステムがどのようにaoの上に構築され得るかを説明するための青写真を提供します。
プロセスの状態は、Arweaveに保存されているインタラクションログの中に暗黙的に含まれています。状態は保存されませんが、どの参加者でも決定論的に計算することができます。このアプローチにより、プロセスの状態は、直接監視されていないものの、独立して検証することができ、ネットワーク全体で一貫していることが保証されます。
プロトコル仕様全文:
https://permadao.com/permadao/ao-1353cc109d434941a6757560ef35dcc2