Skip to content

AirGap Coin Library

The airgap-coin-lib is a protocol-agnostic library that allows easy handling of the most important tasks relating cryptocurrencies and blockchains.

It implements operations such as preparing, signing and broadcasting transactions for a range of protocols.

The library consists of a shared interface for all implements protocols. This is especially useful in the context of AirGap. The following operations are specified:

  • prepareTransaction - This is done on the wallet (online) side. Either a public key or extended public key is used and will fetch the required information from the network
  • signTransaction - This is done on the vault (offline) side. The output of "prepareTransaction" is the input for this method (hence the output of "prepareTransaction" is transferred via URL scheme (same-device) or QR code (2-device-setup)).
  • broadcastTransaction - This is done on the wallet (online) side. The output of "signTransaction" is the input for this method (hence the output of "signTransaction" is transferred via URL scheme (same-device) or QR code (2-device-setup)).

Getting started

Requirements

npm >= 5
NodeJS >= 8

Everything else gets installed automatically using npm install.

Clone and Run

$ git clone https://github.com/airgap-it/airgap-coin-lib.git
$ cd airgap-coin-lib
$ npm install
$ npm test

Supported Protocols

The modular design used in this library allows you to simply add new protocols with special logic. Adding a new Bitcoin-like protocol basically means:

  1. select the correct network parameters (see lib/networks.ts)
  2. set the Insight API URL to communicate with the blockchain

Adding a new Ethereum-like protocol means:

  1. set the correct chain id
  2. set the JSON RPC URL

Currently supported are:

  • Bitcoin
  • Ethereum
  • Generic ERC20 Tokens
  • Aeternity
  • Tezos (Beta)