DappsをXサーバーで動かす

コントラクトのデータ取得とデータ書き込みをフロントエンドから行う、という内容で書いた記事のコントラクトをRopstenテストネットワークにデプロイしました。

参考として記載させていただきます。

フロントエンドのコードはXサーバーに配置して、動作確認しました。

サンプルへのリンクは記事末尾です。

Ropstenネットワークへのデプロイ

Ropstenネットワークへデプロイするには、truffleプロジェクトファイルに含まれているtruffle.jsを編集します。

※windows環境の方は少しやり方が違うみたいですね^^;

デプロイの事前準備

・infuraサービスへの登録

Gethのように、ローカルマシンにイーサリアムのクライアントノードを作成して、ネットワーク全体と同期させるのに結構な時間(1~2日らしいです)がかかります。また、ローカルマシンのCPUリソースなどを使用してしまいます。それを代替してくれるものがinfraというサービスですので、登録しましょう。登録時に、アクセストークンというものが発行されますので、これは大事に控えておきます。(後で使います)

・Ropstenネットワークでのether取得

MetaMaskの左上のネットワーク選択タブで、Ropsten Test Networkを選択しましょう。初めて使用する場合、アカウントのetherが0のため、Ropstenネットワークで使用できるイーサを取得する必要があります。アカウントの「BUY」ボタンを押して、Ropsten Test Faucetボタンを押しましょう。

そうすると、「request 1 ether from faucet」で1イーサが取得できます。

※私は、サイトのボタンがすぐに反応しないので、押しすぎてしましました^^;エラーメッセージで怒られます・・・↓

{“error”:”User is greedy.”}

・truffleファイルの編集

CarShareのプロジェクトファイルのtruffle.jsファイルを編集します。

var HDWalletProvider = require("truffle-hdwallet-provider");
var mnemonic = "MetaMaskのニーモニックです。";
var infuraAccessToken = "Infra登録時に提供されたアクセストークン";

module.exports = {
  networks: {
    development:{
      host: "localhost",
      port: 7545,
      network_id: "*"
    },
    ropsten:{
      provider: function(){
        return new HDWalletProvider(
          mnemonic,
          "https://ropsten.infura.io/" + infuraAccessToken
        );
      },
      network_id: '3',
      gas: 500000
    }
  }
};

truffleフレームワークのtruffle-hdwallet-providerというものを使用します。

「var mnemonic」には、MetaMaskのアカウント作成時のニーモニックを(保存しておいて、と言われた言葉の集まりみたいなもの)記載します。

「var infraAccessToken」には、Infra登録時に提供されたアクセストークンを入力します。

このhdwalletを使用すると、ニーモニックに指定したMetaMaskのアカウントでInfraをイーサリアムのノードとして経由し、デプロイができます。便利ですね^^

また、今までは、developmentネットワークのみでしたが、デプロイの先に(networks:)、ropstenを追加しました。

デプロイ

以下コマンドで、Ropstenテストネットワークへのデプロイが可能です。

–networkオプションは最後にsつけてコマンドが通らない、というミス、何度もしました^^;

truffle migrate --network ropsten

コマンドでデプロイしましょう。ローカルのネットワークと違い、ブロックの生成に少々時間がかかりますので、待ちましょう。

※Ropstenはテストネットワークとはいえ、メインネットと同様に動作しており、コントラクトを削除、修正したりはできません。

フロントエンドの構築

私は、test.panda-clip.comというサブドメイン上に実装してみました。

以前の記事、「JavaScript初心者が、Dappsのフロントエンドを作りたい2」で作成した3ファイル(index.html、carshare_abi.js、web3.js)をWebサーバーのホームディレクトリに配置しました。それだけです^^;

コチラからテストサイトへ飛ぶことができます。

 

◆オススメの書籍

ブロックチェーンの概要、スマートコントラクトの概要から、ビットコイン、イーサリアムの違い、イーサリアムのコントラクトを実装するための開発環境構築など、ブロックチェーンアプリケーションの入門にはもってこいの書籍です。