我在Kovan Etherium testnet上部署了智能契约。之后,我尝试使用web3 1.0.0与智能契约方法交互。下面是我的节点js代码:
var Web3 = require('web3');
var api = myapikey;
const testnet = 'https://kovan.infura.io/'+ api;
const web3 = new Web3(new Web3.providers.HttpProvider(testnet))
function a (){
const abi =[{ abi json}];
var MyContract = new web3.eth.Contract(abi,'0xf...');
console.log(MyContract.address);
console.log(MyContract.jsonInterface);
MyContract.methods.buyCoordinator(1,'https://cdn.pixabay.com/photo/2016/02/17/19/08/lotus-1205631_960_720.jpg','abc').call({from:'0x7...'},(error, result) => {
console.log(result);
console.log(error);
});
}
a();它返回null并给出以下错误:
错误:节点错误:{“代码”:-32015,“数据”:“还原0x",“消息”:“VM执行错误”}} (/home/administrator/node_modules/web3-providers/dist/web3-providers.cjs.js:114:18) at HttpProvider._callee$,(/home/administrator/node_modules/web3-providers/dist/web3-providers.cjs.js:708:61) at tryCatch (/home/administrator/node_modules/regenerator-runtime/runtime.js:62:40) at Generator.invoke
C2 /process/next_tick.js:188:7)
有人能告诉我这个错误的意思吗?我哪里搞错了?以及如何确认智能合同是否相互作用?
发布于 2019-05-02 07:59:04
使用发送而不是调用
myContract.methods.myMethod([param1[,param2]]).send(期权)
发送->将向智能契约发送事务并执行其方法。注意,这可能会更改智能契约状态。调用->将调用“常量”方法,并在EVM中执行其智能契约方法,而不发送任何事务。注:调用不能更改智能契约状态。
如果它是一个应付款函数,并且需要以太,那么它也可能需要一个选项中的“值”。
https://ethereum.stackexchange.com/questions/70313
复制相似问题