作ったコントラクタをテストネットワークで利用する
Last updated
Was this helpful?
Last updated
Was this helpful?
ethereumの開発を進めようとするとローカルにノードを立てなければいけなかったり、結構容量が必要だったりします。そこで、infura.ioでは、ethereumのノードのホスティングサービスとなっています。様々なテストネットワークにも対応しているため便利です。
/にアクセスして「GET STARTED FOR FREE」を押して進めましょう。
登録時には、名前、メルアド、パスワードが必要です。
すると、下記のような画面になり登録したメールアドレスに確認用のメールが送信されます。
届いた確認メールの「CONFIRM EMAIL ADDRESS」をクリックして登録を進めましょう。
チュートリアルが始まりますが、「SKIP」で飛ばしましょう。下記のようなトップになったあと、「CREATE NEW PROJECT」をクリックしてプロジェクトを新規作成します。
infura.ioのテストネットワークに繋ぐためのプロジェクトのため「RINKEBY API」の名前にしましょう。
プロジェクトが作成されましたら、次に繋げるネットワークの種類を変更します。「ENDPOINT」のネットワークを「RINKEBY」に設定するとエンドポイントも少し変更されます。rinkeby.infura~~のエンドポイントの右にある青いアイコンをクリックしてコピーしましょう。
これでテストネットワークをローカルの容量を食わずに開発で利用することができます。
ハードウォレットのプラグインをインストールする
作成したコントラクタをテストネットワークにてデプロイするためのプログラムを作成する
新しくdeploy.jsを作成して下記のコードを書いていきましょう。重要なポイントは、providerを作成するときに、まずは、MetaMaskで12個のキーワードがありましたね。それとinfura.ioでコピーしたrinkebyのネットワークに繋げるためのAPI KEYを入れましょう。
これをnode deploy.jsで実行することで、MetaMaskのアカウントが取得することができたらOKです。
下記のようなエラー表記が出たら、gasが口座から引けない状態のため、「MetaMask rinkebyのネットワークでetherを取得する」にでetherを所持したアドレスで行いましょう。
このページで先ほどの結果で出たコントラクタのアドレスをページの右上に貼り付けましょう。すると、コントラクタの内容が表示されて正常に発行されたこととトランザクションの内容が表示されます。
ローカルでdeployまでを行いました。内容としてテストも正常に通したため今度は、Remixで実行してみたいと思います。Remixにアクセスしたあと、Environmentの設定を「Injected Web3」に設定してみましょう。するとMetaMaskのアドレス内容がしたのAccountに表示されていることがわかります。
これは、Injected Web3がMetaMask から供給される Web3 のアカウントを使用するという設定です。
Inboxの下にある 「At Address」にローカルで表示させたコントラクトのアドレスをコピペし、At Addressボタンを押すと、そのコントラクタの内容にフォーカスすることができます。
ここで、callとmethodの違いがはっきりわかります。今までVMの中で閉じられていた世界では、messageボタンもsetMessageボタンも押すとすぐに反応しました。しかし、今回はrinkebyネットワークに存在しているコントラクタにアクセスして更新するため行いが大きく異なります。
messageボタンはcallするだけなのですぐにHi thereが表示されます。
しかし、setMessageボタンに"hey"などの文字列を入れて行うと新しいウィンドウが表示されてきます。
コントラクトの中身を変えることで新しくトランザクションが発生しそのときにgasが必要となるための確認が必要となります。確認ボタンを押しましょう。
確認ボタンを押したあと、すぐにmessageボタンを押してcallしてみてください。まだ「Hi there」のままだと思います。これがネットワークでトランザクションを新しく発行している処理です。MetaMaskのポップが表示されたことでトランザクションが正常にできたことがわかりますので、その後messageをcallしてみましょう。すると「hey」に変更されているはずです。
deploy.jsにてコントラクタが作成されてデプロイされました。テストネットワークを見ることでコントラクタが正常に発行されたかを見ることができます。にアクセスしましょう。