1.0.17 • Published 5 years ago

truffle-hdwallet-provider v1.0.17

Weekly downloads
6,168
License
MIT
Repository
github
Last release
5 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',
    }
  }
};
vodka-subgraphupgradeable-toolkitparaswap-demoold-web3-events@owen05/dodo-contract@spongeswap-libs/sponge-swap-core@satoshiswap/satoshi-swap-peripheral@lydiaswap/pancake-swap-core@aliumswap/alium-swap-core@bamboo-defi/bamboodefi-core-testtest-swappermissioning-smart-contracts@radar/setprotocol.js@sonicswap/core-dev@sonicswap/core-final@bscsswap/core@miuswap/miu-swap-core@finaswap/fina-swap-corearcexsdethercontractrepo@qdexgo/core-contracts@fathomswap-libs/fathom-swap-core@xyo-network/api-diviner-nodejsgenerator-solidity-boilerplate@versagames/versa-swap-core@versaswap-libs/pancake-swap-core@versaswap-libs/versa-swap-core@versaswap-libs/versa-swap-core-test@67p/aragon-clistorage.core.minespider.com@daocasino/dc-protocol@infinitebrahmanuniverse/nolb-tru@tangleswap/tangleswap-core@everything-registry/sub-chunk-2974dragon-stash-defi-core-contracteasybake-swap-coreeasybake-swap-peripheryeasy-ethereum-clientdx-servicesdx-mgn-pooldrizzle-boxethereum-easyethereum-clientomniscorporiseth-react-boilerplateeth-sciteatokenfaucetdappcrypto-core-shared-v2xor-corexor-external-contract-examplesxor-librarieszos-linkedlistzos-safemath@polylama-libs/polylama-swap-core@skaswap/core@pigswap/periphery@shardex-libs/shardex-swap-core@plantswap-libs/plantswap-swap-core@olympfin/olymp-swap-core@smugswap/core@powerswap/core@powerswap/periphery@singledogswap-libs/singledog-swap-core@pixiuswap0/pixiu-swap-corev1zap-bond-widgetzap-termgenie-contractsgenid-registry-contract@saqarmaxswap-libs/saqarmax-swap-core@scads/scads-coregsnnelo@satoshiswap/satoshi-swap-coreethmoji-contractsexcepturiquosoverone-subgraphoxford-defi-coreoswap-core-testoutdated-clientethereum-notary-contractsevm_package_linkedlistplanar-ticket-walletpos-v2pos-controllerplcr-revivalplcr-votingplunderbot@thenexlabs/nex-core@thesolidchain/pancake-swap-periphery@project-monarch/core@pyroswap/pyro-swap-core@pugswap-libs/pug-swap-core@sphynxswap/swap-core@sphynxswap/swap-peripheryhmt-escrow@thundercore/referral-solidity@stowprotocol/stow-smart-contracts@transmute/transmute-framework@reacontrade/core@reacontrade/reacon-trade-core@trading-planet/swap-core
1.0.17

5 years ago

1.0.16

5 years ago

1.0.15

5 years ago

1.0.15-ens.0

5 years ago

1.0.14

5 years ago

1.0.13

5 years ago

1.0.12

5 years ago

1.0.11

5 years ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago

1.0.0-web3one.5

5 years ago

1.0.0-web3one.4

5 years ago

1.0.0-web3one.3

5 years ago

1.0.0-web3one.2

5 years ago

1.0.0-web3one.1

5 years ago

0.0.7-beta.1

6 years ago

0.0.7-beta.0

6 years ago

1.0.0-web3one.0

6 years ago

0.0.6

6 years ago

0.0.5

6 years ago

0.0.4

6 years ago

0.0.3

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago