アルゴリズムとかオーダーとか

仕事で勉強したことなどをまとめてます

truffle-hdwallet-providerがマルチアカウントに対応

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されないかなぁ。