¿Se "eliminan" y "restablecen" las transacciones pendientes?

Intenté una simple transferencia de éter entre dos cuentas usando geth, pero fijé un precio de gasolina bastante bajo (2 gwei). Después de dos horas , la transacción aún se mostraba en geth under eth.pendingTransactions; supuse que esto se debía a la falta de demanda para extraer a ese precio de gas.

Sin embargo, en ese momento revisé ambas cuentas en Etherscan para establecer si la transacción se había transmitido desde mi máquina local. La transacción aparecía como pendiente pero con una antigüedad de tan solo 40 minutos . Aproximadamente diez minutos más tarde, actualicé y la transacción había desaparecido de ambas páginas de Etherscan, pero aún se mostraba en geth. Unos minutos más tarde, la transacción había reaparecido en Etherscan, pero la edad se restableció a 2 minutos . A partir de ese momento, verifiqué de manera intermitente hasta que finalmente se completó la transacción (cuatro horas después del envío), sin dejar Etherscan nuevamente.

Dado que me preocupé durante un breve período de tiempo mientras la transacción había desaparecido, me gustaría comprender un poco mejor el proceso subyacente. Mi entendimiento sería algo como esto:

  1. Transacción enviada
  2. Primeros shows como pendientes en geth
  3. Se propaga al resto de la red; eventualmente visible como pendiente en todos los nodos actualizados
  4. "Elegido" para ser extraído (¿por varios mineros o solo uno?) como parte de un bloque específico
  5. Una vez que se completa el bloque, el estado de transacción actualizado se propaga al resto de la red
  6. Cuando mi copia local de geth se sincroniza con ese bloque, se muestra el cambio en los saldos de la cuenta

Sin embargo, mi experiencia actual sugiere que puede no ser tan simple, ya que mi transacción pendiente desapareció y luego reapareció en Etherscan (¿un nodo?). ¿Cuál sería una secuencia de eventos más precisa?

Respuestas (1)

Tengo entendido que su comprensión es correcta, excepto que le falta una propiedad particular del software del nodo Ethereum. Es decir, como parte del n. ° 3, la transacción se almacena en el grupo de transacciones del nodo (cf. Mempool de Bitcoin). Normalmente, las transacciones viven allí hasta que se extraen, pero debido a que las computadoras tienen una memoria y un poder de procesamiento finitos, el grupo de transacciones es, por necesidad, también de un tamaño finito. Las transacciones que no han sido extraídas pueden ser desalojadas de la memoria si el conjunto de transacciones está lleno (supongo que el orden depende de la implementación; presumiblemente, se conservan las transacciones de mayor valor). Por lo tanto, es probable que su transacción haya sido desalojada del grupo de transacciones de Etherscan, pero otro nodo la "recirculó" después de que el grupo de transacciones de Etherscan liberara algo de memoria.

¿No es hermoso ver cómo responde el mercado a los principios básicos de la oferta y la demanda? Me encanta el dinero de código abierto.
Mi problema es exactamente el contrario, quiero que mi transacción pendiente finalmente se elimine, pero ahora han pasado más de 24 horas y todavía está pendiente. ¿Qué sucede si el mempool nunca termina, eso significa que mientras haya espacio en el mempool, mi transacción pendiente estará allí para siempre? Solo quiero que se caiga, pero me temo que estará allí para siempre. Y ese es un gran problema porque no puedo hacer nada más con mi contrato de aave hasta que algo pase con él. Es decir, mi dinero está atascado en un contrato aave hasta que la transacción tenga éxito o se cancele.
@MoisésBriseñoEstrello Parece que tienes otra pregunta. Sin embargo, creo que ethereum.stackexchange.com/questions/25866/… puede ayudar. Ver "transacción de reenvío".