Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vaporyjs/vaporyjs-ledger
A wrapper library around the official Ledger JavaScript
https://github.com/vaporyjs/vaporyjs-ledger
vapory
Last synced: 21 days ago
JSON representation
A wrapper library around the official Ledger JavaScript
- Host: GitHub
- URL: https://github.com/vaporyjs/vaporyjs-ledger
- Owner: vaporyjs
- License: mit
- Created: 2018-03-04T04:43:06.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2022-06-22T03:51:44.000Z (over 2 years ago)
- Last Synced: 2024-11-07T21:51:54.537Z (3 months ago)
- Topics: vapory
- Language: TypeScript
- Homepage: https://vapory.org
- Size: 270 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
A wrapper library around the official Ledger JavaScript library that attempts to simplify usage and handle various failure modes/problems.
# Usage
```typescript
import { LedgerVapory, BrowserLedgerConnectionFactory, Network } from "vaporyjs-ledger";async function doStuff() {
const onConnectLedgerRequest = async () => { await promptUserToConnectLedger(); }
const onOpenVaporyAppRequest = async () => { await promptUserToOpenVaporyAppOnLedger(); }
const onSwitchLedgerModeRequest = async () => { await promptUserToSwitchVaporyAppToBrowserModeAndRestartVaporyApp(); }
const onEnableContractSupportRequest = async () => { await promptUserToEnableContractSupportInVaporyAppAndRestartVaporyApp(); }const ledgerVapory = new LedgerVapory(Network.Main, BrowserLedgerConnectionFactory, onConnectLedgerRequest, onOpenVaporyAppRequest, onSwitchLedgerModeRequest);
const address = await ledgerVapory.getAddressByBip44Index(0);
const firstSignedMessagePromise = ledgerVapory.signTransactionByBip44Index("e8018504e3b292008252089428ee52a8f3d6e5d15f8b131996950d7f296c7952872bd72a2487400080", 7);
const secondSignedMessagePromise = ledgerVapory.signTransactionByBip32Path("e8018504e3b292008252089428ee52a8f3d6e5d15f8b131996950d7f296c7952872bd72a2487400080", "m/44'/60'/0'/0/7");// this will block until both first and second messages are done because the library handles ordering internally
const secondSignedMessage = await secondSignedMessage;// if the ledger isn't connected with the Vapory app open in browser mode, the on*Request callbacks above will be called before the signing promises return
const firstSignedMessage = await firstSignedMessage;// BIP44 index 7 is the same as `m/44'/60'/0'/0/7`; it is strongly recommended to use index 0 if you don't support multi-address wallets
assert.equal(firstSignedMessage, secondSignedMessage);
}
```# Development
### Note 1
`package-lock.json` force updates `node-hid`, a transitive dependency of `ledgerco` to `0.6.0`. This is necessary to get things working on Windows without requiring python as well as get tests working in Docker until `ledgerco` upgrades its dependency on `node-hid` to `0.6.0`.### Testing with a physical ledger
You can test in node by building the TypeScript files and then running `node output/scripts/node.js`.You can test in browser (chrome only, look at developer console) by building the TypeScript files and then running `npx budo output/scripts/browser.js --ssl` (note: you need openssl binaries on your path or in the root of your project).