Fetch.ai Agent Framework v0.3: The collaborative, communications and smart contract release
Apr 3, 2020
The concept of autonomous economic agents (AEAs) is one of the key unique features of the Fetch.ai ecosystem. We are surrounded by dumb data, dumb services and untapped knowledge and resources. AEAs provide a mechanism to bring all of this to life, enabling intelligent connections between those that have, and those that need, so that they can get useful work done on behalf of their owners. Agents are able to perform their work free of human intervention, in a decentralised environment that learns over time how to better connect them. This decentralised approach provides scalability and removes a considerable amount of the brittleness from a centralised economy where a single point of failure can have such dramatic effects. It also better connects the value providers in the economy to each other, often without or with reduced centralisation, which returns more of the value to the individual generating it. When it comes to hospitality, food, taxi services, package deliveries and more, this acts as a disintermediation mechanism as well as providing interesting new ways that existing businesses could be combined, in real-time, to deliver new opportunities.
Fetch.ai’s agent framework is an exciting on-going development aimed at making the creation of agents easier and easier, and today’s v0.3 release and the updated documentation is a substantial step in that direction. You can get it from PyPI, or directly from GitHub.
In this article, we will discuss the key new features provided and how they fit in with agent development now and in the future. This includes smart contract integration, a protocol generator to make it easy for agents to exchange messages with each other and features such as a registry for agent components and integration with IPFS. Let’s delve into these in more detail.
Smart contract integration
Our new agent framework release enables smart contract integration; now, agents can call smart contracts directly. This is a significant milestone: we allow developers to directly wrap existing smart contracts and access them across all components of the agent framework. Additionally, we allow these wrapped contracts to be shared via the agent module registry. Smart contracts are particularly important components because they allow credible transactions to be performed without third parties or human intervention, as they deliver digital facilitation, verification and enforcement of a negotiation or other digital contract. Making this functionality available to agents on Fetch is a huge step towards making complex economic activity and decisions easy.
We’ve built a demo to show how this can actually work in reality: a simple deployment of an ERC1155 contract, showing an agent controlling minting and transacting on it. The ERC1155 contract is a great example because it allows the mixing of fungible and non-fungible tokens in one contract, and it has been adopted by the entertainment industry, in particular, as a great way of handling item pricing without needing multiple contracts.
Agents must be able to find each other, and then talk in a language that they understand, in order to get things done on the network. For this, it is important to be able to specify these “languages” easily, so that communication can take place without the traditional vast amount of work necessary to connect things. This release contains the first alpha version of our protocol generator, making it possible to generate an entire protocol for communication from a single specification file. This massively reduces the work required by a developer, and it helps ensure consistency across different protocols. Features like serialisation (to store and recover state) are handled automatically, again reducing developer load.
Agent module registry
The module registry is a one-stop-shop for pulling together existing components so that agent creators can focus on their agent’s unique capabilities without having to reinvent the wheel in order to do it. All AEA packages, including skills, protocols, connections and contracts, as well as entire AEAs, can now be shared via the registry. This can be thought of as a package manager, in the way that PyPi is for Python developers. It makes it super easy for developers to share and reuse, and it is an open system. The agent module registry is — through its integration with IPFS — ultimately in the control of those that use it, and we at Fetch merely nurture and grow it, to help you speed up development. It is super easy to use, pulling in modules in just one line.
As always, this release comes with some other great features, such as integration with IPFS to enable sharing of both agents and modules. IPFS, The InterPlanetary File System, is a mechanism for sharing and storing data in a distributed file system. It’s open, it’s powerful and users can both receive and host information that is uniquely addressable. With IPFS integration, agents can be uniquely addressable in more than one way — both on IPFS and via their wallet address. We’re also introducing the agent builder which enables easier programmatic construction of agents. And, of course, we release 0.3 with a host of tweaks, bug fixes and documentation improvements beyond these major changes.
This release showcases features that are designed to make an agent developer’s life easier, so that more time is spent on the meat of a new agent, and less on all the plumbing required to allow it to exist, communicate and manage its state. In the coming months, we’re looking forward to providing modules that will make the building of agents even more straightforward, with the aim of making the process as simple as working with Lego®. As always, your feedback in our developer Slack and on our other social media channels would be appreciated.
We can’t wait to see what everyone will build!