https://github.com/wavesplatform/waves-ledger-js
https://github.com/wavesplatform/waves-ledger-js
Last synced: 8 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/wavesplatform/waves-ledger-js
- Owner: wavesplatform
- License: apache-2.0
- Created: 2018-07-25T13:56:14.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2023-04-28T03:08:50.000Z (about 3 years ago)
- Last Synced: 2024-11-29T09:55:02.727Z (over 1 year ago)
- Language: JavaScript
- Size: 591 KB
- Stars: 5
- Watchers: 8
- Forks: 7
- Open Issues: 7
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Waves sign data by ledger in browser
## Install
```
$ npm install --save @waves/ledger
```
## Usage
##### 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);
```
##### 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 Waves network code (87 - for mainet)
`transport` is U2F Transport implementation. (hw-transport-u2f by default)
+ [@ledgerhq/hw-transport-u2f](https://github.com/LedgerHQ/ledgerjs/tree/master/packages/hw-transport-u2f)
+ [@ledgerhq/hw-transport-webusb](https://github.com/LedgerHQ/ledgerjs/tree/master/packages/hw-transport-webusb)
+ [@ledgerhq/hw-transport-web-ble](https://github.com/LedgerHQ/ledgerjs/tree/master/packages/hw-transport-web-ble)
+ [@ledgerhq/hw-transport-http](https://github.com/LedgerHQ/ledgerjs/tree/master/packages/hw-transport-http)
[Read about transport](https://github.com/LedgerHQ/ledgerjs)
### WavesLedger API
+ ##### probeDevice
probeDevice(): Promise. If device available and ready, Promise returned true.
```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. Get user from ledger, where user is:
`{ 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 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)
```js
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)
```js
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)
```js
ledger.signMessage(userId, data)
```
userId - number
data - string
Result is Promise with signature string in base58 format