Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add introduction --> core-concepts/how-do-aeas-create-value #2846

Open
wants to merge 6 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions docs/aea-vs-mvc.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,3 @@ The AEA framework is based on <a href="https://en.wikipedia.org/wiki/Asynchronou
<img src="../assets/skill-components.jpg" alt="AEA Skill Components" class="center" style="display: block; margin-left: auto; margin-right: auto;width:80%;">

The `View` concept is probably best compared to the `Message` of a given `Protocol` in the AEA framework. Whilst views represent information to the client, messages represent information sent to other agents, other agent components and services.

## Next steps

We recommend you continue with the next step in the 'Getting Started' series:

- <a href="../skill-guide">Build a skill for an AEA</a>

<br />
62 changes: 0 additions & 62 deletions docs/index.md

This file was deleted.

27 changes: 0 additions & 27 deletions docs/interaction-protocol.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,30 +29,3 @@ In the <a href="../http-connection-and-skill">http connection guide</a> we demon
The `fetchai/http_client` connection can be used to make requests to third party servers. In this case, a skill containing the logic for the production of http requests would create messages conforming with the `fetchai/http` protocol and sends it to the `fetchai/http_client` connection which in turn translates it into http payload and sends it to the destination server.

Note that in general, third party SDKs can be wrapped in a connection and shared with other developers as a package. Often this also involves creating a custom protocol to enforce the type of interactions permitted between skills and the connection wrapping the SDK.


## Next steps

### Recommended

We recommend you continue with the next step in the 'Getting Started' series:

- <a href="../generic-skills-step-by-step/">Trade between two AEAs</a>

### Relevant deep-dives

Most AEA development focuses on developing the `Skills` and `Protocols` necessary for an AEA to deliver against its economic objectives and implement interaction protocols.

Understanding `Protocols` is core to developing your own agent. You can learn more about the `Protocols` agents use to communicate with each other and how they are created in the following section:

- <a href="../protocol">Protocols</a>

Most of an AEA developer's time is spent on `Skill` development. `Skills` are the core business logic components of an AEA. Check out the following guide to learn more:

- <a href="../skill">Skills</a>

In most cases, one of the available `Connection` packages can be used. Occasionally, you might develop your own `Connection`:

- <a href="../connection">Connections</a>

<br />
13 changes: 11 additions & 2 deletions docs/acn.md → ...-concepts/how-do-aeas-create-value/acn.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,17 @@
## Agent Communication Network (ACN)

The agent communication network (ACN) provides a system for agents to find each other and communicate, solely based on their wallet addresses. It addresses the message delivery problem.
ACN is a <a href="../acn">peer-to-peer communication network for agents</a>. It allows AEAs to send and receive envelopes between each other.

The implementation builds on the open-source <a href="https://libp2p.io/" target="_blank">libp2p</a> library. A distributed hash table is used by all participating peers to maintain a mapping between agents' cryptographic addresses and their network addresses.

Agents can receive messages from other agents if they are both connected to the ACN (see <a href="../p2p-connection">here</a> for an example).

!!! note

Hence, the agent communication network (ACN) provides a system for agents to find each other and communicate, solely based on their wallet addresses. It addresses the message delivery problem.

## Message delivery problem

Agents need to contact each others. Given the wallet address of a target agent, how can the originator agent deliver a message to it whilst guaranteeing certain properties?

The properties we would like to have are:
Expand Down Expand Up @@ -34,7 +44,6 @@ At its core, the ACN implements a distributed hash table (DHT). A DHT is similar

For the ACN, we use the DHT to store and maintain association between an agent address and the (network) location of its peer.


## N-tier architecture

To satisfy different resource constraints and flexible deployment the ACN is implemented as a multi-tier architecture. As such, it provides an extension of the client-server model. The agent framework exploits this by implementing different tiers as different <a href="../api/connections/base#connection-objects">`Connections`</a>:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
## Ledgers

Ledgers enable AEAs to store transactions, for example involving the transfer of funds to each other, or the execution of smart contracts. They optionally ensure the truth and integrity of agent to agent interactions.

Whilst a ledger can, in principle, be used to store structured data (for instance, training data in a machine learning model) in most use cases the resulting costs and privacy implications do not make this an efficient use of the ledger. Instead, usually only references to structured data - often in the form of hashes - are stored on a ledger, and the actual data is stored off-chain.

The Python implementation of the AEA Framework currently integrates with three ledgers:

- <a href="https://docs.fetch.ai/ledger/" target="_blank">Fetch.ai ledger</a>
- <a href="https://ethereum.org/en/developers/learning-tools/" target="_blank">Ethereum ledger</a>
- <a href="https://v1.cosmos.network/sdk" target="_blank">Cosmos ledger</a>

However, the framework makes it straightforward for any developer to add support for other ledgers.

### AEAs as second layer technology

The following presentation discusses how AEAs can be seen as second layer technology to ledgers.

<iframe width="560" height="315" src="https://www.youtube.com/embed/gvzYX7CYk-A" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
20 changes: 20 additions & 0 deletions docs/introduction/core-concepts/how-do-aeas-create-value/oef.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
The **Open Economic Framework (OEF)** and **Decentralized Ledger Technologies (DLTs)** allow AEAs to create value through their interaction with other AEAs. The following diagram illustrates the relation of AEAs to the OEF and DLTs.

<img src="../assets/oef-ledger.jpg" alt="The AEA, OEF, and Ledger systems" class="center">

## Open Economic Framework (OEF)

The _Open Economic Framework_ (OEF) consists of protocols, languages and market mechanisms agents use to search and find each other, communicate with as well as trade with each other. As such the OEF defines the decentralised virtual environment that supplies and supports APIs for autonomous third-party software agents, also known as Autonomous Economic Agents (AEAs).

<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The OEF is under development. Expect frequent changes. What follows is a description of the current implementation.</p>
</div>

At present, the OEF's capabilities are fulfilled by three components:

- a permissionless, public peer to peer (agent to agent) communication network, called the <a href="../acn">Agent Communication Network</a>;
- a set of <a href="../interaction-protocol">agent interaction protocols</a>; and
- a centralized <a href="../simple-oef">search and discovery system</a>.

The latter will be decentralized over time.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
## Search and Discovery

A <a href="../simple-oef">simple OEF (sOEF) node</a> allows agents to discover each other. In particular, agents can register themselves and the services they offer, and can search for agents who offer specific services.

For two agents to be able to find each other, at least one must register itself on the sOEF and the other must query the sOEF node for it.
Loading