The existing Web is formed of servers and clients. Clients request data and servers provide it.
The Autonomi Protocol does not use this client-server model. Instead stored data is spread across a network that’s made up of the spare computing resources of contributing users. When a request for some content is made, a message goes out across the Network and machines that hold the constituent parts of that content—the nodes—return them to the requester, the client
Autonomi is comprised of its users' machines (nodes) linked together by node software which routes data and messages securely between them. These machines provide the Network's storage by allocating a portion of their hard drives for this purpose—and earning the Network's token currency in return.
So, the Protocol considers two basic components: nodes and clients. You don't have to run a node to use the Network any more than you have to run a web server to use the Web. Client software allows users to create a secure, private data store, and browse the Network securely and anonymously without being part of the Network.
A single computer can run both node and client software at the same time.
The Autonomi Network is formed of interconnected machines running node software. This software connects the devices to each other using existing protocols like TCP and UDP, manages data and routes it around the Network. It allows users to offer computer resources, like hard drive space, to the Network, and earn Network Tokens in return. This process of providing a service in return for a reward is analogous to Bitcoin mining, but is designed to be work on everyday consumer hardware.
The node software is a small executable file that connects the user’s machine to the Network, turns it into a routing node and also allocates some disk space for storage. It manages the storage of data chunks on the user’s computer and in that way provides storage capacity to the Network. It also routes and caches data chunks (these are encrypted) over the Network via fully encrypted connections to other nodes.
Each node maintains a list of its ‘close group’, other nodes with IDs (XOR addresses) close to its own. Data stored at a node will also be replicated to members of its close group for redundancy.
Nodes fulfil several functions. They route and store chunks of data; they cryptographically check messages; they cluster into temporary close groups, and thus manage a certain portion of the Network; and they store replicas of data chunks for redundancy.
Autonomi can be seen as a secure, encrypted, intelligent layer that sits on top of the current Internet, complementing the top three layers in the OSI model and adding resources in the application layer.
Going a little deeper, Autonomi introduces some changes to the networking and application layers as shown below.
Many features of Autonomi are genuine innovations, but there is no intention to reinvent the wheel. It builds on existing decentralized technologies such as Kademlia and libp2p and is based on the physical and data infrastructure of the Internet. Early development of Autonomi (formerly the SAFE Network) happened in parallel with blockchain, but it has taken an alternative route to solve the decentralization puzzle.
Autonomi can be seen as a secure, encrypted, intelligent layer that sits on top of the current Internet, complementing the top three layers in the OSI model and adding resources in the application layer. This enables secure, anonymous, decentralized data storage and networking.
Its core libraries are written in the Rust programming language. The diagram below shows the basic hierarchy.
In order to guarantee strong consistency, the Network uses conflict-free replicated data types (CRDTs) for storing data.
Client connections managed by libp2p are mediated via the client API. There is a command line interface (CLI) for this purpose, and apps written in Rust can access network functions directly via the API. Apps written in other languages do the same via the language bindings layer.
Nodes and clients provide the main means for users to interact with the Network, either by providing resources in return for payment by running a node or by storing data and interacting with data as a client.
Just as you don’t need to run a web server to use the Web, so you don’t have to run a node to access the Autonomi Network. Ordinary users interact with the Network via the client.
Clients includes things like browsers, apps, wallets, and file systems—any software that interacts with the Network to perform operations such as data retrieval, storage, or management. Browsing, and accessing data on Autonomi is end-to-end encrypted. Data is only reconstructed into readable information on the client device, greatly enhancing security and building in privacy by design. It's worth noting that you don't need an 'account' to access data on Autonomi, nor do you need to pay to access data downloading is always free. You only or edit data—and there are no recurring fees either, data uploaded is stored for the lifetime of the Network: Perpetual Data.