ao is a “hyper-parallel computer.” Its core objective is to offer trustless and cooperating compute services without any practical bounds on scale. It combines the trust minimization benefits of blockchain networks with the speed and scalability of more traditional compute environments, such as Amazon EC2. But how does this all work? Let’s dive into the intricacies of ao.
What are the key characteristics of ao?
There are a few key characteristics that help distinguish ao in the realm of decentralized computing:
- Parallel processing: Supports an arbitrary number of processes running in parallel, independently of each other. The processes can operate and be evaluated separately, creating scalability mechanics akin to web2 systems.
- Unbounded computation: Processes are not subject to any protocol-imposed limits on the amount of information they can compute, provided the caller can bear the associated computation cost.
- Read/ Write to Arweave: Processes can both load data from and write data to Arweave, expanding the kind of decentralized apps that can be built with ao (e.g., machine learning tasks).
- Autonomous Processes: Processes can automatically execute computations at set intervals of time. Users and other processes can ‘subscribe’ to a process in order to trigger computations. This feature can enable processes to operate as autonomous agents.
- Modular architecture: A flexible computing environment offers the swapping of schedulers, message passing layers, virtual machines, etc. This flexibility allows existing smart contract systems (Warp, MEM, etc.) to easily plug into ao and interact with a unified network and create a more coherent experience.
What sets ao apart from traditional compute environments?
Built on top of Arweave, ao is able to eliminate vulnerabilities associated with centralized providers, like single points of failure, data breaches, and censorship. Computation on ao is transparent and verifiable through the trust-minimized nature of decentralization and the reproducible log of messages stored on Arweave. This decentralized foundation also helps surpass the limitations on scalability imposed by physical infrastructure. And most importantly, anyone can easily create an ao process right from their terminals or with just a few lines of JavaScript without the need for specialized knowledge, tools, or infrastructure. This ensures that even individuals and small-scale entities have global reach and participation.
How does ao improve on other decentralized compute networks?
Unlike networks such as Ethereum, where the foundational layer and each rollup effectively function as a singular process, ao supports an arbitrary number of processes running in parallel, while ensuring the verifiability of computations remains intact. Additionally, these networks operate on a globally synchronized state, whereas ao processes maintain their own independent state. This independence enables ao processes to handle a significantly higher volume of interactions and scalability of computation, making it especially suitable for applications demanding high performance and reliability. While some decentralized networks like Akash and peer-to-peer systems like Urbit do provide compute at scale, unlike ao, they do not provide verifiable reproducibility for their interactions or have relied on impermanent storage solutions for their interaction logs.
What makes ao a hyper parallel computer?
ao operates through a network of nodes that together create a unified computing environment, capable of hosting an unlimited number of processes in parallel. These processes function as independent servers, each with its own logic, hosted on a decentralized network. Moreover, these processes maintain a “holographic” state. This enables them to work independently, unlock scalability for the network, and achieve what is known as “hyper-parallel computing.”
What does “holographic state” mean with respect to ao?
A “holographic state” refers to how each process stores its state independent of other processes. This approach allows each process to operate and be evaluated separately. It facilitates faster interactions and improves scalability within the network. The state is implied “holographically” by the associated log of messages (interactions with the process) hosted on Arweave.
What are the key components of ao?
The following components are integral parts of the ao architecture:
- Processes: In ao, a process is a set of instructions that can be executed by the network. Each ao process is persistent, having a holographic state represented by a log of messages that are uploaded to Arweave.
- Messages: Every interaction with a process is represented by a message. Messages are ANS-104 compliant data items. They can originate from users or other processes within the network.
- Scheduler Units (SUs): SUs are tasked with numbering messages so that they are processed systematically. Additionally they ensure the messages and their data is uploaded to Arweave.
- Compute Units (CUs): CUs are tasked with determining the state of processes and processing message requests. However, CUs are not obligated to compute every message; they may decline if they lack the necessary resources. The existing CUs (at the time of writing) use a WASM-based virtual machine environment, supporting up to 4 GB of RAM.
- Message Units (MUs): MUs are responsible for the circulation of messages. Their job is to push messages through the system, ensuring they are ordered by the SU and then coordinating with the CU for computation. MUs continually monitor for new messages and repeat this process as needed.
How does parallel processing work in ao?
In ao, multiple processes can operate in parallel, sharing the available computational resources. During idle times of other processes, the resources are reallocated to active processes. This reallocation helps maximize the use of available resources. It accelerates processing times and allows for a more efficient and scalable system.
How are messages handled in ao?
Every interaction within the network is in the form of messages. Every message goes through the following journey:
- Users or other processes send a request to a process as a message. The message is received by the message unit (MU) and forwarded to the scheduler unit (SU).
- The scheduler unit (SU) assigns an atomically incrementing slot numbering to the message. It then ensures that the message is uploaded to Arweave. A SU can also choose to cache the message.
- The message unit (MU) then sends a request to the compute unit (CU) for computing the message result.
- The compute unit (CU) then fetches the requested message either from the scheduler unit (SU) or directly from Arweave and computes its result.
- The computed result is sent back to the message unit (MU) where the MU checks if the message must be pushed (if the result needs some further processing).
- If the result needs no further processing, then the message unit (MU) sends the result to the original creator (user or process) of the message.
How can ao processes operate as autonomous agents?
ao processes can interact with the Arweave network with minimal to no ongoing user intervention based on predefined logic. Combined with their other characteristics, ao processes can act as autonomous agents in a verifiable manner. This unlocks a myriad of potential applications, from engaging in tokenized gaming to serving as AI chatbots. Furthermore, ao introduces a cron-like system, enabling processes to execute tasks at predetermined intervals. Whether it's providing timely alerts, updating token prices, or facilitating automated trading and arbitrage based on these updates, the capabilities for ao processes as autonomous agents are expansive.
How to get started with ao?
For Developers
Developers have two ways to engage with ao:
- aos: Developers can spawn their own processes within their terminal using aos. aos is distinct from ao. While ao is a computing environment, aos functions like the operating system. It currently supports coding in the Lua language. Checkout these docs to spawn a process with aos.
- aoconnect: For developers more comfortable with JavaScript, the aoconnect sdk offers a way to spawn and interact with processes in node and browser environments. Visit here to learn more about aoconnect.
For End users
End users on the other hand have a variety of applications to choose from:
- Astro: An over-collateralized stablecoin adding liquidity to Arweave. To explore Astro, visit here.
- Bark: A decentralized AMM exchange backed by token liquidity pools. Discover Bark and its features here.
- AOEffect: An arena style game to compete with friends globally. Start competing in the AOEffect arena here.
What’s next for ao?
Looking ahead, ao is preparing to roll out enhancements at the protocol level that will include options for payment channels, tokenization, and staking mechanisms. Beyond this, the horizon for application development is broad, with potential expansions into temporary file storage solutions, marketplaces, gaming, and even artificial intelligence.
If you're inspired with an idea or seeking to contribute to the ao ecosystem, connect with us via the form on our landing page. Or join the conversation in our Community Discord.