EthereumでERC-20トークンを発行してみる

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る
         

はじめに

前回Ethereumを使ったICOについて概要を説明しました。

今回はトークンを実際に実装してみてテストネットにデプロイするところまでをやってみます。

動作環境

  • macOS High Sierra Version 10.13
  • Mist Version: 0.9.3
  • Geth Version: 1.7.2

開発環境準備

Ethereum用ブラウザMistをインストール

オンラインのRemix IDEで開発も出来ますが、今回は公式から提供されているDappsブラウザであるMistを使って開発します。

まず最新のMistをダウンロードしてインストールしておきます。

https://github.com/ethereum/mist/releases

Mist-macosx-0-9-3.dmg

初期起動時はデータの同期にしばらく時間がかかります。

アカウントの作成

[ADD ACCOUNT]でスマートコントラクト実行用のアカウント(アドレス)を作成します。

新しくアカウントを作成する場合は[Create new account]で進みます。

トランザクションの作成時に使用するパスワードを設定します。(2回聞かれます)

アカウントのkeyfilesをバックアップするように言われますが、テスト用アカウントなので特に気にせず進みます。

[STAY ANONYMOUS]でアカウントの作成が完了します。

デフォルトのアカウント名だと分かりづらいため、今回使用するアカウント名をそれぞれ「TEST 1」と「TEST 2」としました。

マイニング実行

送金やコントラクトを実行するためにマイニングを実行しておきます。

Mistからローカル環境でGethを起動することができます。

[Develop]>[Network]>[Solo network]でネットワークを選択します。

マイニングを実行します。

あれ、マイニングどうやって止めるんだ?と思いましたが、どうやら今のバージョンではコンソールでコマンドを叩いて止めるしかなさそうです。

[Develop]>[Toggle developer tools]>[Mist UI]から開発者ツールを表示させます。

以下のコマンドを実行してマイニングを停止します。

コントラクトの実行にはetherが必要なので、MAIN ACCOUNTからTEST 1アカウントに少額を送金しておきます。

ERC-20トークン開発

ERC-20トークンとは?

Ethereum上でトークンを開発する場合の実装ルールです。

独自のトークンが乱立するのを防ぎ、統一的に扱えるように開発コミュニティ内で取り決めが行われました。

現在では公式で推奨されています。

EIPs: ERC-20 Token Standard

サンプルコードが公式で詳しく解説されています。

Create your own CRYPTO-CURRENCY with Ethereum

ERC-20トークンの概要については前回の記事を参照してください。

ERC-20トークン実装

基本的に公式のサンプルコードを使用します。

https://ethereum.org/token#the-code

コントラクト名のみ変更します。

トークンコントラクトをコンパイルする

[CONTRACTS]タブを開き、[DEPLOY NEW CONTRACT]からコントラクトデプロイに進みます。

実行アカウントをTEST 1に指定して、[SOLIDITY CONTRACT CODE]にコードを貼り付けます。

コンパイルは自動で実行されるので、エラーや警告が出ていなければデプロイ可能です。

デプロイするコントラクトを選択します。

コンストラクタに渡すパラメータを入力します。

パラメータの入力が完了したら[DEPLOY]を実行します。

コントラクトデプロイのトランザクションの準備ができました。アカウントを作成した時のパスワードを入力し、[SEND TRANSACTION]を実行します。

トランザクションがEthereum上で検証されています。

トランザクションが確定しました。

トークンコントラクトがローカル環境で作成されました。

トークン実行

[WRITE TO CONTRACT]からTransfer関数を選択します。

トークンをTEST 2宛に100KBT送金する場合は、toにTEST 2のアドレスを、valueは100e18として実行します。

TEST 1アカウントからTEST 2アカウントに向けて100KBT送金することができました。

以上でEthereum上で動作するトークンの実装が完了しました。

今回はテンプレートをそのまま使いましたが、サービスによって独自の処理を追加することもできます。

この辺の仕様はまだまだ試行錯誤されている段階なので、今後もどんどんアップデートされていくと思います。

トークンコントラクトをテストネット(Rinkeby)にデプロイ

せっかくなのでテストネットにデプロイしてみます。

テストネットはいくつか存在しますが、ここではRinkebyを使います。

以下のリンクから開発用のetherがもらえます。
Twitter、Facebook、Google Plusのどれかで受け取り用のアドレスとポストして、そのURLを送るともらえる仕組みになっています。

https://www.rinkeby.io/#faucet

Mistで同様の手順でデプロイします。

その際ネットワークを切り替えるのを忘れないでください。

Etherscanでデプロイされたコントラクトを確認することができます。

rinkeby.etherscan.io: KuboCoin

まとめ

Ethereumを使えば簡単に独自トークンを作成することができます。

ただし、Ethereumを使ったトークンなので手数料としてetherを支払う必要があります。どういった使い方にすべきかは検討が必要です。

今回はテンプレートをそのまま使いましたが、実際にICOを実施する場合は購入のロジックなどが必要になってきます。

とはいえ、アイデア次第で色々面白いことが出来そうです!
技術としてまだまだこれからなのが面白いですね。2018年も追っていきたいと思います。

それでは!

スポンサーリンク

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。