以太坊 web3js 方法调用失败
Ethereum web3js method call fail
我有一个简单的 solidity 智能合约,其方法如下:
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) 失败了?有高手能解释一下吗?
对修改区块链的函数的调用需要作为交易发送,因为它需要 gas 到 运行。这就是为什么您需要发送交易而不仅仅是调用函数的原因。您可以找到更多相关信息 here.
我有一个简单的 solidity 智能合约,其方法如下:
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) 失败了?有高手能解释一下吗?
对修改区块链的函数的调用需要作为交易发送,因为它需要 gas 到 运行。这就是为什么您需要发送交易而不仅仅是调用函数的原因。您可以找到更多相关信息 here.