Infura+Metamask
現在はGanacheのプライベートネット内でのみ流通するトークンを発行しています。
これをテストネット、メインネットにデプロイしましょう
1Metamaskをインストールする
EthereumやERC20トークンを管理するウォレット
↓こちらからを参考に、インストール、初期設定を行ってください。
パスフレーズ、パスワードは後ほど使用するので他人に見られないようにした上で保存してください。
2Infuraのプロジェクトを立ちあげる
InfuraはEthereumのネットワークに接続するノードを立ち上げてくれるサービスです。
これを使うことで、メインネットやテストネットにDAppsをデプロイすることができます。
2.1サインアップ
以下のリンクから飛んでください
フォームに入力したのち、メール認証でサインアップできます
https://gyazo.com/dedc757eae6d3cbccce92193cfad2d10
2.2ログイン
ログインすると右上の「DASHBOARD」に移動してください
https://gyazo.com/7710bdb2686a79dd7e039e9ea2ef576b
移動すると、ダッシュボード画面が表示されます。
2.3プロジェクトの作成
次に左バーの「ETHREUM」に移動してください。
https://gyazo.com/d329367184ec3f19e0be123e182021d7
この画面の「CREATE NEW PROJECT」で各々のプロジェクトを作成してください。
プロジェクト名を記入するだけでokです。
https://gyazo.com/0a045dd3c57498b941dccb4e7772ae0a
ここでは「carrierSelect」という名前のプロジェクトを作成しました。
2.4詳細設定
「KEYS」の部分はAPI keyと同様に他人の目に触れないようにしてください。
また、ENDPOINTはデフォルトでは「Mainnet」になりますが必要がなければtestnetに変更してください。
最も一般的なRopstenに設定することをおすすめします。
https://gyazo.com/adba4519cef2d485bde9caa8499512ee
3TruffleとInfuraを接続する
3.1InfuraのエンドポイントをTruffleに記述する
作成したInfure projectをAPIのように使います。
また、1.で作成したMetamaskをInfuraのウォレットとして使用するので
以下のいずれかの方法で設定してください。
①Infura KeyとMetamaskのパスフレーズ(ニーモニック)を環境変数としてパスを通す
②隠しファイルとしてInfura KeyとMetamaskのパスフレーズ(ニーモニック)を追加する
ここでは、各々の環境に配慮して②について説明します。
まず、メインディレクトリ配下に.InfuraKeyファイルと.mnemonicファイルを作成してください。
また、これらのファイルに1~2で作成したInfura KeyとMetamaskのパスフレーズ(ニーモニック)をそれぞれコピペしてください。
3.2truffle-config.jsへの追記
以下のコードをtruffle-config.jsファイルに追記してください。
内容としては
ネットワークエラーが出てしまうのでNode.jsのdnsライブラリを使用して名前解決し
3.2で作成した隠しファイルからInfuraのエンドポイントとMetamaskを呼び出し、
これら二つを紐づけるようにしてネットワークを設定しています。
code:truffle-config.js
var dns = require('dns');
dns.resolve(ropsten.infura.io, (error) => {
console.error(error);
});
const HDWalletProvider = require('@truffle/hdwallet-provider');
const fsKey = require('fs');
const fsMne = require('fs');
const infuraKey = fsKey.readFileSync(".infuraKey").toString().trim();
const mnemonic = fsMne.readFileSync(".mnemonic").toString().trim();
module.exports = {
networks: {
ganache: {
host: "127.0.0.1", // Localhost (default: none)
port: 7545, // Standard Ethereum port (default: none)
gas: 6700000,
network_id: "5777", // Any network (default: none)
},
ropsten: {
provider: () => new HDWalletProvider(mnemonic, https://ropsten.infura.io/v3/${infuraKey}),
network_id: 3, // Ropsten's id
gas: 3000000, // Ropsten has a lower block limit than mainnet
confirmations: 2, // # of confs to wait between deployments. (default: 0)
timeoutBlocks: 200, // # of blocks before a deployment times out (minimum/default: 50)
skipDryRun: true // Skip dry run before migrations? (default: false for public nets )
},
・
・
・
これで、Ganacheのネットワークに加えropstenネットワークでもデプロイできるようになりました🎉
4 デプロイ
以下のコマンドでデプロイしてみましょう
オプションでネットワークを指定してください。
$truffle console --network ropsten
truffle(ropsten)>migrate --reset --network ropsten
デプロイが無事にできたら、トークンコントラクトのハッシュを以下のサイトで検索してみてください。
世界に向けてデプロイできていることが確認できます。