LoginSignup
2
4

More than 5 years have passed since last update.

ゼロから始めるEthereum

Last updated at Posted at 2018-03-12

はじまりは・・・。

まず、はじめた経緯はお仕事。
おおよそ1ヶ月ほど四苦八苦して独自トークンをRopstenにデプロイするところまでは行けた。

でも、そこまで。
やはり少し困ったこともある。
基本的に今までやって来たwebアプリの概念が抜けないこと。
IDとかアカウントとかオーナーとか、そのへんどうなってんの?

トークンを作る

作ったトークンはこんな感じ
ICOやSolidityのことを書いてるブログをいくつも参考して書いてみた。

console.
$ npm install -g truffle
$ truffle init
$ npm install zeppelin-solidity --save
minaToken.sol
pragma solidity ^0.4.18;
import "zeppelin-solidity/contracts/token/ERC20/StandardToken.sol";

contract minaToken is StandardToken {
  string public name = "minaToken";
  string public symbol = "MNTK";
  uint public decimals = 3;
  uint public INITIAL_SUPPLY = 10000 * (10 ** decimals);
  address public owner;

  function minaToken() public {
    totalSupply_ = INITIAL_SUPPLY;
    balances[msg.sender] = INITIAL_SUPPLY;
    owner = msg.sender;
  }
}
2_deploy_contract.js
const minaToken = artifacts.require('./minaToken.sol')

module.exports = function(deployer) {
  deployer.deploy(minaToken)
}

基本的にこれくらいであとは、truffle.jsに、Ropstenの設定。
Privateは、別に入れてるGanache-cliだったりするけけど、その辺は割愛。
あとはRopstenにデプロイするのにINFURAに登録したのとMETAMASKを入れたことくらい。このあたりの解説は他でも沢山やってる。

truffle.js
var HDWalletProvider = require("truffle-hdwallet-provider");
var mnemonic = process.env.ROPSTEN_MNEMONIC;
var accessToken = process.env.INFURA_ACCESS_TOKEN;

module.exports = {
    // See <http://truffleframework.com/docs/advanced/configuration>
    // to customize your Truffle configuration!
  networks: {
    private: {
        host: "localhost",
        port: 7545,
        network_id: "*",
        gas: 4721975,
        gasPrice: 20000000000
    },
    ropsten: {
      provider: function() {
        return new HDWalletProvider(
          mnemonic,
          "https://ropsten.infura.io/" + accessToken
        );
      },
      network_id: 3,
      gas: 4721975,
      gasPrice: 20000000000
    }
  }
};

それでこれを・・・

console.
$ truffle compile
$ truffle migrate --network ropsten

して、Ropstenにデプロイする訳だけど、その前にprivateにデプロイして問題がないかは確認は行う。
ここまでは、良い。

ここから・・なのですよね。

前置き長くて何がしたいか?

基本的にここまではいろんなBlogや何かで書かれてること。
これを元に知りたいことがいくつか

「Tokenが足りないから、もう一度追加発行してみたい」

zeppelin-solidityのMintableが使えるかもと、試行錯誤。

minaMintable.sol
pragma solidity ^0.4.18;

import "zeppelin-solidity/contracts/token/ERC20/MintableToken.sol";
import "./minaToken.sol";

contract minaMintable is MintableToken, minaToken {
    address public owner;
    function minaMintable() public {

        owner = msg.sender;
    }
}
3_deploy_mintable.js
const Mintable = artifacts.require('./minaMintable.sol')

module.exports = function(deployer) {
    deployer.deploy(Mintable)
}

こういうのをやってみたけど、元のところでなくて新しいトークンが発行されてた。
Migrationのところが同じだから続いてるのじゃないか?という考えだったけど、別っぽい。
あとはTokenのコントラクトアドレスを、これのOwnerに指定してみたりとか・・・何だかうまく行かなかった。
考え方が違うのだろうな・・・。

「一度デプロイしたトークンを破棄してみたい」

これ以前に実験でデプロイしたminaTokenがあって、別のコントラクトアドレスで存在するのだけど、そこのトークンを操作しようとできないから、いっそ無駄だし破棄しちゃいたい。
・・・でも、コントラクトアドレスが分かるだけで破棄もできない。

「ハードフォークとかソフトフォークとかってことよね」

実際、元のスマートコントラクト相手にちょっと追加したいとか、取り消ししたいとか、できるはずなんだけど・・・やり方がいまいち不明。

そんな感じにちょっと困ってる。
調べてみようかと、でも、分かってることをとりあえず残すこととしたのが、これ、きっかけ。

2
4
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
2
4