【逆引き】Remixで簡単に公開済みコントラクトを呼び出す方法
# 目次
本来ならばgethコンソールやブラウザでJavascriptを書いて実行するのが楽ですが、Remixではその必要すらありません.
以下の記事で発行したERC20トークンを送金してみます.
# コントラクトに必要な情報
イーサリアムでコントラクトを呼び出すには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ファイルを開いて下さい.以下のような内容になっているはずです。
{
"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を開いて下さい.
デフォルトで表示されるファイルを削除しましょう.
ファイル名右の「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での簡単コントラクト呼び出しは以上です.