Skip to content

Instantly share code, notes, and snippets.

@mohoff
Last active June 8, 2018 15:28
Show Gist options
  • Save mohoff/5fdc9fbf19017ec87c1baaefcd200b10 to your computer and use it in GitHub Desktop.
Save mohoff/5fdc9fbf19017ec87c1baaefcd200b10 to your computer and use it in GitHub Desktop.
Template to setup subproviders and Web3
const MnemonicWalletSubprovider = require('@0xproject/subproviders').MnemonicWalletSubprovider
const RPCSubprovider = require('web3-provider-engine/subproviders/rpc')
const Web3ProviderEngine = require('web3-provider-engine')
const Web3Wrapper = require('@0xproject/web3-wrapper').Web3Wrapper
const Web3 = require('web3')
const fs = require('fs')
const NETWORK_ID = 1
const INFURA_API_KEY = '<INFURA_API_KEY>'
const MNEMONIC = fs.readFileSync('./mnemonic.txt', 'utf8')
const networkNames = new Map([
[ 1, 'mainnet' ],
[ 3, 'ropsten' ],
[ 4, 'rinkeby' ],
[ 42, 'kovan' ]
]);
const mnemonicWalletSubprovider = new MnemonicWalletSubprovider({ mnemonic: MNEMONIC})
//const injectedWeb3Subprovider = new InjectedWeb3Subprovider(window.web3.currentProvider) // for browser
const localRpcSubprovider = new RPCSubprovider({
rpcUrl: 'http://localhost:8545'
})
const infuraRpcSubprovider = new RPCSubprovider({
rpcUrl: 'https://' + networkNames.get(NETWORK_ID) + '.infura.io/' + INFURA_API_KEY
})
const providerEngine = new Web3ProviderEngine()
providerEngine.addProvider(mnemonicWalletSubprovider)
providerEngine.addProvider(infuraRpcSubprovider)
providerEngine.start();
const web3Wrapper = new Web3Wrapper(providerEngine)
const web3 = new Web3(providerEngine)
const init = async () => {
console.log('Using network ' + networkNames.get(NETWORK_ID))
console.log('Running with Mnemonic path: ' + mnemonicWalletSubprovider.getPath())
const accounts = await mnemonicWalletSubprovider.getAccountsAsync(3)
console.log('Accounts: ')
for (account of accounts) {
console.log(' ' + account)
}
console.log('-------------------------------------------------------')
}
// Use web3/web3Wrapper here...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment