作者:Tyler Hall, Vince Juliano, Ivan Morozov, Sam Williams, Tom Wilson;編譯:PermaDAO
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 之上建立這樣的系統。
進程的狀態主要隱含在Arweave 上儲存的交互日誌。雖然狀態不被存儲,但任何參與者都可以確定性地計算它。這種方法確保進程的狀態雖然無法直接監測,但可以獨立驗證並且在整個網路中保持一致。
完整協議規範:
https://permadao.com/permadao/ao-1353cc109d434941a6757560ef35dcc2