1

使用 Truffle 开发框架(web3、react 和solidity)来测试一个简单的智能合约。当我按下 UI 上的按钮时,我正在测试一个基本功能,但它似乎没有按我预期的方式工作。我希望合同能够增加价值并返回 true。请注意,该值稍后会显示在前端,因为这是我正在玩的。代码如下:

Solidity 合约

    uint total = 0;

    function setTotalValue() public returns(bool) {

    total = total + 2;
    return true;
}

应用程序.js

enter code here

async modifyTotal() {

fantasyInstance.setKittyValue.call().then(function(res) {
  console.log(res); //THIS RETURNS FALSE TO THE CONSOLE
});

为澄清起见,当单击 HTML 按钮时调用 modiftyTotal。控制台语句返回值“false”,实际总值似乎永远不会改变。有任何想法吗?

4

1 回答 1

3

您的 JS 代码与合同代码不匹配,并且您省略了检索联系人实例的代码部分,但我猜您的问题是您使用call的是sendTransaction. call在本地节点中执行方法而不改变状态。您应该只将它用于测试或常量函数。请参阅web3js 文档

于 2018-01-04T05:30:58.353 回答