What is ANVIL?
The Agent Negotiation Verifiable Interaction Layer (ANVIL) bridges Fetch.AI and Sovrin, bringing trusted agents to the Open Economic Framework (OEF). In short, ANVIL mitigates risk in AEA FIPA negotiations with verifiable claims.
ANVIL is written in Python, making use of Fetch.AI’s OEF Python SDK and the Python wrapper for HyperLedger Indy. As an app in the Convergence Stack, ANVIL occupies the top three layers: it handles authentication using Sovrin’s DIDs and encrypted communication channels, querying of Fetch.AI services and various Sovrin blockchain data, serves as a UX tool for developers, and sports a front-end application as well.
How it works
Four key actors play a role in ANVIL’s verifiable interactions:
- The prover, selling a service on the OEF and proving they have the credential to back it.
- The verifier, purchasing the service from the prover after verifying their credential.
- The issuer, creator of the credentials the prover may use – a reputable entity such as a university.
- The steward, an existing trust anchor on the Sovrin ledger establishing an initial network of trust.
Only the prover and verifier are represented by Fetch.AI’s AEAs, as they are the parties involved in negotiation. However, all four are necessary entities on the Sovrin side of the interaction.
Sovrin is fundamentally built on trust, and anyone wishing to use the Sovrin network must handshake with an existing point of known trust. In completing this handshake, known as onboarding, the onboardee establishes themselves as a new trust anchor on the ledger. This enables them not only to make use of verifiable credentials, but also to onboard others to Sovrin. Stewards, the core maintainers of the Sovrin network, can be used as trust anchors in negotiations where no party is native to the Sovrin network.
The onboarding process establishes secure channels between participants. This is one of the many places where Sovrin shines, providing a host of tools for developers to set up authenticated and encrypted communication. Sovrin connections are particularly secure because they are pairwise connections, meaning they can’t be used by anyone but the parties involved. You can learn how ANVIL secure channels work in the ANVIL readme.
While ANVIL provides a rich toolset for all four of its core actors, the interaction between a prover and verifier is the most interesting – it’s where value exchange happens. On the Fetch side of things, this involves two key functions: searching the OEF for credential-backed services, and a FIPA negotiation. To achieve the former, ANVIL pipes text search input similar to a Google search into an intermediate Search AEA, which returns any matching service providers to the verifier. Given a match, the FIPA negotiation, consisting of a Call For Proposal, a price proposal, and negotiation response, may follow any credential proof and verification made possible by Sovrin’s Zero-Knowledge Proofs (ZKPs).
ANVIL was built using two key development principles: performance and modularity. For the performance side, ANVIL operates in a largely asynchronous environment. This allows the execution to jump between various parts of the code while waiting on others, drastically improving performance. For modularity, the ANVIL API is split into reusable, high-level abstractions of more complex Sovrin and Fetch functions. This allows developers to easily use only the components they need to build verifiable interactions, for example using only the verification component in the case where their agents are already set up on both underlying blockchains.
Building ANVIL would not have been possible without the full-featured open source SDKs made available by Fetch.AI and Sovrin. Fetch.AI is praiseworthy for the speed of its core software, ease of use and industry-leading documentation. Similarly, Sovrin provides one of the most accessible ZKP and secure communication toolsets in the Web 3.0 space.
Reliable electric car charging with ANVIL
Let’s look at how ANVIL can work in the real world, facilitating trusted negotiation between an electric car and a charging pole. Because electric cars are high-value physical assets, their owners and manufacturers want to ensure that cars are charged correctly. Charging poles with incorrect power output could cause damage to the car’s internals, and can even be used as an attack vector for nasty tactics like complex overcurrenting.
This problem can be solved by ANVIL, where a car manufacturer issues credentials to its charging poles and revokes them when tampering is detected. Tamper detection can be as simple as a software hash. Now, consider a situation where an electric car discovers a charging pole which is advertising a charging service on the OEF in exchange for Fetch tokens.
Getting started
ANVIL is open source and available on the Outlier Ventures GitHub.
We’re hosting a launch event on the 28th of March, the free Convergence Stack webinar. Sign up to watch a live demo of ANVIL, as well as a conversation with Toby Simpson, CTO of Fetch.AI, and Ken Ebert, Software Architect and OS Engineer at Sovrin. Until then, check out the ANVIL site.