3.5.1 • Published 4 years ago

@bancoin/ledger v3.5.1

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
4 years ago

Bancoin sign data by ledger in browser

Install

$ npm install --save @bancoin/ledger

Usage

Create connection
const BancoinLedger = require('@Bancoin/ledger');
const ledger = new BancoinLedger();

BancoinLedger can have optional arguments.

    import TransportNodeHid from '@ledgerhq/hw-transport-node-u2f';

    const options = {
        debug: true, //boolean,
        openTimeout: 3000, //number,
        listenTimeout: 30000, //number,
        exchangeTimeout: 30000, //number,
        networkCode: 87, //number,
        transport: TransportNodeHid
    };

    const ledger = new BancoinLedger(options);
Where:

debug enable or not logs of the binary exchange. openTimeout is a delay number in ms for waiting connection.
listenTimeout is a delay number in ms for waiting listen request to U2F device.
exchangeTimeout is a timeout (in milliseconds) for the exchange call. Only some transport might implement it. (e.g. U2F).
networkCode is Bancoin network code (87 - for mainet)
transport is U2F Transport implementation. (hw-transport-u2f by default)

Read about transport

BancoinLedger API

  • probeDevice
    probeDevice(): Promise. If device available and ready, Promise returned true.
      const canIUse = async () => {
          return await ledger.probeDevice();
      }
  • tryConnect

    tryConnect(): Promise<>. reconnect to Transport and init ledger libs.

      const isLedgerReady = async () => {
          try {
              return await ledger.tryConnect();
          } catch (e) {
              ///...error handlers
          }
      };
  • getUserDataById

    getUserDataById(id): Promise. Get user from ledger, where user is: { id: number, path: string, BancoinAddress: string, publicKey: string }

    id - is number from 0
    path - is string in internal ledger format
    bancoinAddress - is string in base58 format
    publicKey - is string in base58 format

    ledger.getUserDataById(id)
        .then(
            (user) => {...},
            (err) => {...}
        );
  • signTransaction

    Sign bancoin transaction bytes (ledger show detailed transaction info)

        ledger.signTransaction(userId, asset, data)

    userId - number data - Array number form 0 to 255 asset - {precision: number, ...}

    Result is Promise with signature string in base58 format

  • signSomeData

    Sign any bytes (ledger can't show detail info)

      ledger.signSomeData(userId, data)

    userId - number data - Array number form 0 to 255

    Result is Promise with signature string in base58 format

  • signRequest
    Sign any bytes (ledger can't show detail info)
      ledger.signRequest(userId, data)
    userId - number data - Array number form 0 to 255 Result is Promise with signature string in base58 format
  • signMessage

    Sign any string (ledger can't show detail info)

    ledger.signMessage(userId, data)

    userId - number data - string

    Result is Promise with signature string in base58 format