MultiSIg Contractのテストをしたくてtruffle-hdwallet-providerをマルチアカウントに対応しようかと思い、久しぶりにgithubを覗いてみたらすでに対応されていました。
github.com
ということで早速動作確認してみました。
1.インストール
まだnpmに公開はされていない(多分ver0.0.4として公開するのかな?)のでmasterブランチを直接参照する形でインストールします。
npm i trufflesuite/truffle-hdwallet-provider#master
2.truffle.jsを準備。
ropstenにつなげる場合の設定です。mnemonickはMetaMaskから取得しています。
rpcサーバーはINFURAを利用しています。
今回は2つのアカウントを生成してみます。アカウントの生成数は第4引数で指定できます。
const HDWalletProvider = require("truffle-hdwallet-provider"); const mnemonic = process.env.ROPSTEN_MNEMONIC; const accessToken = process.env.INFURA_ACCESS_TOKEN; module.exports = { networks: { live: { host: "localhost", port: 8545, network_id: "*" // Match any network id }, ropsten: { provider: function() { return new HDWalletProvider( mnemonic, "https://ropsten.infura.io/" + accessToken, 0, 2 ); }, network_id: 3, gas: 1000000, gasPrice: 24 * 1000000000 } } };
3.実行結果
最初にropsteにつなげたconsoleを起動
truffle console --network ropsten
んで、eth.getAccountsでaccountの一覧を取得
truffle(ropsten)> web3.eth.getAccounts(function(err, res){console.log(res)}) undefined truffle(ropsten)> [ '0xa929bd1dc1dc0dfa244f99350b9b698c9b493770', '0xdd198a31e1dc7419aa5958097bffd6bdd1626ff1' ]
はい。無事に2つ生成されました。
4.まとめ
まとめと言いつつまとめることはなんもないのですがw まぁテストするときにaccountを2つ以上使っていろいろやりたいことは多かったので、それが簡単にできるようになって大助かりです。早くpublishされないかなぁ。