ゼロから始めるスマートコントラクト(その9)

OpenZeppelinを用いたERC20トークンの作成

Solidityを使ってスマートコントラクトを開発していましたが、この章では、Solidityを使わずにトークンを作成していきます。そのためにOpenZeppelinをインストールしていきます。ちなみに私はOpenZeppelin信者です。Ethereum開発で多くの壁にぶち当たり心がバッキバキに折れていた時、OpenZeppelinと出会い、私に希望を与えてくれました。

特に、何時間もかけてエラー出しまくっていたとある開発が、OpenZeppelinテンプレートを使ったら一瞬ですっきり出来てしまったという事があり、「なんてこと、なんでもっと早く教えてくれなかったのだ!」と絶望を感じました。ひどいです。噓です。大好きです。

それではインストール!

$ npm install --save-dev @openzeppelin/contracts

ここではライブラリを用いてERC20トークンをさくっと作っていきましょう。奈良県出身の筆者は、通貨単位が「NARA」の「せんとーくん」を作ります。

$ mkdir SenToken
$ cd SenToken 
$ npm init -y 

準備できたらTruffleを初期化!すうぃーと!

$ npx truffle init
 
Starting init...
================
 
> Copying project files to C:\Users\xxx\xxxx\SenToken
 
Init successful, sweet! 

  OpenZeppelinのプリセットコントラクトを利用します。もうコンパイル済みなのでコピーするだけでOKです。

$ mkdir -p build/contracts/
$ cp ../node_modules/@openzeppelin/contracts/build/contracts/* build/contracts 

  Ganacheとつなげておきましょう。ローカルホストと7545ポートを下記のように追加してください。

// truffle-config.js
module.exports = {
...
  networks: {
...
    development: {
     host: "127.0.0.1",     // Localhost (default: none)
     port: 7545,            // Standard Ethereum port (default: none)
     network_id: "*",       // Any network (default: none)
    },
    ... 

 Ganacheを立ち上げておきましょう(4.2 Ganacheのインストール参照)。準備できたらTruffleコンソールを開きます。

 $ npx truffle console --network development 

 今回はトークン名「せんとーくん(SenToken)」で単位は「NARA」なので下記の通り。お好きな名前をどうぞ。

truffle(development)> token = await ERC20PresetMinterPauser.new("SenToken", "NARA")

 確認していきましょう。

truffle(development)> await token.name()
'SenToken'
truffle(development)> await token.symbol()
'NARA'
truffle(development)> (await token.decimals()).toString()
'18'

はい、出来上がり。簡単だったと思います。mintやburnも可能です。

フォローお願い致します!