Low vs High level API

Interactions

AeSdk is a general, high-level interface that wraps multiple low-level interfaces. A general interface is preferred for its simplicity and resilience to breaking changes.

But there is also low-level interfaces. It's excellent for additional control, and as a teaching tool to understand the underlying operations. Most real-world requirements involves a series of low-level operations, so the SDK provides abstractions for these.

Node API

The aeternity node exposes a REST APIarrow-up-right. This API is described in the OpenAPI documentarrow-up-right. SDK uses this document to generate a TypeScript client. The result client (implemented in Node classarrow-up-right) a basically a mapping of all node endpoints as functions.

So to get a transaction based on its hash you would invoke node.getTransactionByHash('th_fWEsg152BNYcrqA9jDh9VVpacYojCUb1yu45zUnqhmQ3dAAC6'). In this way the SDK is simply a mapping of the raw API calls into JavaScript.

Transaction builder

Any blockchain state change requires signing a transaction. Transaction should be built according to the protocolarrow-up-right. SDK implements it in buildTxarrow-up-right, buildTxAsyncarrow-up-right, and unpackTxarrow-up-right. buildTxAsyncarrow-up-right requires fewer arguments than buildTxarrow-up-right, but it expects the node instance provided in arguments.

High-level SDK usage (preferable)

Example spend call, using æternity's SDK abstraction:

https://github.com/aeternity/aepp-sdk-js/blob/1cd128798018d98bdd41eff9104442b44b385d46/examples/node/_api-high-level.js#L1-L18

Low-level SDK usage

The same spend execution, but using low-level SDK functions:

https://github.com/aeternity/aepp-sdk-js/blob/1cd128798018d98bdd41eff9104442b44b385d46/examples/node/_api-low-level.js#L1-L19

Last updated

Was this helpful?