Ethereumで独自のトークンを発行する[Solidity][プライベートネット]

2018年1月21日

イーサリアムのプライベートネット上で独自のトークンを発行してみます。

 

開発環境
macOS High Sierra バージョン10.13.2
Geth 1.7.3-stable

 

Solidityを利用してトークンを発行するためのコントラクトを作成し、Remix (Browser-Solidity)でイーサリアムのプライベートネットと接続します。環境構築等については以下の関連ページをご参照下さい。

 

関連ページ

Ethereumプライベートネット(Geth)とRemix (Browser-Solidity)をつなぐ

 

 

前提条件として、Gethを起動した際のアカウント(アドレス)にEtherが保有されていることを確認して下さい。コントラクトの生成やその実行の際にGas(トランザクション実行で必要となる燃料/手数料)が必要となるからです。

 

下記のGeth起動コマンドでは、eth.accounts[0]のアカウントをアンロック(–unlock)しています。今回はこのアカウントでコントラクトを生成します。

 

Etherが保有されているか確認

 

 

これから作成するコントラクトとその実行内容の概略は、下記のイラストで説明しています。

 

 

各アカウントのアドレスは下記のようになっています。ご自身の環境状況に合わせてご覧下さい。

 

 

Solidityでコントラクトを記述します。

6行目

マッピング型(いわゆる連想配列)で、アドレスとそのアドレスが保有するトークンを管理します。

 

9〜11行目

コントラクトがデプロイされる際に呼ばれるコンストラクタです。トークンの総発行量を決定します。今回は引数にトークンの量である1000を入力してデプロイします(入力自体はRemix画面で行います)。

 

14〜19行目

トークンを送る関数です。引数に送り先のアカウントのアドレスと、トークンの量を指定します。msg.senderにはこの関数(sendCoin)を呼び出したアドレスが設定されます(本記事の説明ではeth.accounts[0]のアドレス)。

 

 

Remixの画面の様子

 

 

「Account」項目がGeth起動時のコマンドでアンロック(–unlock)したアドレス(本記事の環境ではeth.accounts[0]のアドレス)であることを確認し、「Create」に1000を入力してボタンをクリックします。

 

プライベートネットにコントラクトのデプロイが成功すれば、上記のような画面になります。eth.accounts[0]のアカウントに1000のトークンを設定したコントラクトが生成された状態(プライベートネットにコントラクトがデプロイされた状態)です。

 

実際にeth.accounts[0]アカウントに1000のトークンが保有されているかを確認します。「balanceOf」のフォームにeth.accounts[0]のアドレスを入力し、ボタンをクリックします。フォームの横に0:uint256; 1000のように表示されるはずです。

 

 

 

次に1000のトークンを保有しているeth.accounts[0]から、eth.accounts[1]へ200のトークンを送ります。

 

「sendCoin」のフォームに下記のように、eth.accounts[1]のアドレスとトークン量である200を入力してボタンをクリックします。

 

 

 

もう一度「balanceOf」をクリックして下さい(eth.accounts[0]のアドレスが入力された状態で)。トークンが800に変わっています。

 

 

 

また「balanceOf」にeth.accounts[1]のアドレスを入力すると、受け取った200のトークンを確認することができます。

 

 

 

 

参照ページ・書籍


 

Create your own CRYPTO-CURRENCY with Ethereum

 

block-chain.jp

Ethereum Solidity で 初めてのDappを作る

 

Zenport Tech Club

Solidityによるコントラクトの作成(1) – 基礎

 

 

 

 

LINEで送る
Pocket

Copyright © 2018 ウェブの葉 All Rights Reserved.  プライバシーポリシー