shadows-truffle-hdwallet-provider-privkey
v0.0.1
Published
HD Wallet-enabled Web3 provider for use with raw private key
Downloads
4
Readme
truffle-hdwallet-provider-privkey
HD Wallet-enabled Web3 provider. Use it to sign transactions for addresses derived from a raw private key string.
If you are using Web3 1.0, please use the web3-one
branch. Install the package using npm i truffle-hdwallet-provider-privkey@web3-one
. README is updated in that branch.
Install
$ npm install truffle-hdwallet-provider-privkey@web3-one
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-privkey");
const privKeys = ["ce2eab51c7c428...", "46c36f1970dcf37ec..."]; // private keys
const provider = new HDWalletProvider(privKeys, "http://localhost:8545");
By default, the HDWalletProvider
will use the address of the first address that's generated from the private key. Currently, the HDWalletProvider
manages only one address at a time, but it can be easily upgraded to manage (i.e., "unlock") multiple addresses.
Parameters:
privateKeys
:string
. Array of private keys for multiple accounts (DO NOT SHARE THEM EVER).provider_uri
:string
. URI of Ethereum client to send all other non-transaction-related Web3 requests.
Truffle Usage
Use Case
I have a an account MetaMask and I want to use it to deploy my contracts to a testnet/mainnnet.
Steps for MetaMask
- Click 3 dots next to MetaMask
- Click "Account Details"
- Click "Export Private Key" and type password
- Copy private key and use the below steps in your Truffle config.
Usage
You can easily use this within a Truffle configuration. For instance:
truffle.js
const HDWalletProvider = require("truffle-hdwallet-provider-privkey");
const privateKeys = ["ce2eab51c7c428...", "46c36f1970dcf37ec..."]; // private keys
module.exports = {
networks: {
development: {
host: "localhost",
port: 8545,
network_id: "*" // Match any network id
},
ropsten: {
provider: () => {
return new HDWalletProvider(privateKeys, "https://ropsten.infura.io/MY_INFURA_KEY")
},
network_id: 3
}
}
};
Web3 Provider
You can also use the Wallet provider as an easy way to get a Web3 object that has an unlocked account to sign transactions through an INFURA node.
const Web3 = require('web3')
const WalletProvider = require('truffle-hdwallet-provider-privkey')
const privKey = "2442e1526f1..."; // raw private key
const w = new WalletProvider(privKey, "https://ropsten.infura.io/MY_INFURA_KEY")
web3 = new Web3(w.engine)
Notes
Make sure the from
address you use when sending transactions is entirely lowercase or you will see an error like this:
TypeError: private key should be a Buffer