Package Exports
- @machinomy/hdwallet-provider
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@machinomy/hdwallet-provider) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
hdwallet-provider
HD Wallet-enabled Web3 provider. Use it to sign transactions, and messages for addresses derived from a 12-word mnemonic, or Ledger.
For Ledger it supports both USB and BLE (Ledger Nano X) transports.
Install
$ yarn install @machinomy/hdwallet-providerUsage
You can use this provider wherever a Web3 provider is needed.
Mnemonic
import HDWalletProvider from '@machinomy/hdwallet-provider'
import * as Web3 from 'web3'
const mnemonic = "opinion destroy betray ..." // 12 word mnemonic
const provider = HDWalletProvider.mnemonic({
mnemonic: mnemonic, // mandatory
rpc: 'http://localhost:8545', // mandatory
path: "m/44'/60'/0'/0", // optional
numberOfAccounts: 1 // optional
})
const web3 = new Web3(provider)Parameters:
| Argument | Type | Description |
|---|---|---|
mnemonic |
string |
12 word mnemonic which addresses are created from |
rpc |
string |
URI of Ethereum client to send all other non-transaction-related Web3 requests |
path |
string |
Optional. HD derivation path, default is m/44'/60'/0'/0 |
numberOfAccounts |
string |
Optional. Number of accounts to manage, default is 1 |
Ledger via USB HID
In addition to a mnemonic, you might use Ledger to manage a private key. We support connecting to Ledger in Node setting only. You can not use the provider to connect to Ledger on a web browser. The following enables connecting to Ledger via USB HID transport.
As Ledger connection is optional, Ledger-related providers are built via Promise-based interface.
Factory HDWalletProvider.ledgerHID returns a Promise<HDWalletProvider>.
It makes requiring USB-related packages on demand.
import HDWalletProvider from '@machinomy/hdwallet-provider'
import * as Web3 from 'web3'
// ...
const provider = await HDWalletProvider.ledgerHID({
rpc: 'http://localhost:8545', // mandatory
path: "m/44'/60'/0'/0", // optional
numberOfAccounts: 1, // optional
accountsOffset: 0, // optional
askConfirm: false // optional
})
const web3 = new Web3(provider)Parameters:
| Argument | Type | Description |
|---|---|---|
rpc |
string |
URI of Ethereum client to send all other non-transaction-related Web3 requests |
path |
string |
Optional. HD derivation path, default is m/44'/60'/0'/0 |
numberOfAccounts |
string |
Optional. Number of accounts to manage, default is 1 |
accountsOffset |
string |
Optional. Offset of derivation path index, defaults to 0 |
askConfirm |
string |
Optional. Ask for confirmation on Ledger, default is false |
Ledger via BLE (for Ledger Nano X)
In addition to a mnemonic, you might use Ledger to manage a private key. We support connecting to Ledger in Node setting only. You can not use the provider to connect to Ledger on a web browser. The following enables connecting to Ledger via BLE transport. You might then use your Ledger Nano X wirelessly.
As Ledger connection is optional, Ledger-related providers are built via Promise-based interface.
Factory HDWalletProvider.ledgerBLE returns a Promise<HDWalletProvider>.
It makes requiring BLE-related packages on demand.
import HDWalletProvider from '@machinomy/hdwallet-provider'
import * as Web3 from 'web3'
// ...
const provider = await HDWalletProvider.ledgerBLE({
rpc: 'http://localhost:8545', // mandatory
path: "m/44'/60'/0'/0", // optional
numberOfAccounts: 1, // optional
accountsOffset: 0, // optional
askConfirm: false // optional
})
const web3 = new Web3(provider)Parameters:
| Argument | Type | Description |
|---|---|---|
rpc |
string |
URI of Ethereum client to send all other non-transaction-related Web3 requests |
path |
string |
Optional. HD derivation path, default is m/44'/60'/0'/0 |
numberOfAccounts |
string |
Optional. Number of accounts to manage, default is 1 |
accountsOffset |
string |
Optional. Offset of derivation path index, defaults to 0 |
askConfirm |
string |
Optional. Ask for confirmation on Ledger, default is false |
Development
First, install dependencies:
yarn install --pure-lockfileThen pass some tests:
yarn testIt tests only basic things for mnemonic providers. To test against USB or BLE Ledger use src/script/try-ledger-hid.ts
and src/script/try-ledger-ble.ts scripts correspondingly.