Truffleで作ったDAppsをInfura経由でRopstenにデプロイ

こんにちは。
infura経由でのデプロイに躓いたので残しておきます。

前提条件

というか自分の環境

  • MetaMaskをChromeで拡張済み
  • Metamask内にRopstenのアカウントを発行済みで何Ethか持っている。(1eth無料でもらえます)
  • truffleで既にdappsは開発済み(ローカルで動作するもの)
  • infuraに登録済みでapi発行済み

migrate時に必要になるライブラリをインストール

$ npm install truffle-hdwallet-provider

truffle.jsに設定を追記

// Allows us to use ES6 in our migrations and tests.
require('babel-register')
var HDWalletProvider = require('truffle-hdwallet-provider')
var mnemonic = 'MetaMaskでログインするときに必要な単語の文字列'
var accessToken = 'INFURAのAPIキー'

module.exports = {
  networks: {
    ropsten: {
      provider: function () {
        // もしmetamaskのropstenに複数アカウントがある場合は第三引数で上から何番目のアカウントか指定できます。
        // デフォルトだと1番上のアカウントが指定されるのでethが無いとエラーがでます。
        return new HDWalletProvider(mnemonic, 'https://ropsten.infura.io/v3/' + accessToken )
      },
      network_id: 3,
      gas: 500000
    }
  }
}

migreteする

そしたら設定は完了したのでcompileしてmigrateします。

$ truffle compile
$ truffle migrate --network ropsten

contractの名前とアドレスが表示され、Saving successful migration to network...と出れば成功です。