This post is from a low-reputation account and contains an unverified outbound link. Be cautious before clicking external links.

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

seijmura(25)
Published in
#token
Words
405
Reading
2 min
Listen
Play
9y


はじめに

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だけ移す

おわりに

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

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

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

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

では。

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