У меня проблема с взаимодействием смарт-контрактов через web3.js 1.0.Я реализовал частную сеть с geth, в которой развернул умный контракт, и я связался бы с ним через web3 в nodejs.Я могу полностью взаимодействовать с ним через туман, но я не могу использовать web3.В частности, я пытался отправить транзакцию в смарт-контракт с
myContract.methods.myMethod(param1, param2).send(options)
или, подписав транзакцию и отправив raw, я получаю хэш транзакции и вижу, что транзакция была отправлена, но транзакция никогда не добывается, и я получаю сообщение: «Ошибка: транзакция не была добыта в течение 50 блоков».
Метод контракта такой:
contract MyContract{
uint256 myVar1;
uint256 myVar2;
function setValues(uint256 value1, uint256 value2) public{
myVar1 = value1;
myVar2 = value2;
}
}
And I 'мы пытались взаимодействовать с контрактом следующим образом:
var web3 = new Web3(new Web3.providers.WebsocketProvider('ws://127.0.0.1:8546');
var contract = new web3.eth.Contract(contractAbi, contractAddress, {
from: myAddress //created by web3.eth.personal.newAccount(myPassword)
});
var block = await web3.eth.getBlock("latest");
var gasLimit = block.gasLimit;
var gasPrice = await contract.methods.setValues(0,0).estimateGas();
contract.methods.setValues(0,0).send({
gas: gasLimit,
gasPrice: Math.round(gasPrice + gasPrice*20/100) //I've tried with different value
})
.on('transactionHash', function(hash){
console.log("transactionHash",hash); //I receive only this event
})
.on('confirmation', function(confirmationNumber, receipt){
console.log("confirmation", confirmationNumber, receipt);
})
.on('receipt', function(receipt){
console.log("receipt", receipt);
})
.on('error', function(error){
console.log("error", error)
});
Я вижу блокчейн и никогда не вижу эту транзакцию, и после большого количества добытых блоков я вижу ошибку: «Транзакция не была добыта в течение 50blocks, ecc ... ".
Я схожу с ума от этой проблемы, я перепробовал все.
У кого-то есть такая же проблема?Как я могу решить это?Или как отправить транзакцию на умный контракт?Странно то, что я могу делать все это с помощью тумана, поэтому я не думаю, что есть проблема с контрактом или сетью.