ao 計算機的協議規範
ao
是什麼?
ao
是運行在 Arweave 上的 Actor Oriented(基於角色的)計算機,組成該計算機的網絡節點遵循核心數據協議。本文簡要介紹了協議規範、功能和技術細節,讓建構者進行實現或集成該服務。
ao
是一個單一的、統一的計算環境(單系統映像 Single System Image),托管在分佈式網絡中的異構節點集上。ao
被設計為一個可以駐留任意數量並行進程的環境,進程之間通過開放的消息傳遞層進行協調。這種消息傳遞標準將機器獨立運行的進程連接到一起,形成一個"網絡",就像網站在獨立的伺服器上運行,但是通過超鏈接連接成具備統一體驗的整體系統一樣。
與現有的去中心化計算系統不同,ao
支持靈活的計算操作,這些計算不受制於協議固有容量限制和形式,同時保持網絡本身的可驗證性(從而實現最小化信任)。此外,ao
的分佈式和模組化架構允許現有的智能合約平台輕鬆地"接入"到網絡中,開啟一個可以與任何其他進程發送和接收消息的單一進程。
ao
不會對所有用戶計算環境強加一套規則,ao
使用模組化的形式構建:允許用戶選擇最適合他們的虛擬機、排序模型、消息傳遞安全性保證和付款選項。這個模組化環境通過統一的消息(所有消息採用相同的格式)在 Arweave 的去中心化數據層上進行結算處理。這個模組化環境是一個可滿足極其廣泛的工作負載需求的統一計算環境,每個進程都可以輕鬆傳遞消息和協作。
ao
的核心目標是在沒有規模限制的情況下,實現去信任和相互協作的計算服務。這為過去不可能實現的應用程序提供了新的可能性:將智能合約應用的優勢(只需對代碼信任的服務)與傳統計算環境(如亞馬遜 EC2 等)的優勢結合起來。
aos
(ao
的去中心化操作系統)允許開發人員在去中心化網絡中啟動類似於智能合約的命令行進程。這個過程類似於在雲服務上啟動伺服器,但去中心化和去信任計算是其關鍵優勢。這些進程運行時不受限於特定的物理位置,通過網絡實現了無縫的用戶交互。由此產生了一個單一的(單系統映像 Single System Image)、統一的、全球性的計算平台,超越了物理和擴展性限制,由所有參與者共同使用。簡而言之,ao
形成了一個龐大的、可擴展的計算機,在這個計算機上用戶可以與任何進程進行交互,形成一個高度協作的生態系統。
對於用戶而言,ao
代表著一個共享的計算機,他們可以在其上執行多個進程。這些進程不受任何特定伺服器的限制,也不受任何個人或團體的支配。一旦激活,這些進程會以加密安全的方式提供服務,確保客觀和持久的運行。這種設計賦予用戶長期穩定使用應用程序的權利,從而為用戶與系統交互提供了一個可信賴的環境。
核心功能
與現有的去中心化和分佈式計算系統相比,ao
協議提供了以下功能:
- 任意數量的進程(進程類似於智能合約)並行運行 :在
ao
中,應用程序由任意數量的通信進程構建。受到原始 actor 模型(Carl Hewitt,1973年)和 Erlang 的啟發,ao
不允許進程之間共享內存,但允許它們通過本機消息傳遞標準進行通信。然後,這些進程中的每一個都可以使用可用計算資源的全速運行,而不會相互干擾。通過專注於消息傳遞,ao
實現了更類似於傳統 Web2/分佈式系統環境的擴展機制,而不是傳統的智能合約。 - 無限的計算資源 :在原始版本的 SmartWeave 和 LazyLedger(後來稱為 Celestia)的惰性運算架構的基礎上構建,
ao
網絡中的節點在達成關於程序狀態轉換的共識時無需執行任何計算。每個進程的的所有日誌都被存儲,最終進程的全息狀態(HolographicState)被留存在了 Arweave 上。然後將計算成本委託給用戶,用戶可以自行計算其狀態,或者請求由他們選擇的節點執行計算。 - 訪問 Arweave,一個無限的硬碟:
ao
進程可以無縫加載和執行任何大小的數據直接到其內存,並寫回網絡。這種設置消除了典型的資源約束,實現了完全並行執行,大大擴展了應用程序開發的可能性,超越了傳統智能合約平台的限制。因此,它為需要大量數據處理和計算資源的複雜應用開啟了大門,例如機器學習任務和大計算量的自主代理。 - 自動化合約 :在傳統的智能合約環境(如以太坊、Solana、Polygon 等)中,合約必須在用戶交易的請求下,才能"喚醒"以執行計算。在此環境中,除非用戶與其交互,否則程序不會"活躍",從而減少了可以在其上構建的應用程序的範圍。
ao
通過允許合約通過計劃任務來消除這一限制,這些交互可以在設定的間隔時間自動喚醒並執行計算。任何用戶,或者進程本身,都可以支付費用給一個節點來"訂閱"一個進程,從而以適當的頻率來觸發計算。 - 支持擴展的模組化架構:
ao
的核心架構是一個任何人都可以構建的開放數據協議。從排序器、消息傳遞中繼器,甚至是系統級的虛擬機都可以隨意替換和擴展。這種靈活性將允許 Arweave 生態系統中的現有智能合約系統(Warp、everPay、Mem 等)插入 ao,並能夠與統一網絡進行消息的發送和接收。這也將允許所有這些智能合約系統共享一些相同的基礎設施和工具,從而使 Arweave 上的計算體驗更加連貫。
ao
架構簡介
ao
的基本組件如下:
- 進程:網絡中的計算單位。進程可以表示為存儲在 Arweave 上交互日誌,這些日誌由的信息數據項組成。初始化進程的時候,需要定義計算環境(包括虛擬機、調度器、內存和必要的擴展)。進程的狀態可以通過滿足需求的計算單元進行運算,並獲得共識。除了從用戶錢包接收消息外,進程還通過信使單元從其他進程接收消息。進程的開發者可以自由選擇如何確定這些消息的可信度(見下文)。
- 消息:
ao
中與進程的每次交互都由消息表示。從根本上講,消息是符合ANS-104標準的數據項。用戶和進程(通過其發件箱和信使單元)可以通過調度單元向網絡中的其他進程發送消息。ao
消息的語義定義處於 UDP 和 TCP 之間:保證只發送一次,但如果消息從未被信使單元轉發,或者接收方從未實際處理它,那就相當於該消息從未發生。 - 調度單元(SUs):調度單元負責為發送給進程的信息分配原子遞增時隙編號(類似於以太坊 nonce)。分配後,調度器需要確保數據上傳到 Arweave,從而永久地供其他人訪問。進程可以自由選擇其首選的排序器,其可以以各種方式實現:去中心化的、中心化的,甚至是用戶托管的。
- 計算單元(CUs) :計算單元是計算
ao
中進程狀態的節點,它的輸入使用了用戶和信使單元提供的信息。調度單元只會對進程消息進行排序,需要額外的計算單元進行進程的狀態計算。這創建了一個點對點的計算市場,在這個市場上,計算單元提供計算進程狀態的服務,並相互競爭。這些計算單元在價格、計算需求以及其他參數之間進行權衡博弈。一旦狀態計算完成,計算單元將向調用者返回一個附帶簽名的輸出證明。計算單元也可能生成並發布簽名的狀態證明,其他節點可以選擇加載這些證明------可以選擇支付由 UDL 指定的費用。 - 信使單元( MUs) :信使單元負責在
ao
網絡中傳遞消息,這些消息通過一個稱為 Cranking(專有名詞,擁有"啟動"和"重複執行"等含義) 的過程進行傳遞。本質上,當信使單元在系統中處理一條消息時,它們會將信息發送到合適的 SU 進行處理,信息被 SU 交付給 CU 計算輸出再返回 SU,信使單元不斷重複這一過程。這個過程持續進行,直到沒有更多消息需要處理。用戶和進程也可以支付費用給 MU 來訂閱一個進程,處理由其定時計劃任務交互產生的任意消息。進程還可以選擇性地將一條消息標記為廣播(cast),這將導致 MU 將消息發送給其 SU,但不監聽響應。通過這種方式,ao
能夠提供一個充滿活力的環境,為用戶提供和進程最大的選擇自由度------虛擬機(VM)、支付方式、調度器類型、消息安全性等------而無需就昂貴的計算本身達成共識。
相關工作
目前還沒有類似的案例可以描述 ao
及其使用體驗。然而,有許多相關項目和網絡可以與 ao
進行對比,以闡明其特性。在這一部分中,我們依次討論每個相關工作。
- Actor 模型
Actor 模型由 Carl Hewitt、Peter Bishop 和 Richard Steiger 在他們的論文《用於人工智能的通用模組化 Actor 形式化》中引入,作為理解和實現計算機系統中並發性的基本框架。該模型認為,計算的基本單位是 "actor",即可以做出本地決策、創建更多 actor、發送消息,並確定如何響應接收到消息的實體。這種系統設計和編程方法有助於創建分佈式、高度並發和可擴展的應用程序。
- Erlang
ao
在很大程度上受到 Erlang 計算環境及其編程語言的啟發。Erlang 是 Actor 模型的一種實現,提供了極其輕量級的進程,由 runtime 中的調度器處理,以便在大規模並行系統(具有多個物理線程的機器和網絡)中實現高效利用。這些功能產生了一種"進程導向"的編程形式,開發人員自然地將他們的計算分成許多協作和並行的組件,以實現他的目標。雖然 Erlang 在主流計算領域並不是非常出名,但它在許多需要高性能的環境中被廣泛使用:電話交換機、即時通訊服務如 WhatsApp 等。
ao
計算機直接繼承了 Erlang 的面向進程方法。Erlang 的實證表明,通過進程傳遞消息而不共享內存來實現分佈式計算的環境可以非常高效。ao
將這種方法應用到了智能合約領域,同時首次提供了 Erlang 式環境的單一系統映像。
- 智能合約平台(例如以太坊)
以太坊是一個去中心化的計算網絡,所有用戶共享內存和一個執行線程。最初是基於將圖靈完備計算添加到區塊鏈的想法,以太坊演變成了一個構建"世界計算機"的項目。推出時,以太坊首次成功展示了無需信任的任意代碼計算的能力------這是在沒有產生一個獨立的區塊鏈網絡的情況下實現的。雖然該網絡在用戶和開發者中獲得了巨大的關注,但自2015年推出以來,核心網絡的吞吐量並未提高。
以太坊生態系統並沒有試圖將基礎網絡的擴展超過單個小線程執行的處理能力,而是轉向了以 "rollup 為中心" 的路線圖。這種擴展方法側重於支持附加的 "rollup" 網絡,這些網絡繼承了以太坊的一些屬性,但並非全部。截至撰寫本文時,在以太坊生態系統中有 14 個 rollup 網絡,這些程序背後的項目總價值超過 1 億美元。這 14 個 rollup 項目中的每一個代表了另一個可以並行執行的單線程(ao
術語中的一個"進程")計算。ao
從一開始就致力於構建一個從頭開始專注於並行執行而不是共享內存的體系結構,為任意數量的獨立進程提供了全新的架構,同時保持程序可以去中心化和去信任化。
- 去中心化計算市場(例如 Akash)
在像以太坊這樣的傳統智能合約平台上,共享線程架構限制了每個用戶只能執行較小的計算任務。這種限制約束了網絡上操作的複雜性和可擴展性。這種共享資源模型本質上限制了應用程序的可擴展性和效率,影響了更計算密集型智能合約的潛力。
一些網絡旨在在去中心化環境中促進大規模計算,例如 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 不對其交互日誌達成去中心化的共識。實際上,這意味著沒有對其 "rollup" 的權威性協議或確保其可用性------因此,其進程的狀態也沒有保證。在這種情況下,Urbit 可以被視為與 Akash 和其他去中心化計算市場類似,但它具有額外的能力,可以在主機願意過渡的情況下,以可驗證的方式將計算從一個主機遷移到另一個主機。ao
在這個模型的基礎上進行了擴展,通過確保通過調度單元(SUs)向進程發送的日誌消息可用,這些調度單元將它們上傳到 Arweave。通過強制執行這個日誌的可用性,用戶進程是去中心化的------不再駐留在特定的計算節點上------允許它們的狀態由分佈式的計算單元(CUs)網絡實時解決。這種架構上的差異確保了 ao
進程具有必要的屬性,使得可以部署無需信任的智能合約(可驗證的去中心化計算),以及能夠托管任意數量的進程。這後一種能力之所以出現,是因為進程仍然可以全息表示(它們的消息日誌永久可用),而無需當前附加任何計算單元來執行它們。
- 靈活的信任和安全模型
正如本文檔所述, ao
核心數據協議為安全計算提供了一個框架,但本身不提供或強制執行任何形式的經濟保證。相反, ao
提供了一個靈活的加密安全元素系統,可以實現經濟安全機制。
為了實現向用戶提供經濟安全的角色,正在開發 ao
質押合約和代幣,該合約和代幣能夠經濟上強制執行網絡中單元的正確操作。雖然這種機制的詳細規範不在本數據協議定義的範圍之內,但我們在下一節提供了一個藍圖,以說明如何在 ao
之上構建這樣的系統。
完整協議規範 : https://permadao.com/permadao/ao-1353cc109d434941a6757560ef35dcc2