我有一个简单的、可靠的、聪明的合同,其方法如下:
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)失败了?有专家能解释吗?
发布于 2018-09-29 11:48:19
对修改区块链的函数的调用需要作为事务发送,因为它需要运行gas。这就是为什么您需要发送事务,而不仅仅是调用函数。你可以找到更多关于它的这里。
https://stackoverflow.com/questions/52556191
复制相似问题