транзакции geth застряли в ожидании, повторная отправка не удалась

Я отправил 115 транзакций с помощью geth, и они застряли в ожидании более часа. Etherscan их не распознает. Я пытаюсь отправить повторно и получаю запутанную ошибку. Некоторые подробности из консоли geth:

> eth.pendingTransactions.length
115

> eth.resend(eth.pendingTransactions[0], web3.toWei(20, 'gwei'))
Error: Transaction a075b95c7242178330ae22373a1138e9ec22cbd9dd54964980fc1a36182acdbe not found
    at web3.js:3104:20
    at web3.js:6191:15
    at web3.js:5004:36
    at <anonymous>:1:1

> eth.pendingTransactions[0].hash == "0xa075b95c7242178330ae22373a1138e9ec22cbd9dd54964980fc1a36182acdbe"
false

Документы eth.resend не предлагают гораздо больше помощи.

Это может быть дубликат: geth: невозможно повторно отправить транзакцию - транзакция не найдена


* Редактировать: исправлена ​​опечатка кода в описании (но опечатки не было в консоли).

Интересно, что через 24 часа пул в конечном итоге очищался сам по себе, и все транзакции были успешно отправлены. Но вопрос о том, почему eth.resend()не удалось, остается в силе. (или, возможно, разъяснение цели функции)

У вас бродяга )во второй линии. Кроме того, как вы создали транзакцию? Можете ли вы опубликовать весь тх? Какая версия geth?
geth 1.6.1-stable -- Транзакции в конце концов завершились, просто они заняли намного больше времени, чем я ожидал. Я использовал газ по цене 2 Gwei, и отправка транзакций заняла 24 часа. Было 0 прогресса по часам, потом несколько проходило. Я хотел бы узнать больше о том, как одноранговые узлы обрабатывают большие пулы транзакций, но пока я ограничиваю себя только несколькими ожидающими транзакциями за раз.
Для потомков: в сети произошел всплеск транзакций. Найдите обсуждения 30.05.2017 -- 01.06.2017, касающиеся ICO BAT, учетных записей пользователей Poloniex и т. д.
Проблема воспроизводилась и в другие даты, когда количество транзакций было низким.
Это возвращает Error: intrinsic gas too low. Я не смог это исправить :( @carver

Ответы (1)

Я до сих пор не знаю, почему eth.resendсбой (и продолжает сбой начиная с geth 1.6.5), но этот совместимый патч работает для меня:

eth.resend = function (tx, gasPrice, gas) {
  if (gasPrice) {
    tx.gasPrice = gasPrice;
  }
  if (gas) {
    tx.gas = gas;
  }
  tx.data = tx.input;
  return eth.sendTransaction(tx);
};

Я предпочитаю также добавить эту удобную версию:

eth.resendgwei = function (tx, gasPriceInGwei, gas) {
  if (gasPriceInGwei) {
    return eth.resend(tx, web3.toWei(gasPriceInGwei, 'gwei'), gas);
  }
  else {
    return eth.resend(tx, null, gas);
  }
};

Теперь, если ваша ожидающая транзакция зависла из-за слишком низкой цены на газ, вы можете ускорить ее с помощью:

eth.resendgwei(eth.pendingTransactions[0], 27);
у меня есть Error: intrinsic gas too lowили Error: replacement transaction underpriced error.@carver
Это означает, что у вас слишком низкая цена на газ.
Я знаю, что gasPriceэто слишком низко! Была небольшая проблема на gethстороне, ее исправили следующим образом: github.com/ethereum/go-ethereum/issues/16284 @carver