開発エディタは[vscode]()を使って開発してみます。
contracts内にKoyoteToken.solファイルを生成します。
開発するsolidityのコンパイルバージョンを定義します。
これはバージョン間の互換性が保証されない可能性があるためです。
今回ERC20トークン生成にOpenzepplinのライブラリを使うので、そこから以下の3つを継承して開発してみます。
openzeppelin-solidity/contracts//ERC20/ERC20.sol
openzeppelin-solidity/contracts//ERC20/ERC20Detailed.sol
openzeppelin-solidity/contracts//ERC20/IERC20.sol
pragma solidity ^0.5.0;
import “../node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol”;
contract KoyoteToken is ERC20Detailed
}
KoyoteTokenを生成するためにERC20Detailed.solをimportします。
contract KoyoteToken is ERC20Detailed(ERC20Detailedを継承)する
コントラクト開発が終わったらイーサリアムテストネット又はメインネットに該当するコントラクトをデプロイし、コントラクトを生成に必要なパラメータを宣言します。
constructor(string memory name, string memory symbol, uint8 decimals) ERC20Detailed(name, symbol, decimals)
コントラクト生成時、トークン生成のために必要な変数を宣言します。
継承したERC20Detailed.solの場合インターフェースのみ宣言されているため、具体的に完成するためにはもう一つのコントラクトを追加で継承します。
openzeppelin-solidity/contracts//ERC20フォルダにERC20.solがあるので中身を見るとインターフェースに関する具体的なコードが完成されていることがわかります。
ではKoyoteToken.solにERC20.solを継承するようにします。
pragma solidity ^0.5.0;
import “openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol”;
import “openzeppelin-solidity/contracts/token/ERC20/ERC20.sol”;
import “openzeppelin-solidity/contracts/ownership/Ownable.sol”;
contract KoyoteToken is ERC20Detailed, ERC20, Ownable
}
ERC20Detailed,ERC20を継承できたので基本機能を持ったトークンが完成しました。今後いくつかの機能追加を行いますが、まずは上記で開発したプログラムをテストしてデプロイするのを先に行います。
コンパイル
開発したプログラムをコンパイルします。
truffle compile
問題がなければ以下のような出力メッセージが確認できます。
出力メッセージからわかると思いますが、importされた全てのファイルを探しコンパイルを進行したことがわかります。そして正常にコンパイルできたらプロジェクトフォルダ配下にbuildという名前のフォルダが生成されその中にSolidityプログラムごとにjsonファイルが生成されていることが確認できる。
Migragetionファイル生成
migrationsフォルダに2_contract_migration.jsを生成します。
var KoyoteToken = artifacts.require(“./KoyoteToken.sol”);
const _name = “KoyoteToken”;
const _symbol = “KYT”;
const _decimals = 18;
const _total_supply = 1000;
module.exports = function(deployer) ;
デプロイ
truffle-config.jsファイルに設定を行います。
module.exports =
}
};
デプロイにはganacheをインストールと実行する必要があります。
npm install -g ganache-cli
ganache-cliを実行します。
マイグレーションを行います。
truffle migrate --reset --network development
まとめ
ローカル環境でのToken生成やコンパイル、デプロイまで紹介しました。
次回はpart 2として実際のテストケース作成とテストネット配布、truffle-flattenerを使ってeherscanに配布されたKoyoteTokenコントラクトのCodeタブ/Verify And Publishする方法などを共有します。
Published at Sat, 09 Mar 2019 06:55:11 +0000