LoginSignup
9
9

More than 5 years have passed since last update.

ropsten testnetにerc20 tokenをtruffleでdeployする

Last updated at Posted at 2018-10-05

概要

web上の情報をあちこち探すのがめんどくさいので(しかもバージョンの違いで若干仕様が異なったりするので)、自分用のメモがわりに、テストネット上でのERC20トークンの発行を簡潔にまとめておきます。

動作環境

MacOS High Sierra 10.13.6
Truffle v4.1.14
Python 2.7.9
node v9.3.0
solc Version: 0.4.24

事前に必要なもの

  • Infuraのアクセストークン取得
  • Metamaskのニーモニック取得
  • ropstenのETH

作業ディレクトリにパッケージの準備をする

$ mkdir mytoken
$ cd mytoken
$ truffle init

続いて、truffleの初期化が終わったら、OpenZeppelinの神パッケージをインストールします。

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

node_modulesフォルダにzeppelin-solidityのフォルダがあることが確認できるはずです。

contractの記述

ERC20トークンに必要な、name, symbol, decimalsを適当に決めます。decimalsは小数点以下何桁あるのかを表しています。

MyToken.sol
pragma solidity ^0.4.24;
import "zeppelin-solidity/contracts/token/ERC20/StandardToken.sol";

contract MyToken is StandardToken {
  string public name = "MyToken";
  string public symbol = "MYT";
  uint public decimals = 18;

   constructor(uint initialSupply) public {
    totalSupply_ = initialSupply;
    balances[msg.sender] = initialSupply;
  }
}

OpenZeppelinのパッケージを継承しているので楽チンですね。

※solidityのコンパイラのバージョンが、0.4.23以前は、contractの名前と同じ関数が、一番最初に実行されていましたが、0.4.23以降は、constructorがその役割を果たすようになりました。

コントラクトの名前と、ファイルの名前が一致するようにして、contractsフォルダ下に配置します。

migration fileの作成

migrationsフォルダ下に2_deploy_contracts.jsを設置します。migrationsフォルダ下にあるファイルは、1から順に読み込まれることになるので、2から始まるファイル名にします。

このファイルでは、deployするコントラクトとそのコントラクトのconstructorに渡す引数を指定します。この場合は、総発行量を引数にとりますので、任意の数字を設定します。

2_deploy_contracts.js
const MyToken = artifacts.require('./MyToken.sol')

module.exports = (deployer) => {
  const initialSupply = 100000e18
  deployer.deploy(MyToken, initialSupply)
}

truffle.jsの作成

ニーモニック(秘密鍵)は、12個の英単語で、そのニーモニックを元にして公開鍵が生成されているほか、トランザクションの署名にも使用されます。

インフラは、はEthereumのフルノードの代理で担ってくれるサービスで、指定されたエンドポイントに対してWeb3のJSON-RPCのリクエストを送信することでEtehreumネットワークに対するコール、トランザクションの処理を行うことが可能になります。非常に便利!

truffle.js
const HDWalletProvider = require("truffle-hdwallet-provider");
const mnemonic = "ニーモニックを入力";
const infura_url = "https://ropsten.infura.io/アクセストークンを入力";
module.exports = {
  networks: {
    ropsten: {
      provider: function () {
        return new HDWalletProvider(mnemonic, infura_url)
      },
    network_id: 3,
    gas: 4700000 //Gasは、Gas limit最大値の4700000に設定しておきましょう。
    }
  }
};

truffle-hdwallet-providerのインストール

$ npm install truffle-hdwallet-provider

Truffleでウォレットを扱うために必要なパッケージです(この場合、Metamask)。
インストールする際にエラーが発生した場合、こちらを参考にしてみてください。

truffle開発時に発生したエラー npm install truffle-hdwallet-provider

deploy

さて、整いました!
ropstenにdeployしましょう。

$ truffle migrate --network ropsten

deployできたら、ropstenのetherscanでコントラクトアドレスを確認して、自分のmetamaskにtokenをimportしましょう。

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9