Truffle v5でINFURAのROPSTEN Testnetにコントラクトをデプロイする

2019年8月12日

Truffle v5を利用して INFURA のROPSTEN Testnet に簡単なコントラクトをデプロイしてみます。

 

下記リンクの記事では Truffle  v4.1.8 で説明しています。v5 においては仕様が変更されています。コントラクトをデプロイするための基本は変わりませんが、本記事では変更された設定ファイルやINFURAの画面などの説明をしていきます。

 

TruffleでINFURAにコントラクトをデプロイする[web3.js]

 

Truffle v5 のインストールや説明は関連ページをご覧下さい。

 

Truffle v5 を利用する

 

バージョンを確認します。

 

適当なプロジェクト(ディレクトリ)を作成し、初期化します。

 

contractsディレクトリ内にHelloWorld.solを作成します。

 

migrationsディレクトリ内に下記のマイグレーションファイル(2_deploy_contracts.js)を作成します。コントラクト生成時のコンストラクタの引数として「こんにちわ」を渡しています。

 

 

truffle-config.js の設定


 

truffle-config.jsにROPSTEN Testnetの設定をします。

 

まず下記部分を有効化します。

1行目

INFURAはユーザーに対してセキュリティの関係上、トランザクションの署名に必要となる秘密鍵を提供していません。しかし、このHDWalletProviderを利用することによって署名を行うことができます。インストールについては下記の「コントラクトのコンパイルとマイグレーション」で説明しています。

 

2行目

infuraKey には、INFURAのキー(ENDPOINT)を取得して設定する必要があります(下記で説明)。

 

4行目

.secret ファイルを作成し、そこに12個の英単語であるmnemonic(ニーモニック)文字列を記述する必要があります。そのファイルを読み取っています。

 

INFURA自体の説明およびmnemonicを取得するMetaMask等についてはあらためて下記のページをご覧下さい。

 

TruffleでINFURAにコントラクトをデプロイする[web3.js]

 

 

次にropstenの項目を有効化します。

 

 

 

infuraKey(ENDPOINT) の取得


 

INFURA

 

アカウントを取得し、ログインしたらプロジェクトを作成します。

 

 

適当なプロジェクト名を付けます。

 

 

「VIEW PROJECT」をクリックします。

 

 

「PROJECT ID」が infuraKey となります。

 

 

 

 

コントラクトのコンパイルとマイグレーション


 

コンパイルする前に truffle-hdwallet-provider をインストールしておきます。

 

インストールの際に下記のようなエラーになった場合は、Pythonのバージョンを2.x系に切り替えてみて下さい。3.x系だとうまくいかないようです。インストールした後に再度3.x系に戻しておくと良いでしょう。

 

コンパイルし、ROPSTEN Testnet にマイグレーション(デプロイ)します。

 

成功すると下記のような表示になります。(2分程かかりました。)

10行目

contract address が作成したHelloWorldコントラクトのアドレスです。実際に下記リンクのEtherScanで確認することができます。

 

https://ropsten.etherscan.io/address/0x8b351c5ED9818441283AC49d4C683F4ab626f299

 

 

web3.jsでコントラクトにアクセスする


 

実際にROPSTEN TestnetにデプロイしたHelloWorldコントラクトにアクセスし「こんにちわ」を取得してみます。Node.jsのExpress を利用します。

 

関連ページ

Node.js – ExpressでHello world

 

適当なプロジェクトを作成し、初期化します。

 

express と web3 をインストールします。

 

package.json のdependencies項目は下記のように設定されました。

 

index.js を作成し下記のように編集しました。

6行目

上述で説明した infuraKey を設定します。

 

20行目

コントラクトのインスタンスの生成には、ABI情報コントラクトのアドレスが必要となります。

 

起動させて、下記リンクにアクセスするとブラウザ上に「こんにちわ」と表示されます。

 

http://localhost:3000/

 

 

デプロイしたコントラクトの changeWord関数の実行に関しては下記ページをご覧下さい。

 

ethereumjs-tx version 2 を利用する [Tx is not a constructor][invalid sender]

 

 

 

LINEで送る
Pocket

Copyright © 2019 思考の葉 All Rights Reserved.  プライバシーポリシー