koogawa blog

iOS、Android、foursquareに関する話題

Infuraを利用してTruffleからRinkebyに接続してみる

マネージドイーサリアムノードのサービスプロバイダであるInfuraを利用して、TruffleからRinkebyに接続する設定をメモする。

Infuraサインアップ

まずは https://infura.io/register にアクセスして、アカウントを作成する。最初にプロジェクトを作成するが、名前は何でも良い。

「MANAGE KEY」を押すとAPI KEYが表示されるのでそれをメモする。

truffle-config.js

Truffleの設定ファイルである truffle-config.js を開き、networks: {} の中にRinkebyセクションを追加する。

    rinkeby: {
      provider: () => {
        return new HDWalletProvider(
          mnemonic,
          `https://rinkeby.infura.io/v3/${infuraProjectId}`
        );
      },
      network_id: "*"
    },

また、上の方にある

require('dotenv').config();
const mnemonic = process.env["MNEMONIC"];
const infuraProjectId = process.env["INFURA_PROJECT_ID"];

const HDWalletProvider = require('@truffle/hdwallet-provider');

の行もコメントアウトする。

見て分かる通り dotenvHDWalletProvider を使うのでそれぞれインストールする。

npm install dotenv
npm install @truffle/hdwallet-provider

HDWalletProvider はデプロイプロセスで利用できるプロバイダを作成するためのライブラリである。プロバイダを作成するためには、InfuraのAPI KEYおよびシークレットリカバリーフレーズ(ニーモニックとも呼ばれる)にアクセスする必要がある。そこで、環境変数を使ってアクセスできるようにしておく。

!!注意:シークレットリカバリーフレーズは絶対に公開しないように!!

$ export MNEMONIC="<あなたのシークレットリカバリーフレーズ>”
$ export INFURA_PROJECT_ID="<INFURAのAPIKEY>”

ここまで設定すれば、truffle migrate --network rinkeby などのコマンドを用いてRinkebyに接続できるようになる。