Truffle Hdwallet Provider

HD Wallet-enabled Web3 provider
Alternatives To Truffle Hdwallet Provider
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Matic.js4771713 days ago93September 16, 202211mitTypeScript
Javascript developer library to interact with Matic Network
Truffle Hdwallet Provider314
4 years ago5March 29, 201950mitJavaScript
HD Wallet-enabled Web3 provider
Ethr Did Resolver174407522 days ago60November 07, 20227apache-2.0TypeScript
DID resolver for Ethereum Addresses with support for key management
Eth Scan170437 months ago20October 03, 202110TypeScript
An efficient Ether and token balance scanner library
Exw313711a year ago19November 17, 202123apache-2.0Elixir
High level Ethereum RPC Client for Elixir
Micro Eth Signer1133a month ago26May 03, 20231mitTypeScript
Create, sign and validate Ethereum transactions & addresses with minimum deps
2 years ago3July 08, 202052apache-2.0Swift
Ethereum Web3 library implementation for Swift
Swap Swear And Swindle48
4 months ago17JavaScript
Contracts for Swap, Swear and Swindle. Swap is a protocol for p2p accounting. This is the basis for Swarm’s incentivization model.
Ethereum Auth Demo37
4 years ago2JavaScript
Demo of signing into a backend website from Web3.
2 years ago10October 04, 20173mitPython
Ethereum Name Service, made easy in Python
Alternatives To Truffle Hdwallet Provider
Select To Compare

Alternative Project Comparisons


HD Wallet-enabled Web3 provider. Use it to sign transactions for addresses derived from a 12-word mnemonic.

⚠️ This repo is deprecated ⚠️

Truffle has moved all modules to a monorepo at trufflesuite/truffle. See you over there!


$ npm install truffle-hdwallet-provider


Node >= 7.6

General Usage

You can use this provider wherever a Web3 provider is needed, not just in Truffle. For Truffle-specific usage, see next section.

var HDWalletProvider = require("truffle-hdwallet-provider");
var mnemonic = "mountains supernatural bird..."; // 12 word mnemonic
var provider = new HDWalletProvider(mnemonic, "http://localhost:8545");

// Or, alternatively pass in a zero-based address index.
var provider = new HDWalletProvider(mnemonic, "http://localhost:8545", 5);

// Or, use your own hierarchical derivation path
var provider = new HDWalletProvider(mnemonic, "http://localhost:8545", 5, 1, "m/44'/137'/0'/0/");

// ...
// Write your code here.
// ...

// At termination, `provider.engine.stop()' should be called to finish the process elegantly.

By default, the HDWalletProvider will use the address of the first address that's generated from the mnemonic. If you pass in a specific index, it'll use that address instead.


Parameter Type Default Required Description
mnemonic *string* null [x] 12 word mnemonic which addresses are created from.
provider string|object null [x] URI or Ethereum client to send all other non-transaction-related Web3 requests
address_index number 0 [ ] If specified, will tell the provider to manage the address at the index specified
num_addresses number 1 [ ] If specified, will create number addresses when instantiated
shareNonce boolean true [ ] If false, a new WalletProvider will track its own nonce-state
wallet_hdpath string "m/44'/60'/0'/0/" [ ] If specified, will tell the wallet engine what derivation path should use to derive addresses.

Private Keys

Instead of a mnemonic, you can alternatively provide a private key or array of private keys as the first parameter. When providing an array, address_index and num_addresses are fully supported.

var HDWalletProvider = require("truffle-hdwallet-provider");
//load single private key as string
var provider = new HDWalletProvider("3f841bf589fdf83a521e55d51afddc34fa65351161eead24f064855fc29c9580", "http://localhost:8545");

// Or, pass an array of private keys, and optionally use a certain subset of addresses
var privateKeys = [
var provider = new HDWalletProvider(privateKeys, "http://localhost:8545", 0, 2); //start at address_index 0 and load both addresses

NOTE: This is just an example. NEVER hard code production/mainnet private keys in your code or commit them to git. They should always be loaded from environment variables or a secure secret management system.

Truffle Usage

You can easily use this within a Truffle configuration. For instance:


var HDWalletProvider = require("truffle-hdwallet-provider");

var mnemonic = "mountains supernatural bird ...";

module.exports = {
  networks: {
    development: {
      host: "localhost",
      port: 8545,
      network_id: "*" // Match any network id
    ropsten: {
      // must be a thunk, otherwise truffle commands may hang in CI
      provider: () =>
        new HDWalletProvider(mnemonic, ""),
      network_id: '3',
Popular Web3 Projects
Popular Address Projects
Popular Blockchain Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.