TruffleとERC20を使ってトークンを発行

in #token7 years ago

はじめに

TruffleとOpenZepelinを用いたトークンの発行方法をご紹介します。

なお、本記事はMacで開発する場合の手続きとなります。


Truffleをインストール

ターミナルで

npm install -g truffle

Truffleをインポート

ターミナルで

mkdir ~/MakeToken
cd ~/MakeToken

以上を行うと新しくプロジェクトフォルダを作成して、そのフォルダにディレクトリを移動する。


ターミナルで

truffle init

以上を行うと作成したフォルダ内にTruffleをインポートできる。

ターミナル上に以下のように表示されます。

Downloading... 
Unpacking...
Setting up... 
Unbox successful. Sweet!
Commands:
 Compile: truffle compile  
 Migrate: truffle migrate  
 Test contracts: truffle test 

OpenZeppelinライブラリの導入

Truffleプロジェクトフォルダの中のターミナルで

npm init -f
npm install zeppelin-solidity --save


solidityコードの作成

以下のコードを作成し、contractsフォルダの中にMyToken.solで保存

pragma solidity ^0.4.18;  //コンパイル時に使用するsolidityのバージョンを指定
import "zeppelin-solidity/contracts/token/ERC20/StandardToken.sol";
  //zeppelinライブラリ内のStandardToken.solを呼び出し。
  //ただし、バージョンアップするごとにディレクトリが変わる可能性あり。
contract Token is StandardToken {    //TokenがStandardTokenを継承
 string public name = "Token";      //名前を指定
  string public symbol = "TK";       //シンボルを指定
  uint public decimals = 18;           //小数点の桁数を指定
  function Token(uint initialSupply) public {  
		//contract名と同じ名称のfunctionがコントラクタとなる
    totalSupply = initialSupply;        //トークンの総発行量
    balances[msg.sender] = initialSupply;  
		//発行したトークンをmsg.senderのアドレスに入れる
  }
}


Solidityコードのコンパイル

そのままターミナルで

truffle compile

ビルド結果がフォルダ内に作成され、build/contractsにJSON形式で保存される

マイグレーションファイルの作成

migrationフォルダの中に、

2_deploy_my_token.jsファイルを作成し、以下のコードを記述

const Token = artifacts.require('./Token.sol')
module.exports = (deployer) => {
  let initialSupply = 50000e18 //トークン発行量が50000TKになるように値を渡す
  deployer.deploy(Token, initialSupply)
}


コントラクトのデプロイ


ターミナルで

truffle develop


Ethereumブロックチェーンのエミュレータが起動し、

利用可能なEthereumのアドレスのリストが表示される


同時に、インタラクティブにやり取りできるコンソールも立ち上がる。

migrateとコマンドを打つと、作成したマイグレーションファイルにしたがってコントラクトのデプロイが実行される。


デプロイされたコントラクトの確認

エミュレータで

Token = Token.at(Token.address)

Tokenコントラクトオブジェクトが代入される


Token.name()  //名前を確認
Token.totalSupply()  //総発行量を確認
web3.eth.accounts   //トークンの口座残高を確認


トークンの移動

エミュレータで

Token.transfer(web3.eth.accounts[1], 1000e18)
		//1番目のアドレスに1000TKだけ移す



おわりに

試された方、同じようにできましたでしょうか。

とはいえ出力結果などを画像でご紹介した方がわかりやすいはずなんですが、

画像の添付方法がわからず…

また投稿技術も上げて臨みたいと思います。

では。

Sort:  

Congratulations @seijmura! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

Click here to view your Board

Do not miss the last post from @steemitboard:

Carnival Challenge - Collect badge and win 5 STEEM
Vote for @Steemitboard as a witness and get one more award and increased upvotes!

Congratulations @seijmura! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Coin Marketplace

STEEM 0.27
TRX 0.21
JST 0.038
BTC 96318.64
ETH 3643.35
SBD 3.80