【2019年4月版】イーサリアムのテストネットで初めてのオリジナルトークンを公開してみる

# 内容
イーサリアムのテストネット Rinkeby 上でスマートコントラクトをデプロイし、独自のERC20トークンを公開してみる手順をご紹介します。

# 事前準備
必要なものは以下です。

- PC
- Google Chrome ブラウザ
- 適当なTwitterアカウント

今回はウォレットにMetamaskとスマートコントラクトの開発環境にRemixを使用します。
そのため、PCとPC版Chromeブラウザが必要です。インストールをお願い致します。

Rinkebyでテスト用のイーサリアムを受け取るためにTwittter、Facebook、Google+などのSNSアカウントが必要です。ここでは twitterを使用した手順をご紹介します。

# さっそく開始

## Metamaskのインストール

以下の Chrome プライグインサイトから metamaskをインストールします。

- https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=ja

初回のパスワード設定、シークレットフレーズは忘れずにコピペしておきましょう！

## Remix を開く

Ethereumのオンライン開発環境、Remixサイトを開きます。

- https://remix.ethereum.org/

サンプルのスマートコントラクトが表示されているのですべて削除して以下のコードを貼り付けてください。

```solidity
pragma solidity ^0.5.7;

import "https://github.com/OpenZeppelin/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol";
import "https://github.com/OpenZeppelin/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol";

contract MyFirstToken is ERC20, ERC20Detailed {

    string private _name = "MY HTPER TOKEN";
    string private _symbol = "HYP";
    uint8 private _decimals = 2;

    constructor() ERC20Detailed( _name, _symbol, _decimals) public {
        _mint(msg.sender, 10000000000);
    }
}
```

プログラム内の"_name"の中身は適当でOKです。また"_symbol"が独自トークンの単位となります。好きな単位に変更してください。
"_decimals"が小数点桁数で、"10000000000"が発行量です。今回の場合は小数点２桁なので、実際の発行される量は"100,000,000.00"=1億トークンとなります。~~わーい！~~

画面右側の"Select new compiler version"では"0.5.7"を選択してください。

`Ctrl+S`もしくは"Start to Compile"をクリックしてプログラムのコンパイルを開始します。コンパイルには若干の時間がかかりますのでMetamaskとRemixの関連付けを行います。

## RemixからMetamaskへアカウントの関連付け。

RemixはEthereumのテストネットワーク"Rinkeby"に対して自動的にアカウントを作成してくれています。画面右上の[Run]タブをクリックし、Account欄の右端のボタンをクリックして"署名"を行ってください。


表示されたダイアログにMetamaskで指定したパスワードを入力してOKをクリックする。

Metamaskのダイアログがで表示され警告のメッセージが出たらOKをクリックします。
これでRemixが自動で取得したRinkebyアカウントに関連付けが完了しました。

MetamaskでRinkebyのアカウントが追加されているのを確認したらアカウント名をクリックしてアドレスをコピーしておきます。

## テスト用イーサの取得

以下のページからテスト用に支払うイーサリアムを受け取ることができます。

- https://faucet.rinkeby.io/

スパム防止のために、ここでアドレスを直接貼り付けるのではなく、SNSにアドレスを投稿し、そのURLを貼り付ける必要があります。

ツイッターで上記のMetamaskからコピーしたアカウントのアドレスを貼り付けてツイートします。

以下のような感じでOKです。

https://twitter.com/EthWizarth/status/1112937382209155072

<blockquote class="twitter-tweet" data-lang="en"><p lang="tl" dir="ltr"><a href="https://twitter.com/hashtag/rinkeby?src=hash&amp;ref_src=twsrc%5Etfw">#rinkeby</a> 0x96e3ee5379cb7c693b2551c83b039e71c415be9d</p>&mdash; wizarth_eth (@EthWizarth) <a href="https://twitter.com/EthWizarth/status/1112937382209155072?ref_src=twsrc%5Etfw">April 2, 2019</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

ツイートの共有メニューから"リンクURL"を取得し、https://faucet.rinkeby.io/ サイトに貼り付けます。

"3ETH"か"8ETH"を選択し、しばらくするとMetamaskに入金されます。

イーサを受け取ったら間もなく完了です！

## プログラムのデプロイ

すでにプログラムのコンパイルは終わっているでしょうか？Remixの画面に戻りましょう。

[Run]タブから`MyFirstToken`の`Deploy`ボタンをクリックしましょう。Metamaskの確認画面が開くはずです。

ガス代が足りていれば"確認"をクリックし、トランザクションにガス代をつけて送信します。
ネットワーク上でトランザクションがコミットされるとRemixの"Deployed Contracts"にデプロイした"MyFirstContract"が表示されているはずです。

## Metamaskでトークンの追加

`MyFirstContract`の右側に表示されている"コピー"ボタンをクリックしてトランザクションのアドレスをコピーします。

Metamaskの左側バーガーメニューから"トークンの追加"をクリックします。

"カスタムトークン"のタブをクリックし、"Token Contract Address"欄に先ほどのアドレスを貼り付けます。

問題なければトークンのシンボルと小数点桁数が表示されるので、"OK"をクリックします。

シンボルと残高などが表示されるので"トークンを追加"をクリックします。

おめでとうございました＆お疲れ様でした！
これであなた独自のトークンはMetamaskからRinkeByネットワーク上で自由に送信することができるようになっています！

## まとめ

駆け足でしたがオリジナルのトークンを発行する手順を紹介いたしました。
今回は一からのインストールでしたが、すでにMetamaskでRinkeby上にアカウントとETHを持っているなら、

1. Remixでデプロイ
2. トランザクションのアドレスをMetamaskに追加

の手順だけで独自トークンはバンバン作れます。
実際のトークンを友人などとやり取りしながら、仮想通貨やトークンを使った経済圏の構築＝トークンエコノミーで何ができるか、何をするか、動かしながらブレスとする、というのもいいと思います。

# 次のステップ

ここでは簡単にオリジナルトークンを発行する手順をご紹介いたしました。
引き続き、以下のサイトでイーサリアムのアプリケーション開発などについて調べてみましょう。

- Ethereum: https://www.ethereum.org/
- Solidity: https://solidity.readthedocs.io/en/latest/
- cryptozombies: https://cryptozombies.io/jp/
- OpenZeppelin: https://github.com/OpenZeppelin/openzeppelin-solidity/