1.0.17 • Published 2 years ago

truffle-hdwallet-provider v1.0.17

Weekly downloads
6,168
License
MIT
Repository
github
Last release
2 years ago

truffle-hdwallet-provider

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

Install

$ npm install truffle-hdwallet-provider

Requirements

Node >= 7.6
Web3 ^1.2.0

General Usage

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

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

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

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


// HDWalletProvider is compatible with Web3. Use it at Web3 constructor, just like any other Web3 Provider
const web3 = new Web3(provider);

// Or, if web3 is alreay initialized, you can call the 'setProvider' on web3, web3.eth, web3.shh and/or web3.bzz
web3.setProvider(provider)

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

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

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.

Parameters:

ParameterTypeDefaultRequiredDescription
mnemonic`string`nullx12 word mnemonic which addresses are created from.
providerstring\|objectnullxURI or Ethereum client to send all other non-transaction-related Web3 requests
address_indexnumber0 If specified, will tell the provider to manage the address at the index specified
num_addressesnumber1 If specified, will create number addresses when instantiated
shareNoncebooleantrue If false, a new WalletProvider will track its own nonce-state
wallet_hdpathstring"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.

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

// Or, pass an array of private keys, and optionally use a certain subset of addresses
const privateKeys = [
  "3f841bf589fdf83a521e55d51afddc34fa65351161eead24f064855fc29c9580",
  "9549f39decea7b7504e15572b2c6a72766df0281cea22bd1a3bc87166b1ca290",
];
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:

truffle-config.js

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

const 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, "https://ropsten.infura.io/v3/YOUR-PROJECT-ID",
            0, 1, true, "m/44'/1'/0'/0/"
        ),
      network_id: '3',
    }
  }
};
upgradeable-toolkitparaswap-demoold-web3-events@owen05/dodo-contract@spongeswap-libs/sponge-swap-corebloomen-token@satoshiswap/satoshi-swap-peripheraloutdated-client@atpar/ap-contracts@atomicloans/eth-contractsrealfund-smart-contractsrepsysset.jsplanar-ticket-walletplcr-revivalplcr-voting@blockhub/node-sdkplunderbotpolymath-core_v2polymath-core_latest@dnextco/tokenboost-solidity-erc223sale@dnextco/tokenboost-solidity-erc223tokensuper-random-evm@enabledao/enable-contracts@evolutionland/bank@evolutionland/common@evolutionland/id@evolutionland/land@evolutionland/markettest-shdshvdkhg4511@frontier-token-research/pm-contractstest-wallet-provider@fr8/protocol@fairmint/c-org-contracts@ethereum-alarm-clock/contracts@eth-optimism/examples@igniswap/igni-swap-core@keyko-io/multisigwalletvodka-subgraph@kiwiswap/kiwiswap-core@juiceswap/core@juiceswap/v2-core@hcaptcha/hmt-escrow-js@helena-pm/pm-contracts@hotswapbsc/hotswap-coreweb3studio-helpers@minespider/core-storage@mybit/contracts@marketprotocol/abis@netvote/elections-solidity@nevermined-io/multisigwalletrahul_contracts@asekuro/contracts@aragon/apm-contracts@canswap/can-swap-corepos-controllerpos-v2@bscsswap/core@bzxnetwork/bounty_hunters@bzxnetwork/contracts@cybercongress/chaingear@daocasino/dc-protocolshdshvdkhg45shdshvdkhg451shdshvdkhg4511setprotocol.jsring-multisigrozetsol-tcrsmart-contractssmart-trade-networks-contracts@donutswap/donut-swap-core@dorg-tech/bc-dao@dorgtech/id-dao-contracts@dwns/corestorage.core.minespider.comsofie-interledger-contractssolidity-deployunete-eth@hyperbridge/funding-protocol@hyperbridge/marketplace-protocol@godsflaw/crucibletidbittidbit-eth@gnosis.pm/dex-liquidity-provision@gnosis.pm/dutch-exchange-smartcontracts@gnosis.pm/dx-daostack@gnosis.pm/dx-mgn-pool@gnosis.pm/dx-price-oracle@gnosis.pm/dx-safe-cli@gnosis.pm/dx-services@gdbc/loopback-connector-contract-web3@gdbc/loopback-connector-contracts-web3test-chronobank-smart-contractstest-chronobank-smart-contracts-circlecitest-chronobank-smart-contracts-compiletest-chronobank-smart-contracts-rinkebytest-chronobank-smart-contracts-testsedtransmute-frameworktokyo-reusable-crowdsale
1.0.17

2 years ago

1.0.16

2 years ago

1.0.15

2 years ago

1.0.15-ens.0

2 years ago

1.0.14

2 years ago

1.0.13

2 years ago

1.0.12

2 years ago

1.0.11

2 years ago

1.0.10

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

1.0.0-web3one.5

2 years ago

1.0.0-web3one.4

2 years ago

1.0.0-web3one.3

2 years ago

1.0.0-web3one.2

2 years ago

1.0.0-web3one.1

2 years ago

0.0.7-beta.1

2 years ago

0.0.7-beta.0

3 years ago

1.0.0-web3one.0

3 years ago

0.0.6

3 years ago

0.0.5

3 years ago

0.0.4

3 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago