【초보자용】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 파일을 실행하십시오.

    자신이 빠진 포인트



    그럼, 자신이 빠져버린 포인트를 소개하겠습니다. 다음 세 가지가 있습니다.

    계약의 주소



    우선은 test.js 안에 있는 계약의 주소군요. 이것을 자신은 확실히 그림의 ①의 주소라고 생각하고 있었습니다만, 그렇지 않고 ②의 주소입니다.



    abi는 copipe하지 않으면 안됩니다.



    abi 정보는 눈으로 볼 수 있는 것을 몰아넣는 것이 아니라, 클립보드 기능을 사용해 copipe 한 것을 써 주지 않으면 안됩니다.





    contract의 다음은 함수명



    이런 실수는 자신뿐일지도 모릅니다만, var response = contract.HelloEther.call(); , HelloEther). 자신은 여기를 helloWorld라고 썼습니다.

    요약



    이상 달리기로, 빠진 포인트를 소개해 왔습니다. 어땠습니까? 이런 당연이라고 생각되는 것이 대부분일지도 모릅니다만, 자신과 같은 초보자는 빠져버리는 것이 아닐까라고 생각해, 써 보았습니다. 이 기사가 누군가의 도움이 되길 바랍니다.

    참고 기사


  • 「geth의 기능이나 컨트랙트를 web3.js를 이용해 호출한다」 ー이쪽의 기사 덕분에 학습할 수 있어, 또 이 기사를 쓸 수 있었습니다. 정말 고마워요.
  • 스마트 컨트랙트 개발 환경 Remix를 Ubuntu16.04에 설치해 보자! 』 - Remix 설치에 대해 매우 명확하게 작성되었습니다.
  • 『Ethereum과 Remix로 스마트 컨트랙트를 만들어 움직여 보자! 』 ー상의 기사의 속편입니다. 계약을 배포하기 전까지는 매우 이해하기 쉽게 작성되었습니다.
  • 좋은 웹페이지 즐겨찾기