MetaMaskとRemixで始めるお手軽トークン発行

Calendar Clock iconCalendar Clock icon

イーサリアム

# 目次

# この記事で得られるもの

  • MetaMaskの使い方
  • Remixの使い方
  • イーサリアム開発の入門
  • Solidityの基礎
  • スマートコントラクトの公開方法

# MetaMaskのセットアップ

# MetaMaskとは何か

https://metamask.io/

イーサリアムでイーサやトークンの送金などを行うためのウォレットです.

Ethereum上のアプリ(=Dapps)は通常Google Chromeなどのブラウザからアクセスします.

そのDappsではEthereumのアカウントと送金処理が必要になります.

それを裏で行ってくれるのがMetaMaskです.

RemixでもMetaMaskを使用します.

# MetaMaskのインストール方法

公式ページにアクセスして下さい.

https://metamask.io/

Chrome、FirefoxまたはOpera用があります.

ここではChromeを例に説明します.

「GET CHROME EXTENSION」をクリック.

Chrome用MetaMask拡張を入手

「ADD TO CHROME」をクリック.

MetaMaskをChromeに加える

「Add extension」をクリック.

MetaMask Add extension

Chromeの右上にキツネマークが追加されます.

キツネマークをクリック.

MetaMaskアイコンをクリック

MetaMaskがまだ開発途中のベータ版であることが表示されます.

「Accept」をクリック.

metamask accept beta

MetaMaskの利用規約が表示されます.

一番下までスクロールダウンして下さい.

「Accept」が有効になります.

metamask terms of use

「Accept」をクリック.

accept metamask terms of use

パスワードを2箇所に入力して「CREATE」をクリック.

metamask set password

12単語からなる英文が表示されます.

ニーモニックといい、ウォレットの鍵を開けるのに必要な大切なものです.

MetaMaskを再インストールする時にも入力するとウォレットを復元できます.

「SAVE SEED FILE AS FILE」をクリックしてダウンロード.

誰にも見せないように大切に保管して下さい.

誰かに知られることはEtherをあげてしまうことと同じです.

metamask save mnemonic

「I’VE COPIED IT SOMEWHERE ELSE」をクリック.

metamask close mnemonic

インストール作業は以上で完了です.

# ネットワークの切り替え

イーサリアムには通貨やトークンが売買されているMainnet以外にも多くのネットワークが存在します.

ここではRopstenという開発テスト用ネットワークに切り替えてみます.

現在のネットワーク名の右側にある「▼」をクリック.

metamask switch network

ネットワーク一覧が表示されます.

「Ropsten Test Network」をクリック.

metamask select network

これで切り替えは完了です.

# 開発用通貨の入手

MainnetのEtherは取引所などで本当のお金と引き換えに買う必要があります.

一方で開発テスト用Etherは無料で配られています.

ここではRopsten用のEtherをもらってみます.

「BUY」をクリック.

metamask buy ether

「ROPSTEN TEST FAUCET」をクリック.

FAUCETとは水道の蛇口のことですね.

metamask ropsten test faucet

「request 1 ether from faucet」をクリック.

metamask request ropsten ether

画面下にトランザクションが追加されたらOKです.

metamask faucet transaction

開発テスト用Etherの受取りはこれで以上です.

# アカウントをもう1つ作成

発行するトークンの送金テスト用にアカウントをもう1つ作成します.

MetaMaskのウォレット内に複数のアカウントを作成できます.

右上の人形マークをクリック.

metamask create account

アカウント一覧が表示されます.

既に存在するアカウントをクリックすると切り替わります.

新規アカウントを作成するには「Create Account」をクリック.

metamask select new account

アカウントの作成は以上です.

重要: Account 2の作成後、再びAccount 1に切り替えてください.

# Remixでトークンの実装と公開

# Remixとは

https://remix.ethereum.org/

Remixはブラウザ上で動作するSolidityの統合開発環境(IDE)です.

コーディング、コンパイル、デバッグ、デプロイのみならず、

<span class"u">デプロイ後の動作確認まで可能です.

# トークン用のスマートコントラクトを入力

まずはRemixを開いて下さい.

下のようなUIです.

remix look

開くとデフォルトのファイルが存在するので消してしまいましょう.

ファイルタブ右上の「✕」をクリック.

remix remove preinstalled file

新規ファイルを作成しましょう.

画面左上の「+」をクリック.

remix new file

発行したいトークン名をファイル名につけましょう.

末尾に.solを付けて下さい.

ここではShunCoin.solとします.

「OK」をクリック.

remix enter file name

トークンとなるソースコードを入力しましょう.

トークンを始めとするスマートコントラクトは、Solidity(ソリディティ)という言語で書かれます.

以下のソースコードをShunCoin.solにコピー&ペーストして下さい.

<span class"u">5行目と7行目のShunCoinはあなたのトークン名に変えてください.

<span class"u">8行目のSHNはあなたのトークンの単位を自由に考えて変更して下さい.

pragma solidity ^0.5.4;

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


contract ShunCoin is ERC20 {
    // トークン名
    string public name = "ShunCoin";

    // 通貨単位
    string public symbol = "SHN";

    // 小数点移動の数
    uint8 public decimals = 18;

    // 初期発行量
    uint256 public initialSupply = 10000 * (10 ** uint256(decimals));

    constructor() public {
        // 最初は発行者にすべてを振り込む
        _mint(msg.sender, initialSupply);
    }
}

