West-ledger v0.3.1
Ledger hardware wallet support for Waves Enterprise blockchain
Install
$ npm install --save @wavesenterprise/west-ledger
Usage
Initiate connection
const { WestHID } = require('@wavesenterprise/west-ledger');
const { default: TransportNodeHid } = require('@ledgerhq/hw-transport-node-hid');
const ledger = new WestHID(TransportNodeHid, chainId, 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).
chainId
is Waves Enterprise network code (86 - for mainet)
transport
is HID Transport implementation. (hw-transport-webhid by default)
- @ledgerhq/hw-transport-webhid
- @ledgerhq/hw-transport-webusb
- @ledgerhq/hw-transport-node-hid
- @ledgerhq/hw-transport-node-speculos
Connect to ledger
await ledger.connect()
Call some methods
const appName = await ledger.api.getAppName()
West Ledger API
-
Get app version
-
Get app name
-
getAddressDataById(id): Promise<IAddressData & IPathInfo>.
Get address info from ledger, where info is:-
id - is number from 0
-
path - is string in internal ledger format
-
address - is string in base58 format
-
publicKey - is string in base58 format
ledger.getAddressDataById(id) .then( (user) => {...}, (err) => {...} );
-
-
Sign transfer transaction bytes (ledger shows detailed transaction info)
const signature = await ledger.api.signTransferTx(userId, { type: 4, version: 2, data: Buffer.from(bytes) }, bs58encode);
userId -
number
type -number
version -number
data -Buffer
with bytes to sign
bs58encode -bool
, encode result to base58 or keep as bytesReturns Promise with signature string in base58 format or bytes
-
Sign transaction bytes (ledger shows configured fields on display)
const signature = await ledger.api.sign( userId, data, display, bs58encode );
userId -
number
data -Buffer
with bytes to sign
display -Object { [key: string]: string }
with key-value pairs to display
bs58encode -bool
, encode result to base58 or keep as bytesReturns Promise with signature string in base58 format or bytes