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