Я развернул свой смарт-контракт в тестовой сети Kovan Etherium . После этого я пытаюсь взаимодействовать с методами смарт-контракта, используя 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","сообщение":"Ошибка выполнения ВМ."} в Function.validate(/home/administrator/node_modules/web3-providers/dist /web3-providers.cjs.js:114:18) в HttpProvider._callee$ (/home/administrator/node_modules/web3-providers/dist/web3-providers.cjs.js:708:61) в tryCatch (/home/ администратор/node_modules/regenerator-runtime/runtime.js:62:40) в Generator.invoke [как _invoke] (/home/administrator/node_modules/regenerator-runtime/runtime.js:288:22) в Generator.prototype.( анонимная функция) [как указано далее] (/home/administrator/node_modules/regenerator-runtime/runtime.js:114:21) в asyncGeneratorStep (/home/administrator/node_modules/@babel/runtime/helpers/asyncToGenerator.js:3: 24) в _next (/home/administrator/node_modules/@babel/runtime/helpers/asyncToGenerator.js:25:9) в at process._tickCallback (внутренний/процесс/next_tick.js:188:7)
Может ли кто-нибудь сказать мне значение этой ошибки? Где я ошибаюсь? И как подтвердить, взаимодействовал смарт-контракт или нет?
использовать отправить , а не звонить
myContract.methods.myMethod([param1[, param2[, ...]]]).send(options[, callback])
Отправить -> Отправит транзакцию в смарт-контракт и выполнит его метод. Обратите внимание, что это может изменить состояние смарт-контракта.
Call -> вызовет «константный» метод и выполнит его метод смарт-контракта в EVM без отправки транзакции. Вызов Note не может изменить состояние смарт-контракта.
и ему также может понадобиться «значение» в опции, если это оплачиваемая функция и требуется эфир.
payable
, когда этот чувак не выложил код контракта? (Кстати, он не указывает value
поле, поэтому есть большая вероятность, что этот метод на самом деле не payable
).
Варш