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 1cd1287
The same spend execution, but using low-level SDK functions:
aepp-sdk-js/examples/node/_api-low-level.js
Lines 1 to 19 in 1cd1287