以太坊web3js方法调用失败

时间:2018-09-28 13:13:11

标签: ethereum web3js

我有一个简单的固态智能合约,其方法如下:

function foo(uint a) public {
    b =  bytes32(1);
        emit Event(a, b);
        emit Event2(a, b);
    }

(完整的代码在这里:https://remix.ethereum.org/#optimize=false&version=soljson-v0.4.25+commit.59dbf8f1.js

并使用web3.js代码调用它:

contract = testContract.at('xxxAddress')   

// contract.foo(6); // Failed, Why?

//Success
contract.foo.sendTransaction(6, {from: eth.accounts[1]},function(error, result) {
            console.log("Got err:", error, ", result: ", result) 
    }
);

但是,为什么简单的contract.foo(6)失败了?有专家可以解释吗?

1 个答案:

答案 0 :(得分:1)

对修改区块链的函数的调用需要作为事务发送,因为它需要运行天然气。这就是为什么您需要发送事务而不仅仅是调用函数的原因。您可以找到有关here的更多信息。