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.
The aeternity node exposes a REST API. This API is described in the OpenAPI document. SDK uses this document to generate a TypeScript client. The result client (implemented in Node
class) 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.
Any blockchain state change requires signing a transaction. Transaction should be built according to the protocol. SDK implements it in buildTx
, buildTxAsync
, and unpackTx
. buildTxAsync
requires fewer arguments than buildTx
, but it expects the node instance provided in arguments.
Example spend call, using æternity's SDK abstraction:
aepp-sdk-js/examples/node/_api-high-level.js
Lines 1 to 18 in cb80689
The same spend execution, but using low-level SDK functions:
aepp-sdk-js/examples/node/_api-low-level.js
Lines 1 to 19 in cb80689