ao
The ao computer is the actor oriented machine that emerges from the network of nodes that adhere to its core data protocol, running on the Arweave network. This document gives a brief introduction to the protocol and its functionality, as well as its technical details, such that builders can create new implementations and services that integrate with it. The ao computer is a single, unified computing environment (a Single System Image), hosted on a heterogenous set of nodes in a distributed network. ao is designed to offer an environment in which an arbitrary number of paralell processes can be resident, coordinating through an open message passing layer. This message passing standard connects the machine's indepedently operating processes together into a 'web' -- in the same way that websites operate on independent servers but are conjoined into a cohesive, unified experience via hyperlinks. Unlike existing decentralized compute systems, ao is capable of supporting the operation of computation without protocol-enforced limitations on size and form, while also maintaining the verifiability (and thus, trust minimization) of the network itself. Further, ao's distributed and modular architecture allows existing smart contract platforms to easily 'plug in' to the network, acting as a single process which can send and recieve messages from any other process. Instead of enforcing one set of choices upon all users of the computing environment, ao is built in a modular form: Allowing users to choose which virtual machines, sequencing decentralization trade-offs, message passing security guarantees, and payment options work best for them. This modular environment is then unified by the eventual settlement of all messages -- each sharing the same format -- onto Arweave's decentralized data layer. This modularity creates a unified computing environment suiting an extremely wide set of workloads, in which every process can easily transfer messages and cooperate. ao's core objective is to enable trustless and cooperating compute services without any practical bounds on scale. This allows for a radically new design space of applications that were not previously possible: Blending the benefits of smart contract applications (services without requiring trust in anything but code), and traditional compute environments (Amazon EC2, etc). Due to its scalability, the natural way for developers to use ao is to spawn their own command-line (aos) process inside the network, and to start issuing commands. This DevX is similar to how developers create a new server instance at a cloud host and connect to it via SSH, except that this command line process has the properties of a smart contracts. Their commandline process on ao doesn't live in any specific data center or at any one physical location, and its computation is completely trustless. Every user can message and interact with every other process and program. The result of this is a global 'Single System Image': A unified computer -- spread around the world, operating at any scale -- shared between all users. From the end-user or developer's perspective, the essence of ao is simple: ao is a shared computer that they can run any number of processes inside. These processes are not hosted on any specific servers, or under the control of any one individual or group. Instead, once launched these processes can be cryptographically entrusted to render their services in a provably neutral manner, permanently. This enables them to guarantee rights to their users over time.