@machinomy/hdwallet-provider v2.0.8
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.
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago