[blockchain.nagoya] 7/12 ERC20トークン ハンズオン


概要

7/12(金)に行われるblockchain.nagoyaのイベント「ERC20トークン ハンズオン」の資料です。
Rinkbyネットワークへのスマートコントラクトのデプロイ, ERC20トークンの送金を行います。

開発環境

  • Google Chromeのみ

セットアップ

TwitterでETHアドレスをそのままコピペしてツイート

そのツイートのURLをコピー

URLをfaucetのページに貼り付けてGive me Etherします

スマートコントラクトの作成

openzeppelin-solidityというライブラリがERC20トークンのスマートコントラクトを書いてくれているので, それらを継承する形で使います

こちらが今回使用するSampleTokenコントラクトになります
(ハンズオンで解説します!)

SampleToken.sol
pragma solidity ^0.5.0;

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

contract SampleToken is ERC20, ERC20Detailed {
    constructor(
        string memory name,
        string memory symbol,
        uint8 decimals,
        uint256 initSupply
    ) ERC20Detailed(name, symbol, decimals)
      public 
    {
        _mint(msg.sender, initSupply);
    }
}

Remixを開いてファイルを作成します

+ボタンを押して、

SampleToken.solという名前でファイルを作成します

上のコントラクトコードをそのままのファイルに貼り付けます

スマートコントラクトのコンパイル

まずコントラクトをコンパイルする機能とデプロイする機能を使用可能にします。
左端のバーにあるプラグのマークをクリックします。

Deploy & Run TransactionsSolidity CompilerをActivateしましょう

左のバーでSolidity Compilerを選択して、Compile SimpleToken.solのボタンをクリックします。

スマートコントラクトのデプロイ

次にスマートコントラクトをデプロイします。
EnvironmentInjected Web3に設定します。
Deployのところにconstructerの引数を入力します。

"NagoyaCoin", "NC", 18, 10000000000

そしてDeployをクリックします。

すると、メタマスクが起動するので確認を押しましょう。

ERC20トークンを送金する

現在、発行されたトークンはスマートコントラクトをデプロイしたアカウントが全て持っています。
そのアカウントから別のアカウントにトークンを送金してみましょう。

メタマスクで2つめのアカウントを選択します

アドレスをコピーして、再び1つめのアカウントに戻します。

では送金しましょう。
Deployed Contractsにあるタブを開くと関数が実行できます。

transfer の横に先ほどコピーした2つめのアカウントのアドレスと、送る量を入力します

"2つめのアカウントのアドレス", 1000

そしてtransferをクリックします。

メタマスクが開くので確認を押しましょう。
うまくいくと下のように表示されます。

2つめのアカウントのアドレスを入力してbalanceOf関数を実行すると、
1000トークンが送られていることが確認できます。

終わりに

お疲れ様です!
Rinkebyネットワークへのスマートコントラクトのデプロイ、トークンの送金ができました!

時間があれば、他の人にETHアドレスを教えてもらって送金するなどしてみてください!