重要: 入力が終わったら一度ページをリロードして下さい.

# コードをコンパイルし公開する

Solidityで書いたスマートコントラクトをコンパイルし公開していきます.

Remixでは、Runがスマートコントラクトの公開・呼び出しを意味しています.

Runタブに移動しましょう.

「Run」をクリック.

remix deploy smart contract

スマートコントラクトを公開します.

「Environment」は公開されるネットワークです.

MetaMaskで選択されているネットワークが自動で入力されます.

Ropstenとは、世界中の開発者が参加しているイーサリアム開発用ネットワークです.

ETHが売買されているメインネットと同じような条件でテストが出来ます.

(本物のETHを使わずに!)

重要: Ropsten以外(Mainなど)になっている場合はMetaMaskを開いてネットワークをRopstenに切り替えて下さい.

イーサリアムではスマートコントラクトの公開・呼び出し、送金などに都度手数料としてETHを支払います.

そのため残高が必要です.

ここでは6.157 ... etherとなっています.

重要: この残高がの場合はMetaMaskからアカウントに対して開発用ETHを補充して下さい.

remix ensure ropsten

以上が確認出来たら公開しましょう.

「Deploy」をクリック.

remix do deploy

MetaMaskが自動で開かれます.

公開するかキャンセルするかを選びます.

公開しましょう.

「SUBMIT」をクリック.

metamask confirm deploy transaction

# トランザクションの確認

ShunCoinを公開するトランザクションが発行されました.

これが世界中のマイナーによってマイニングされると公開が完了します.

トランザクション発行後はRemixの画面下のコンソールにURLが表示されます.

Etherscanというウェブサイトですべてのトランザクションの状態を見ることが出来ます.

発行したトランザクションを実際に見てみましょう.

URLをクリック.

remix see transaction status

TxReceipt Statusが完了しているかどうかです.

Pendingは未完了、Successは完了済みです.

他にもFromはトランザクション発行者のアドレス、Toが公開したスマートコントラクトのアドレスなど様々なパラメータが確認出来ます.

etherscan status success

完了するとコンソールに結果が表示されます.

(そのため普段はEtherscanへ見に行く必要はありません.)

remix transaction mined

# 発行したトークンを確認する

トークンが本当に発行されたのか確認しましょう.

MetaMaskではETHだけでなく、トークンも管理できます.

以下のページでMetaMaskへのトークンの追加方法を確認してください.

MetaMaskのインストールと基本操作

トークン追加にはトークン(スマートコントラクト)のアドレスが必要です.

Remix画面右にアドレスをクリップボードにコピーするためのボタンがあります.

それをクリック.

remix copy contract address

MetaMaskでトークンを追加しましょう.

MetaMaskを開いてトークンタブから「ADD TOKEN」をクリック.

「Token Contract Address」にアドレスを貼り付けて下さい.

「Add」をクリック.

metamask input contract address

確かにShunCoinが10000 SHN作られていることが確認できました.

metamask add token done

# トークンを送金してみる

トークンが正しく機能することを確認するために、トークンを送金してみましょう.

MetaMaskのAccount1には10000SHN残高があり、Account2は0SHNです.

Account1からAccount2へ1SHN送ってみましょう.

Account2のアドレスが必要になるのでコピーしましょう.

MetaMaskを開き、Account2に切り替えて「・・・」をクリック.

metamask open options

「Copy Address To Clipboard」をクリック.

metamask copy externally owned contract

送金してみましょう.

Remixに戻ります.

Remixでは公開後のスマートコントラクトの操作をすることもできます.

先ほど実行した「Deploy」の下に呼び出し可能なメソッドが一覧されます.

送金はtransferです.

transferの右側のボタンをクリック.

remix contract test transfer token

transferを呼び出すために必要なパラメータが表示されます.

  • _to: 送金先
  • _value: 送金額(単位に注意)

_toにコピーしたAccount2のアドレスを貼り付け.

_value1000000000000000000000を入力.

1000SHN送金しますが、小数点以下が18桁なので0が3+18で21個です.

(イーサリアムは小数を扱えません.整数で表現するのです。)

「transact」をクリック.

remix contract test input transfer arguments

MetaMaskが自動で開かれ、確認ダイアログが表示されます.

「SUBMIT」をクリック.

metamask confirm transfer transaction

デプロイ時と同様に画面下のコンソールにEtherscanへのURLが表示されます.

送金が完了すると追加のメッセージが表示されます.

MetaMaskでAccount2のSHN残高を確認しましょう.

1000SHN振り込まれていますね.

metamask transferred token

Account1を見てみると9000SHNに減少しているのが確認できます.

# トークンを本番に公開するには?

先ほどMetaMaskでRopstenネットワークに切り替えましたが、それをMainネットワークに切り替えて同じ手順(デプロイ)を実行するだけです.

MetaMaskのAccount0に残高が無い場合はBit FlyerZaifで購入してMetaMaskのアドレスに対して送金することで入手出来ます.


リモートフリーランス。ウェブサービス、スマホアプリエンジニア。
東アジアを拠点に世界を移動しながら活動してます!

お仕事のご依頼・お問い合わせはこちら

コメント