Waves ladger lib for browser
npm install @waves/ledger```
$ npm install --save @waves/ledger
##### Create connection
`js`
const WavesLedger = require('@Waves/ledger');
const ledger = new WavesLedger();WavesLedger can have optional arguments.
`js
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 WavesLedger(options);
`debug
##### Where: 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 Waves network code (87 - for mainet) transport is U2F Transport implementation. (hw-transport-u2f by default)
+ @ledgerhq/hw-transport-u2f
+ @ledgerhq/hw-transport-webusb
+ @ledgerhq/hw-transport-web-ble
+ @ledgerhq/hw-transport-http
+ ##### probeDevice
probeDevice(): Promise
`js`
const canIUse = async () => {
return await ledger.probeDevice();
}
+ ##### tryConnect
tryConnect(): Promise<>. reconnect to Transport and init ledger libs.
`js
const isLedgerReady = async () => {
try {
return await ledger.tryConnect();
} catch (e) {
///...error handlers
}
};
+ ##### getUserDataById
getUserDataById(id): Promise
{ id: number, path: string, wavesAddress: string, publicKey: string }
id - is number from 0
path - is string in internal ledger format
wavesAddress - is string in base58 format
publicKey - is string in base58 format
`js`
ledger.getUserDataById(id)
.then(
(user) => {...},
(err) => {...}
);
+ ##### signTransaction
Sign waves transaction bytes (ledger show detailed transaction info)
`js`
ledger.signTransaction(userId, asset, data)
userId - number
data - Array
asset - {precision: number, ...}
Result is Promise with signature string in base58 format
+ ##### signSomeData
Sign any bytes (ledger can't show detail info)
`js`
ledger.signSomeData(userId, data)
`
userId - number
data - Array
Result is Promise with signature string in base58 format
+ ##### signRequest
Sign any bytes (ledger can't show detail info)
js`
ledger.signRequest(userId, data)
userId - number
data - Array
Result is Promise with signature string in base58 format
+ ##### signMessage
Sign any string (ledger can't show detail info)
`js``
ledger.signMessage(userId, data)
userId - number
data - string
Result is Promise with signature string in base58 format