Ethereum入門　〜独自トークンをスマホウォレットに送金〜

#はじめに
browser-solidity＋MetaMaskで独自トークンを発行後、MyEtherWalletを使ってスマホウォレット(Tachyon)に送金してみます。

###MetaMaskとは
<img width="608" alt="スクリーンショット 2018-02-01 12.26.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/58f141bc-5b42-8abb-98bc-7bbdfa99664d.png">

Chromeブラウザの拡張機能アプリで手軽にEtherの送金等行うことが出来ます。
EthereumのWeb3 APIを提供しブロックチェーンのデータをブラウザから読むことができるようにしてます。
[MetaMask](https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=ja)

テストネットのみの接続であればパスワードは適当で良いですが、
メインネットと接続する場合は必ずパスワードを強力なものにして、復元パスワードを控えてください。
設定はこちらを参照してください。
[イーサリアムの便利ウォレットMetamask（メタマスク）の使い方について](https://www.bitcoin-trade.info/entry/metamask)


###MyEtherWalletとは
<img width="253" alt="スクリーンショット 2018-02-01 12.29.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/69509289-091f-3ce5-2daf-c7a3ccc7379a.png">

webブラウザ上で動作するイーサリアムに対応したウォレットでMistやMetaMask、Trezerなどに対応してます。
https://www.myetherwallet.com/

###Tachyonとは

イーサリアムに対応したスマホ用ウォレットです。
テストネット上の独自トークンも管理することが出来ます。
メインネットのETHやトークンを管理する場合は、パスワード　、復元パスワードの管理をしっかり行ってください。
[Tachyon Wallet](https://itunes.apple.com/us/app/tachyon-wallet/id1321218464?mt=8&ign-mpt=uo%3D4)

<img width="1031" alt="スクリーンショット 2018-02-01 12.23.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/5e4aa1dd-3ed5-dc43-d864-9c3905cbd354.png">

#MetaMaskの起動
Metamaskを起動しRopｓtenネットワークに接続します。
<img width="355" alt="スクリーンショット 2018-02-01 12.35.03.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/7ee177ed-c973-0025-ef02-a58504fddd85.png">

アカウントのbuyからROPSTEN TEST FAUCETをクリックします。

<img width="348" alt="スクリーンショット 2018-02-01 12.35.16.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/86ca0c4c-3ded-04cc-2976-b8d7f84510c1.png">

request 1 ether from FaucetをクリックしEtherをもらいます。

<img width="1085" alt="スクリーンショット 2018-02-01 12.34.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/da3e96d2-bddc-2a38-0e7f-d8b3da08a0bc.png">


#browser-solidity＋MataMaskで独自トークン発行
browser-solidityを立ち上げ、[サンプルソースコード](https://www.ethereum.org/token)を貼り付けます。
https://remix.ethereum.org/#optimize=false&version=soljson-v0.4.19+commit.c4cbbb05.js

EnvironmentをInjected web3に切り替え、アカウントと数量がMetaMaskと同一になっていることを確認します。

<img width="379" alt="スクリーンショット 2018-02-01 12.37.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/67fbc123-2e45-385a-f2c3-c88aade501be.png">


イニシャル量、名前、シンボルを入力しコントラクトを作成します。
今回はOreOreCoin2 を10000発行します。(OC2)

<img width="964" alt="スクリーンショット 2018-02-01 12.38.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/1e9f29f6-f288-e925-7c18-0815ab5e1bcc.png">


コントラクトの状態はこちらで確認

<img width="1008" alt="スクリーンショット 2018-02-01 12.39.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/29b8f10e-ec82-3f39-5606-018768550e57.png">

Successと表示されるとbrowser-solidity上でもコントラクト作成出来たことが確認出来ます。

<img width="379" alt="スクリーンショット 2018-02-01 12.40.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/c113d82d-ae4a-b16f-ae4e-ccacc0ec3e8a.png">

###MetaMaskにトークン追加
MetaMask上でトークンaddを選択し、先ほどのコントラクトアドレスを記入しAddします。

<img width="345" alt="スクリーンショット 2018-02-01 12.41.33.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/f29dc6b9-c3c5-3ae7-689b-cc112d20ae3b.png">

するとトークン残高に10000　OC2が表示されました。

<img width="353" alt="スクリーンショット 2018-02-01 12.42.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/43685a21-0f5c-c73c-1cf7-aaf520aee1bc.png">

#MyEtherWalletでトークン送金
MetaMaskではトークンの送金が出来ないため、MyEtherWalletを使って送金します。
MyEtherWalletを開き、MetaMaskと連携させます。

https://www.myetherwallet.com/
<img width="1141" alt="スクリーンショット 2018-02-01 14.49.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/e725f1c7-5825-d6ab-51b0-287427ca9bb9.png">

こちらも同様にトークンをaddします。

<img width="336" alt="スクリーンショット 2018-02-01 12.44.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/43adf5b5-f19b-2952-da87-91c42cce0b79.png">

<img width="294" alt="スクリーンショット 2018-02-01 12.44.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/ed1433a5-70be-1fca-9408-011a6d9f2489.png">

#トークン送金
アカウント1からアカウント2へ送金

<img width="768" alt="スクリーンショット 2018-02-01 12.45.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/62dab9be-4391-7aff-3692-12be699207f5.png">

確認画面
<img width="705" alt="スクリーンショット 2018-02-01 12.45.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/26e7c70f-de8c-aba4-b33a-19b5ab600b35.png">

問題なければMetaMask上でSUBMITを押します。

<img width="339" alt="スクリーンショット 2018-02-01 12.45.33.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/4ecc6fc4-fe44-3a74-c135-f6f0517d8201.png">



#スマホウォレットにトークン送金
###トークンADD
Tachyonを開き、　ManegeTokensからトークンを追加します。
{ERC20:"コントラクトアドレス"}　を適当なサイトでQRコード化して読み取ります。

ex：{ERC20:0x65166de5ea9ffed5908b05eacef5f0e7688c14d0}

https://www.cman.jp/QRcode/

Nmae、Symbol、Decimalsが合っていることを確認してAdd　Tokenボタンを押します。

<img width="375" alt="IMG_8613.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/200669/b6d1092d-14a1-8fce-593f-5b02ba57c532.jpeg">


<img width="375" alt="IMG_8614.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/200669/f7ed97f8-ae8a-5f1b-1fa0-b38190d78c0b.jpeg">


そしてMyEtherWalletからTachyonのアドレスへトークンを送金します。
今回は500　OC2送金します。トークンの送金時はGasが少し高い。

<img width="742" alt="スクリーンショット 2018-02-01 12.50.03.png" src="https://qiita-image-store.s3.amazonaws.com/0/200669/5d35bd0f-9375-af27-7627-13c90c9b5f64.png">


トランザクションが成功したら、スマホウォレットで確認することが出来ます。


<img width="375" alt="IMG_8615.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/200669/3165eee6-9449-8b03-19c7-05b03ea80fb9.jpeg">

無事500　OC2　GET出来てます。

#おわりに
コードをほとんど書かずにトークンの発行、送金、スマホウォレットへの送金まですることが出来ました。トークン発行は簡単に出来るので、トークンにどう価値を乗せるかが大切ですね。

#参考にさせて頂きました。
[Ethereumプラットフォームでの独自トークンの実装からデプロイまで](https://www.slideshare.net/blockchainexe/exe-code-1ethereum)