逆引きイーサリアム ethereum

【逆引き】Remixで簡単に公開済みコントラクトを呼び出す方法

自分 or 他人が既に公開したコントラクトを、実はRemix上から簡単に呼び出すことが出来ます.ここでは自分がTruffleで発行したトークンコントラクトをRemixを使って送金する方法を紹介します。
Feb. 2, 2020, 1:51 p.m.

目次

本来ならばgethコンソールやブラウザでJavascriptを書いて実行するのが楽ですが、Remixではその必要すらありません.

以下の記事で発行したERC20トークンを送金してみます.

実用開発環境で作るイーサリアムトークン発行

コントラクトに必要な情報

イーサリアムでコントラクトを呼び出すには2つの情報が必要です.

  1. コントラクトアドレス
  2. ABI(Application Binary Interface)

の2つです.これらをRemixに入力することで呼び出すことができます。

コントラクトアドレスはコントラクトを公開する時に発行されるアドレスです.コントラクトのインスタンスを一意に特定する事ができます。コントラクトのインスタンス1つ1つにユニークなアドレスが割り当てられています。

ABIはそのコントラクトがどんな関数や状態変数をもっているかなどの情報です.

コントラクトアドレスの取得

コントラクトアドレスはコントラクトをデプロイする際にメモをとっておくと良いでしょう.

失ってしまった場合はEtherscanで検索することが出来ます.

検索ボックスにコントラクト名を入力し、「GO」をクリック.

「ERC20 Contract」「Contract Address」などと表示されているところがコントラクトアドレスです.

ABIの取得

ABIはSolidityソースコードのコンパイルにより生成されます.

ここではTruffleでコンパイルされた場合を説明します.

Truffleのcompileまたはmigrateでコンパイルした場合、Truffle作業ディレクトリのbuild/contracts以下にJSONファイルとして書き出されます.

ファイル名はコントラクト名です.今回のケースではShunCoin.jsonです。

お好きなエディタでJSONファイルを開いて下さい.以下のような内容になっているはずです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
{
  "contractName": "ShunCoin",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
        ...中略...
    ],
    "bytecode": [...中略...]
}

そのうち、"abi"から"bytecode"の直前の行までをコピーして下さい.

これがABIです.

  "abi": [ <---------- ここから
    {
      "constant": true,
      "inputs": [],
            ...中略...
    },
        ...中略...
    ], <--------- ここまで
    "bytecode": [...中略...]
}

Remixでコントラクトを呼び出す

Remixを開いて下さい.

Remix

デフォルトで表示されるファイルを削除しましょう.

ファイル名右の「x」をクリック.

新規ファイルを作成します.

画面左上の「+」をクリック.

ファイル名を入力.

ファイル名は.abiという拡張子を付けて下さい.

「OK」をクリック.

ファイルの内容に、先ほどコピーしておいてABIを貼り付けて下さい.

ファイル先頭の"abi":は削除して下さい.

ファイル末尾の,も削除して下さい.

[で始まり]で終わるのが正しいです.

以下のようになります(長いので先頭のみ表示).

Runタブに切り替えます.

「Run」をクリック.

「At Address」の左側にコントラクトアドレスを入力.

「At Address」をクリック.

確認ダイアログが出るので「OK」をクリック.

成功すると呼び出せるメソッド一覧が表示されます.

今回はトークンの送金なのでtransferメソッド右の下矢印をクリック.

_toに送金相手と_valueに送金額を入力.

送金額は、ここでは1000SHN送ることにしますので、1000に0を18個付けて1000000000000000000000を入力.

「transact」をクリック.

MetaMaskの確認ダイアログが表示されるので「SUBMIT」をクリック.

マイニングが完了するとRemixコンソール上に以下の表示が出て完了です.

MetaMaskでトークンを確認し、1000SHN増えていたら成功です.

Remixでの簡単コントラクト呼び出しは以上です.