以下のcontaract をropstenネットワークにデプロイしました。そして、このコントラクトをweb3.jsで呼び出そうとしているのですが、web3.jsでcontractのメソッドを呼び出して値を取得する方法がわかりません。
solidity
1pragma solidity >= 0.4.0 < 0.7.0; 2 3contract Practice { 4 5 struct Client { 6 string name; 7 string gender; 8 uint256 weight; 9 uint256 height; 10 } 11 Client[] public clients; 12 13 function register(string memory _name, string memory _gender, uint256 _weight, uint256 _height) public { 14 clients.push(Client(_name, _gender, _weight, _height)); 15 } 16 17 function excesise() public view returns (uint256 newWeight){ 18 newWeight = clients[0].weight - 2; 19 return newWeight; 20 } 21 22}
index.html
javascript
1<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script> 2 <script> 3 const web3 = new Web3(new Web3.providers.HttpProvider("https://ropsten.infura.io/v3/${id}")); 4 const address = "${contractAddress}"; 5 const abi = [${ABI}] 6 7 const contract = new web3.eth.Contract(abi, address); 8 contract.methods.register("tanaka", "", 65, 175); 9 const result = contract.methods.excesise.call(); 10 console.log(result); 11 </script>
上記を実行したところ、consoleには以下のように出力されます。本当は63と表示して欲しいです。
{arguments: Array(0), call: ƒ, send: ƒ, encodeABI: ƒ, estimateGas: ƒ, …}
contractをインスタンスを作った後、メソッドをcallして返却された値を取得するにはどうしたら良いのでしょうか?
あなたの回答
tips
プレビュー