Как вы оцениваете текущий лимит газа перед отправкой транзакции? - PullRequest
0 голосов
/ 11 июня 2019

В частности, я хочу, чтобы мой node.js мог отправлять токен ERC721 на другой кошелек.Иногда цена на газ высокая, и моя сделка застревает там на несколько часов.В этих случаях я бы хотел, чтобы мой node.js использовал больше газа для своевременной отправки токена.

Я пытался получить предел газа в последнем блоке, но он всегда кажется слишком низким.

var count = web3.eth.getTransactionCount (sender);

  var rawTransaction;

  var block = web3.eth.getBlock("latest");
  var currGas = block.gasLimit;
  currGas = currGas.toString(16);
  currGas = '0x' + currGas;

  if(isSending){
    rawTransaction = {
        "from": sender,
        "nonce": web3.toHex(count),
        "gasPrice": currGas,
        "gasLimit": "0x3A980",
        "to": skyDropContract,
        "value": "0x0",          
        "data": myContractABI.startGame.getData(index, {from: sender}),
        "chainId": 0x01
    };
  }

Я использую web3@0.20.0, но могу переключать версии, если мне это действительно нужно.Есть ли способ оценить стоимость моей транзакции перед ее отправкой?Я мог бы даже пойти на 1 гВей сверх текущей сметной стоимости.

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

gasLimit относится к максимальному количеству газа, которое может быть израсходовано. Вы можете получить и повторно использовать последний блок total gasLimit, вызвав что-то вроде этого:

web3.eth.getBlock("latest").gasLimit

Но на практике, когда вы строите транзакции, думайте о gasLimit как о максимальной сумме ( в вэй ), которую вы готовы заплатить.

Это защитный механизм для вас, поскольку он позволяет вам не тратить весь свой эфир, если выполнение требует слишком больших затрат.

И это функция безопасности EVM, позволяющая избежать зависания при работе, так как если выполнение затрат достигает значения gasLimit, оно останавливается и не застревает.

Так что для разработки вы можете просто повторно использовать последний предел блока или использовать большие суммы. Но поскольку вы хотите что-то использовать, поправьте свои оценки, и у вас будет лучшее представление о том, сколько газа вы готовы платить, максимум.

0 голосов
/ 12 июня 2019

можно попробовать сметный газ с web3 1.0

myContract.methods.startGame(index)
    .estimateGas(
        {
            from: _from,
            gasPrice: _gasPrice
        }, function(error, estimatedGas) {
        }
    )
});
...