#12 Week - Latest SDK and Middleware Update, Status-quo and Outlook

Latest SDK and Middleware Update

Description

Over the past month æternity was working on several SDKs in order to provide a smooth developer onboarding experience. The main goal was to provide a unified and clear way to perform actions on the æternity platform. For the sake of full transparency, we are sharing a detailed update about the work of the æternity SDK development teams. Find it in the Status-quo Update below.

Currently, the æternity SDK team is managed by Andrea Giacobino

Outlook

JavaScript SDK

The recently introduced (via a hard fork) Minerva release incorporated notable changes to the æternity protocol. The JavaScript teams’s priority during the last weeks was the integration of the new compiler into the JS SDK. In addition, a long awaited feature which will enable wallets (ex. Base æpp, AirGap and future wallets) to interact with æternity enabled decentralized applications, is currently being implemented. Details and a technical specification can be seen in æternity’s second ever AEXpansion proposal AEX-2, available in the Forum.

The product manager for the JavaScript SDK is Nazar Duchak

Python SDK

The Python SDK will be updated in order to support State-Channels, as requested by the community. This is the current highest priority task, followed by support for the new compiler.

The product manager for the Python SDK is Andrea Giacobino

Go SDK

The Go SDK will be shipped with support for Oracles implemented. it will be able to listen to the Noise Protocol for queries and respond to queries. A tutorial æpp will be built to showcase Oracle features. The long term goal of the Go SDK is to be transformed into a development framework that provides Oracle services and improve the general usability of the Oracle feature.

The product manager for the Go SDK is Andrew Chiw

Middleware

The public æternity infrastrucutre is powered by the æternity Middleware. In the upcoming weeks the Middleware will receive major updates that will enable subscribing to events, a reverse name lookups, calculation of GasPrice/Tx Fee (an average over certain amount of transactions enabling dynamic minimum fees for æpplications and wallets) and call data decoding.

The product manager for the æternity Middleware is John Newby

Hosted Middleware for Testing (experimental)

æternity plans to provide hosted infrastructure for developers and businesses similar to Infura and Alchemy. We will continue to host such a service for testing but the long term goal is to support an independent team to run and maintain such a public infrastructure as a business. Instead of interacting directly with nodes, æternity’s hosted infrastructure will be faster, reliable and scalable, so developers can focus on building a product. The infrastructure will be powered by the Middleware.

Public Endpoints (DON’T USE IN PRODUCTION):

Testnet:

Mainnet:

Status-quo Update

Ecosystem

The æternity SDKs ecosystem features three access levels to the æternity blockchain functionalities:

  1. programmatic
  2. command line interfaces (cli)
  3. web tools

The programmatic (1) level allows access to all æternity node funcitonalities, but requires technical knowledge in one of the supported languages (JavaScript, Python and Go);

The cli (2) access level provides a stable access to the public (external) functinoalities.

The web tools (3) are verticals developed for specific functionalities.

The programmatic (1) and cli (2) levels are accessible via software libraries.

SDKs libraries

The official SDKs libraries are:

The different SDKs serve slightly different purposes.

The JS SDK is mostly intended for embedding in web applications. As a result the cli (2) access is separated from the programmatic (1) access. For the same reason, the JS SDK provides advanced security measures (guards) to prevent the involontary mis-use of node functionalities (TODO: verify)

The Python SDK is intended for implemenentation reference and for fast prototying of server side services. It bundles the programmatic (1) and cli (2) access levels together.

The Go SDK is the preferred SDK for CLI usage and for production systems where performance is important. It bundles the programmatic (1) and cli (2) access levels together.

Web Tools (soon to become part of the Dev-Suite)

The web tools (3) use the JS SDK under the hood. They include:

  • Contracts - dedicated to the interactions with contracts. Will become part of the Dev-Suite Playground æpp.
  • Goggles - usd for inspecting and validation of transactions, as well as verification of signatures. Goggles will also become part of the Dev-Suite Playground æpp.
  • Playground - a Browser IDE for quick testing and development. Playgorund is part of the Dev-Suite.

Web tools (not to be developed further)

  • Explorer is for blockchain monitoring and exploration. We recommend using the community-developed AEKnow explorer.

Dedicated to Testnet there is instead:

Utility tools

  • Middleware high troughput æternity node query engine.

Functionality matrix

Access here.

References and Relevant Links

5 Likes

There is also an (unofficial) community developed SDK for Java available:

Actually following functionalities are available:

  • generate / recover KeyPairs (including HD-wallet support)
  • create and sign Spend-Transactions
    • with automated fee-calculation

Currently in development:

  • support for state-channels
  • support for contracts

To see how it can be used just have a look in our Documentation.

3 Likes

This is great. Are you talking with Andrea?

yes I connected with him. he already gave us answers to a few questions we had :slight_smile:

1 Like