6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【初心者向け】web3.jsで展開済のコントラクトを呼び出す時にハマったこと

Posted at

初投稿です。よろしくお願い致します。こちらの記事を参考にweb3.jsを使って展開済のコントラクトを呼び出そうとしたのですが、えらいハマってしまい大変な思いをしたので、どんな点でハマってしまったのかを書いていきたいと思います。

前提条件

  • gethが正常に動作している(gethのバージョンは1.8.8)。
  • Remixが正常に動作している(Remixのバージョンは0.6.3)。
  • gethとRemixの連携ができており、コントラクトのデプロイまでできている。
  • web3.jsがインストールされている(web3.jsのバージョンは0.20.0)。
  • なお、こちらはgethとRemixをレンタルサーバー(VPS)上で動かしています。OSはUbuntu16.04です。

なお、前提条件ができていない場合は、一番下の参考記事を参考にしてみて下さい。

展開済のコントラクトを呼び出してみる

test.js
var Web3 = require('web3');
var web3 = new Web3();
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));

//abi情報
var abi = [{"constant": true,"inputs": [],"name": "HelloEther","outputs": [{"name": "","type": "string"}],"payable": false,"stateMutability": "pure","type": "function"}];

//コントラクトのアドレス
var address = "0xb37ea71ecdcb442c3a5c9ce3ce63fdaaa6976da5";

//コントラクトの取得
var contract = web3.eth.contract(abi).at(address);

//実行
var response = contract.HelloEther.call();

console.log(response);

web3.jsをインストールしたフォルダに、上記のjsファイルを置いて、実行します。なお、IPアドレスと、abi情報、コントラクトのアドレスはご自身の環境のものを記して下さい。

コントラクトは、以下のファイルになります。

HelloWorld.sol
pragma solidity ^0.4.22;
contract helloWorld {
 function HelloEther () public pure returns (string) {
   return 'Hi Ether';
 }
}

上記のコントラクトをデプロイまでしてあげてから、上のjsファイルを実行して下さい。

自分がハマったポイント

では、自分がハマってしまったポイントをご紹介しようと思います。以下の3つになります。

コントラクトのアドレス

まずは、test.jsの中にある、コントラクトのアドレスですね。これを自分はてっきり図の①のアドレスだと思っていましたが、そうではなく②のアドレスなのですね。

20180703-01.png

abiはコピペしないとダメ

abi情報は目で見れるものを打ち込むのではなく、クリップボード機能を使ってコピペしたものを書いてあげないとダメです。

20180703-02.png

20180703-03.png

contractの次は関数名

こんなの間違えるのは自分だけかもしれませんが、var response = contract.HelloEther.call();のcontractの次はコントラクト名ではなく、その中の関数名を書いてあげないとダメです(この場合、HelloEther)。自分はここをhelloWorldって書いてました。

まとめ

以上駆け足で、ハマったポイントをご紹介してきました。いかがでしたでしょうか。こんなの当たり前じゃんと思われる方が大半かもしれませんが、自分のような初心者はハマっちゃうんじゃないかなと思い、書いてみました。この記事が誰かのお役に立てれば幸いです。

参考記事

6
6
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
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?