transacciones geth atascadas en estado pendiente, el reenvío falla

Envié 115 transacciones con geth, y están atascadas en espera durante más de una hora. Etherscan no los reconoce. Intento reenviar y aparece un error confuso. Algunos detalles de la consola 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

Los documentos de eth.resend no ofrecen mucha más ayuda.

Esto podría ser un duplicado de: geth: no se puede reenviar la transacción - transacción no encontrada


* Editar: error tipográfico de código fijo en la redacción (pero el error tipográfico no estaba en la consola).

Curiosamente, el grupo finalmente se despejó por sí solo, después de 24 horas, y todas las transacciones se enviaron con éxito. Pero la pregunta de por qué eth.resend()estaba fallando sigue en pie. (o tal vez una aclaración sobre el propósito de la función)

Tienes un perro callejero )en tu segunda línea. Aparte de eso, ¿cómo creó la transacción? ¿Puedes publicar el tx completo? ¿Qué versión de geth?
geth 1.6.1-stable: las transacciones finalmente se borraron, solo que tomaron mucho más tiempo de lo que esperaba. Estaba usando un precio de gasolina de 2 Gwei y las transacciones tardaron 24 horas en enviarse. No había ningún progreso durante horas seguidas, luego unos pocos pasaban. Me encantaría aprender más sobre cómo los pares manejan grandes grupos de transacciones, pero por ahora, solo me estoy limitando a un puñado de transacciones pendientes a la vez.
Para la posteridad: la red tuvo un pico de transacciones. Busque debates sobre 2017-05-30 -- 2017-06-01, relacionados con BAT ICO, cuentas por usuario de Poloniex, etc.
El problema era reproducible en otras fechas, cuando el recuento de transacciones era bajo.
Esto regresa Error: intrinsic gas too low. No pude arreglarlo :( @carver

Respuestas (1)

Todavía no sé por qué eth.resendestaba fallando (y continúa fallando a partir de geth 1.6.5), pero este parche compatible funciona para mí:

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

Prefiero agregar también esta versión de conveniencia:

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

Ahora, si su transacción pendiente está atascada porque el precio del combustible es demasiado bajo, puede acelerarla con:

eth.resendgwei(eth.pendingTransactions[0], 27);
estoy teniendo Error: intrinsic gas too lowo Error: replacement transaction underpriced error.@carver
Significa que el precio de la gasolina es demasiado bajo.
¡Sé que gasPricees demasiado bajo! Hubo un pequeño problema al gethmargen, se solucionó de la siguiente manera: github.com/ethereum/go-ethereum/issues/16284 @carver