狼愛上貍

          我胡漢三又回來了

          調用智能合約簡單運算總返回0的問題

          1.合約內容
          pragma
          solidity ^0.5.9;

          contract hello {

          function mutiply(uint a) public pure returns (uint result) {

          return a*3;

          }
          }
          2.部署合約:
          var Web3 = require("web3");
          var fs = require("fs");
          var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
          var code = '0x' + fs.readFileSync("2_sol_hello.bin").toString();
          var abi = JSON.parse(fs.readFileSync("2_sol_hello.abi").toString());
          var contract = web3.eth.contract(abi);
          console.log(web3.eth.accounts);
          console.log('account balance:' + web3.eth.getBalance(web3.eth.accounts[0]))

          web3.personal.unlockAccount(web3.eth.accounts[0],"123")
          var contract = contract.new({from: web3.eth.accounts[0], data: code, gas: 470000},
          function(e, contract){

          if(!contract.address) {
          console.log("已經發起交易,交易地址:" + contract.transactionHash + "\n正在等待挖礦");
          } else {
          console.log("智能合約部署成功,地址:" + contract.address);

          }

          }
          )
          3.調用合約
          var Web3 = require("web3");
          var fs = require("fs");
          var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
          var abi = JSON.parse(fs.readFileSync("2_sol_hello.abi").toString());
          var contract = web3.eth.contract(abi);
          var instance = contract.at('0xb06846c54c6ae67102ed67ce57a357a643d1f1b8')
          web3.personal.unlockAccount(web3.eth.accounts[0],"123")
          console.log(instance.mutiply(12).toString())
          4.顯示結果為:
          0
          原因:solc版本0.5.9太高,可能調用的方法不對。
          解決方法:npm install -g solc@0.4.22
          降低版本,然后把合約第一行改為:
          pragma solidity ^0.4.22;
          問題解決。

          posted on 2019-06-23 18:12 狼愛上貍 閱讀(302) 評論(0)  編輯  收藏 所屬分類: Blockchain

          主站蜘蛛池模板: 阿克苏市| 肥城市| 荔波县| 灵山县| 开远市| 绥宁县| 田阳县| 比如县| 隆尧县| 清流县| 冀州市| 喀喇| 义乌市| 天峨县| 高要市| 浙江省| 祁阳县| 宣恩县| 霍城县| 阳谷县| 恩施市| 清流县| 五指山市| 浮梁县| 鸡东县| 抚顺市| 普陀区| 温泉县| 托克逊县| 东平县| 麻阳| 合阳县| 新昌县| 宾阳县| 西乌珠穆沁旗| 长白| 青岛市| 余江县| 嘉禾县| 礼泉县| 彭阳县|