2.0.8 • Published 3 years ago

@machinomy/hdwallet-provider v2.0.8

Weekly downloads
34
License
Apache-2.0
Repository
-
Last release
3 years ago

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-provider

Usage

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:

ArgumentTypeDescription
mnemonicstring12 word mnemonic which addresses are created from
rpcstringURI of Ethereum client to send all other non-transaction-related Web3 requests
pathstringOptional. HD derivation path, default is m/44'/60'/0'/0
numberOfAccountsstringOptional. 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:

ArgumentTypeDescription
rpcstringURI of Ethereum client to send all other non-transaction-related Web3 requests
pathstringOptional. HD derivation path, default is m/44'/60'/0'/0
numberOfAccountsstringOptional. Number of accounts to manage, default is 1
accountsOffsetstringOptional. Offset of derivation path index, defaults to 0
askConfirmstringOptional. 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:

ArgumentTypeDescription
rpcstringURI of Ethereum client to send all other non-transaction-related Web3 requests
pathstringOptional. HD derivation path, default is m/44'/60'/0'/0
numberOfAccountsstringOptional. Number of accounts to manage, default is 1
accountsOffsetstringOptional. Offset of derivation path index, defaults to 0
askConfirmstringOptional. Ask for confirmation on Ledger, default is false

Development

First, install dependencies:

yarn install --pure-lockfile

Then pass some tests:

yarn test

It 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.

2.0.8

3 years ago

2.0.7

4 years ago

2.0.6

4 years ago

2.0.5

4 years ago

2.0.4

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.7.1

5 years ago

1.7.0

5 years ago

1.6.2

5 years ago

1.6.0

5 years ago

1.5.0

5 years ago

1.4.0

5 years ago

1.3.1

6 years ago

1.3.0

6 years ago

1.2.0

6 years ago

1.1.2

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago