Web3 + nodejs взаимодействуют с проблемами контракта - PullRequest
0 голосов
/ 23 сентября 2018

У меня проблема с взаимодействием смарт-контрактов через 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 ... ".

Я схожу с ума от этой проблемы, я перепробовал все.

У кого-то есть такая же проблема?Как я могу решить это?Или как отправить транзакцию на умный контракт?Странно то, что я могу делать все это с помощью тумана, поэтому я не думаю, что есть проблема с контрактом или сетью.

...