LoginSignup
4
0

More than 3 years have passed since last update.

Ethereum入門 〜Etherscanにコードを登録する方法〜

Last updated at Posted at 2019-07-24

はじめに

Etherscanにスマートコントラクトのコードを登録する方法です。Testnetも登録対応しているのでデプロイした際はコード登録を習慣付けて置くと、後から見返した時にどのコントラクトが何の内容か把握しやすいのでオススメです。

Etherscanにコードを登録する

truffle-flattenerのインストール

OpenZepplinなどライブラリを使用している場合、使用しているimportを全て1つのファイルに記述しないといけません。
そのため、1つのファイルに生成してくれる便利なツールがあります。

solidity(solc)をインストール

$ brew update
$ brew upgrade
$ brew tap ethereum/ethereum
$ brew install solidity

truffle-flattenerをインストール

$ npm install truffle-flattener -g

例えばこのようなコントラクトがあるとして、

MyToken.sol
pragma solidity ^0.5.0;

import "../node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol";
import "../node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol";

contract MyToken is ERC20, ERC20Detailed {

string public _name = "KTcoin";
string public _symbol = "KTC";
uint8 public _decimals = 18;

address account = msg.sender;
uint initialSupply = 100*(10**18);

constructor() ERC20Detailed( _name, _symbol, _decimals) public {
    _mint(account, initialSupply);
    }
}

このように使用します。

$ truffle-flattener contracts/MyToken.sol > contracts/Output.sol

このように出力されます。

Output.sol
pragma solidity ^0.5.0;

// File: /Users/code/erc20_sample/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
interface IERC20 {
    function transfer(address to, uint256 value) external returns (bool);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function totalSupply() external view returns (uint256);

    function balanceOf(address who) external view returns (uint256);

    function allowance(address owner, address spender) external view returns (uint256);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

...省略

// File: contracts/MyToken.sol

contract MyToken is ERC20, ERC20Detailed {

string public _name = "KTcoin";
string public _symbol = "KTC";
uint8 public _decimals = 18;

address account = msg.sender;
uint initialSupply = 100*(10**18);

constructor() ERC20Detailed( _name, _symbol, _decimals) public {
    _mint(account, initialSupply);
    }
}

Ethescanに登録

デプロイしたコントラクトのコードから Verify and Publishをクリックします。

Rinkeby Accounts, Addresses and Contracts 2019-05-04 20-19-31.png

コンパイラタイプ、コンパイラバージョン、ライセンスをデプロイした時のものに選択します。

Screen Shot 2019-07-24 at 12.02.56.png

Enter the Solidity Contract Code below にデプロイしたコードを入力します。

Screen Shot 2019-07-24 at 12.12.20.png

デプロイ時、コンストラクターに引数を入れている場合は、ABIエンコードした引数をConstructor Arguments ABI-encoded欄に入力します。

ABI-encodedはこちらで変換可能です。
https://abi.hashex.org/

Publishを押し、コードが一致すれば登録が完了します。

Screen Shot 2019-05-04 at 20.27.20.png

参考にさせて頂きました

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