Edited at

Truffle使ってERC20トークン実装、INFURA及びgethoを使ってデプロイ


はじめに

普段、イーサリアム研究所というサイトでイーサリアムの技術的記事を発信しています。

しかしリサーチを進める中で理解できないことも多く、少しでもわかることを増やして行きたいとの思いから自分でコントラクトを書いていくことにしました。

またイーサリアム研究所の運営元Popshootはgethoというノードホスティングサービスを出していることもあり、そこの理解も深めたいとの思いがありました。

というわけでTruffleを使ってERC20トークンを発行し、gethoを使ってプライベートネットにコントラクトをデプロイしたところまでを超簡単に振り返ります。


参考書籍/記事

書籍

ブロックチェーンアプリケーション開発の教科書

記事

Truffle公式ドキュメント

サーバーレスフレームワークTruffleでÐappを爆速開発する ①Tutorial

Macのローカル環境でEthereumの送金を行う

Gethコンソールでよく使うコマンドをまとめました

Ethereumのテストネット上にトークンをデプロイする

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

など。


流れ

・gethインストール

・Truffleインストール

・OpenZeppelinインストール

・トークンのコントラクトとテストコードを書く

・developmentネットワークにデプロイ

・MetaMask用意

・Infura or Getho登録

・Ropstenネットワークにデプロイ

この手順で完了です。

つまづいたことは幾つかありますが、特に一つあげるならMetaMaskを設定してRopstenにデプロイする前に、MetaMask Ether Faucetに接続することを忘れていて少し時間を食ってしまうミスを犯しました。。


Infuraとgetho

Gethなどのクライアントを使わずにメインネット、テストネットにコントラクトをデプロイするためのノードを立ち上げられるサービスです。


Truffle.jsファイルを編集、HDWalletProviderを利用し、Ropstenへ繋いでみると

以下はgethoを使った場合。hoge,hogehogeは各自で変更。


truffle.js

var HDWalletProvider = require("truffle-hdwallet-provider");

var mnemonic = "hoge";
var accessToken = "hogehoge";

module.exports = {
networks: {
development: {
host: "localhost",
port: 8545,
network_id: "10"
},
getho: {
host: "curious-spider-84967.getho.io/jsonrpc",
port: 80,
network_id: 1010,
gas: 4712388
}
}
};



デプロイ

$ truffle migrate --network getho

Using network 'getho'.

Running migration: 1_initial_migration.js
Deploying Migrations...
... 0x18697b907a0ac23f0c8a7240b02463cb5d2e42d18e4f5a9af707cdbb5ecfccd8
Migrations: 0xe660167a2c25b5fd758c33947999d9dfd05518e0
Saving successful migration to network...
... 0xd2f229e520600b208a2a9659468a002b1081f9ea8e89b26458f7d64d985e519d
Saving artifacts...
Running migration: 2_deploy_my_token.js
Deploying DappsToken...
... 0x510e0aed23a75da9283441b618e993f167e02a743ddec2198d8d229a5eb56fc7
DappsToken: 0x6176e9ec8ab713e3ab4ca415d25f57eea52e3cd6
Saving successful migration to network...
... 0xdca6660536cf9ac0b1e76f5f98d630a95b1c4c1c4020b9b2ea035173489b0ddc
Saving artifacts...

デプロイ完了。


感想

トークン発行からデプロイまで、フレームワークが用意されてるので思ったより簡単でした。RailsでWebアプリを作る感じのアレです。