web3调用call()方法获取不到返回值

一.web3的call()获取不到返回值问题和解决方法

  • 在彩票小合约中,遇到一个问题:合约中 有两个方法
    第一个返回一个帐户地址,没有使用到当前方法调用者信息;
    第二个使用到了当前方法调用者信息
    在web3中使用call()来调用这两个方法,第二个 老是得不到值
  • 缘由:第二个方法由于使用到了方法调用者的信息(msg.sender),因此 web3 在call调用合约这个方法时,须要将调用者的地址设置给 参数from,固然也能够经过直接设置 web3.eth.defaultAccount 来代替

web3调用合约方法call

  • 补充: web调用合约另外一个要注意的类型:合约中的 resetData() 方法由于修改了合约的全局变量(也叫状态变量),须要花费,因此在 web3 中调用时使用 send()调用,并传入 from 和 gas。同理,合约中的 kill()方法由于要销毁合约,也须要经过 send() 调用并 传入 from 和 gas。

web3调用合约方法send

【完整 以太坊彩票合约案例源码:https://www.jianshu.com/p/6a0492cfb59aweb

相关文章
相关标签/搜索