Wolf of Chazes, shot by M. François Antoine de Beauterne in 1765, displayed at the court of Louis XV.

API3 Core Technical Team Report, October 2021

We are happy to announce that we have released Airnode v0.2! If you have been following our reports, you should know that we have focused our efforts on Airnode since the DAO launch, but we didn’t share further details. The development of Airnode is the most critical aspect of API3 operations, as almost the entirety of our efforts — technical and non-technical — depend on the existence of this oracle node that will enable first-party oracles at scale. In this sense, we’re careful about treating Airnode development with the respect it deserves, and a part of this is preventing it from turning into an object of hype.

Airnode v0.2 is a silent release, meaning that it is public, but not necessarily publicized (this report doesn’t count because we have to tell you about it for governance purposes). What is more significant than the release itself is that we have a release management process in place, which we have tested now with great success by making this release. This will allow us to do rolling releases from here, meaning Airnode being improved iteratively (not that the pre-alpha version wasn’t good, but it had to be frozen and consequently couldn’t be improved further) and being able to address business problems by implementing new features.

I have recently posted an article on what has changed in the Airnode request–response protocol since pre-alpha. Note that a protocol update is only a subset of a node update, and this node update is especially extensive. I’ll try to list some high level items here:

  • We switched from using Serverless Framework and Terraform to pure Terraform for managing our deployments. This will be transparent to the user, yet it improved the stability, future-proofness and cloud provider-agnosticism of Airnode significantly.
  • We implemented an HTTP endpoint that can be used to make test API calls and an outbound heartbeat function for monitoring, primarily for integration platforms such as ChainAPI.
  • The OIS validator is now tested with all of the integrations that the API integrations team has done and is automatically being run as a step by the deployer. This means that if a user attempts to deploy an Airnode with invalid configuration files, the deployer will detect this and throw an error.
  • In addition to implementing the authorizer contracts (see the protocol update post mentioned before), we implemented an interface in the airnode-admin package that Airnode operators can use to personally manage the whitelisting statuses of their clients. Note that this is an alternative to the Airnode management UI.
  • Configuration files that specify integrations and node operator secrets are reworked for better separation and flexibility.
  • Airnode is implemented as a monorepo, which means it is composed of many packages, some of which are useful for developers and node operators in standalone form. In addition to publishing the airnode-deployer Docker image (this is what you use to deploy an Airnode asserverless function) and the airnode-client Docker image (this is what you use if you want to run Airnode in a container, locally or otherwise), we now also publish all packages of the monorepo as npm packages. This allows you to run the following command on your terminal
    npx @api3/airnode-admin derive-airnode-xpub --airnode-mnemonic “nature about salad…”
    (to derive the extended public key of your Airnode by providing your mnemonic) or import @api3/airnode-protocol in your contract to inherit RrpRequester to make Airnode requests.
  • This is no longer as impressive. The Airnode implementation in the airnode-deployer and airnode-client Docker images are now pre-built, which means they are quarter the size of the pre-alpha counterparts and they download and run much faster, providing a better user experience.
  • The pre-alpha documentation was frozen along with the implementation. Since then, we have been working on documentation versioning and v0.2 contents. That all went online now at https://docs.api3.org/airnode/v0.2/
  • The example project of the pre-alpha version lives in a separate repo, which makes it very difficult to keep up to date. We migrated our examples to the Airnode monorepo at https://github.com/api3dao/airnode/tree/master/packages/airnode-examples and integrated them to our CI tests to make sure that they don’t fall out of date (nothing sours a developer away faster than the example projects being broken). We also extended the examples to not require a public chain or a cloud provider account to reduce developer on-boarding friction.

The one thing that we didn’t do is a complete refactor of the node implementation, as that was already very solid in the pre-alpha version. So even though this is quite a major release, we expect the node to keep behaving stably. I’m sure there are bits that I forgot to mention, but this is where you come in anyway. You’re more than welcome to poke around and give us feedback by creating Github issues or swinging by our Discord.

All in all, this was a satisfying end to our August–October grant cycle. This was made possible by a team of great people who take pride in their work. On behalf of myself and the entire API3 community, I thank the members of the core technical team for their great effort. We’re only getting started though, so stay tuned.

Making first-party oracles happen at API3