【cryptozombies後の世界②】truffleで作成したアプリケーションをINFURAを使ってRopstenにデプロイしてipfsで表示する

前回記事の続きです!

【cryptozombies後の世界①】truffleで作成したアプリケーションをganacheを使ってローカルで表示する
truffleで何かアプリケーションを作ってみようと思い立ち、今までRailsでアプリケーションを主として作成していましたがDAppsを作成して...

またソースコードはここにあります。(ほとんどtruffle boxのまま。)

全体像

truffleで作ったアプリケーションをテストネットに反映するにあたり、大きく分けて2つデプロイしなくてはいけません。

  1. コントラクトコードをメインネットまたは、テストネットへのデプロイ
  2. ブラウザを表示するためのフロントエンドのデプロイ

webアプリケーションで考えると、コントラクトコードのデプロイはRDSへのデプロイ、ブラウザへのデプロイはEC2へのデプロイと似ています。

INFURA

1 コントラクトコードをメインネットまたは、テストネットへのデプロイ

コントラクトコードへのデプロイは、INFURAというツールを使って簡単に実行することができます!

概要

gethも考えたのですが、ローカルで同期するのがあまり好きではない…

INFURAだと簡単にデプロイできる。

使いやすいので使うべき。登録するだけです。

今回はテストネットのropstenにデプロイしました。

実際のtruffle.jsのropsten部分は以下の通りです。

gasを5000000に設定するとエラーでデプロイできなかったので、ここの設定を注意した方がいいです!

多くのサイトで説明がありますが、以下のように環境変数もちゃんと設定しておきましょう!(truffle-hdwallet-providerを使っています)

MNEMONICは、MetaMaskの設定から確認することができます!

ACCESS TOKENは、INFURAから取得しましょう!

ガス料金

デプロイする時にガス料金を設定しなくてはいけないですが、こちらのサイトが大変参考になります。

めちゃくちゃ丁寧な説明…有り難い…

ipfs

2 ブラウザを表示するためのフロントエンドのデプロイ

ipfsという分散型サーバーへデプロイします。

これも非常に簡単にできるようになっていました!

有り難い!

普通にbrewでインストールできるのでやります。

そして、デプロイしていきます。

truffleのディレクトリで実行します。

デプロイする前に念のために、truffle compilenpm run buildはしておきましょう!

そうすると、buildディレクトリにbuildされたデプロイするファイルが集まります。

そして、確かターミナルの別タブで以下を実行します。

そうすると、ファイルがaddされていきます。

そして一番最後に出てきたQmSJc1dDMYD4HALJ3FiJgcWCYdCk7H2EdiJ7eVyu35YteFへアクセスできるようになります。

ブラウザからのアクセス方法は、https://gateway.ipfs.io/ipfs/文字列/という感じになるので、今回はhttps://gateway.ipfs.io/ipfs/QmSJc1dDMYD4HALJ3FiJgcWCYdCk7H2EdiJ7eVyu35YteF/です。

javascriptのファイルが読まれないこともあった

npm run buildたるものが存在することを知らなかったので…

忘れずにしましょう。

コントラクトコードがデプロイされていないというエラー

もう一度、compileしてbuildしてipsfへデプロイしたら、無事に表示された!

その他

structはreturnできない

solidityに関してですが、structで定義した変数群はfunctionでreturnできないので気をつけましょう!

デバッグ方法は前回の記事に書いてあるのが参考になると思います!

You can not return a struct because Solidity implements them only as a loose bag of variables, they are not real objects.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です