¿Cómo cancelar o reemplazar una transacción pendiente de Ethereum?

Tiempo de lectura: 5 minutos

Quién jamás haya cometido un error al enviar una transacción en una blockchain, que arroje la primera piedra… Probablemente ninguna piedra sea arrojada, lo que indica lo sumamente importante que es conocer cómo cancelar o reemplazar una transacción pendiente de Ethereum.

En este artículo, repasaré el métodos para llevar adelante esta acción, pero es también una oportunidad, que no dejaré pasar, para explicar qué son y cómo funcionan las transacciones en Ethereum.

Por lo tanto, abandonemos los preámbulos y entremos en acción.

¿Es posible cancelar o reemplazar una transacción pendiente de Ethereum?

La pregunta contiene, en sí misma, la clave de todo este artículo. Sí, es posible reemplazar o cancelar una transacción en Ethereum, siempre y cuando la misma se encuentre pendiente. Una vez que una transacción se encuentra confirmada, esto quiere decir que la misma fue incluida en un bloque de la red y su modificación será imposible.

Cada transacción que realizamos en la red, contiene un número único e irrepetible, relacionado a nuestra dirección en la blockchain o, en otras palabras, a nuestra billetera. Este número, llamado «Nonce«, puede ser modificado, manualmente, para cancelar o reemplazar una transacción en la red.

Pero, quizás este comienzo dé demasiados conocimientos por conocidos. Por lo tanto, es necesario dar un paso atrás y previo a conocer el método que debemos llevar a la práctica, es necesario que me explaye sobre las transacciones, en sí, en la red de Ethereum.

¿Qué es y cómo funciona una transacción en Ethereum?

Cuando hablamos de transacciones en Ethereum, no hablamos más que de interactuar con esta blockchain. Dentro de la red, existen dos tipos de transacciones:

  • Transacciones regulares o habituales
  • Transacciones de implementación de contrato

En este artículo nos centraremos sobre las del primer tipo. Solo para hacerles una mención, las segundas son aquellas transacciones que quienes deseen crear una aplicación en la red, efectúan para “inmortalizar” en la blockchain su “contratos inteligentes”.

Las transacciones regulares o habituales, tienen tanto un remitente como un destinatario y esa es su principal diferencia con las primeras. Estas pueden representar, un envío desde la «wallet» de una persona a otra o un depósito en una aplicación, entre otros ejemplos.

Ahora, conozcamos un poco la vida de una transacción.

¿Qué sucede desde el envío hasta la confirmación de una transacción?

Cuando enviamos una transacción desde nuestra “wallet”, esta viaja hacia un lugar llamado “mempool”. Esta especie de purgatorio cripto, es dónde las transacciones esperan ser seleccionadas por un minero que las incluya en un bloque.

Una vez que la transacción es agregada a un bloque y el minero, tras lograr resolver el correspondiente problema matemático, consigue agregar el bloque a la red, solo resta esperar por la confirmación. En simples palabras, esta confirmación es una cierta cantidad de bloques agregados a la blockchain, los cuales garantizan que las transacciones, contenidas en los bloques anteriores son válidas e inmutables.

Entonces, ahora conozcamos los diferentes estados que atraviesan las transacciones a lo largo de su “criptohistoria”.

¿Qué estados pueden tener las transacciones en Ethereum?

Si revisamos el estado de una transacción, tras enviarla, veremos que este es “unknown”. Esto quiere decir que aún no ha sido “vista” o “chequeada” por un nodo, quién se encargará de conducirla a la famosa y, a la vez, tenebrosa “mempool”.

Una vez que esto suceda y nuestra transacción esté en la “mempool” aguardando que un minero la tome para incluirla en un bloque, su estado será “pending” y solo es aquí cuando podremos actuar sobre ella.

De realizar el método que expondré en el siguiente apartado, la transacción original reemplazada o cancelada, pasará a tener el estado “replaced”, una vez que la consultemos en un buscador.

Por último dos estados. “In block”, será el estado que tenga nuestra transacción una vez que haya sido seleccionada por un minero e incluida en un bloque ya agregado a la red. Aquí, nuestra transacción junto a todas las que forman este bloque se encuentran a la espera de la famosa confirmación que les otorga el estado de “Success”.

Ahora conozcamos cómo actuar sobre esta transacción pendiente.

¿Es posible cancelar o reemplazar una transacción pendiente de Ethereum?

¿Por qué cancelar o reemplazar una tx en ethereum?

La estructura de una red como Ethereum, su organización y consenso, son los que hoy en día nos permiten poder llegar a cancelar o a reemplazar una transacción.

Ahora, si te preguntas porque podríamos llegar a querer realizar estas acciones, existen dos grandes ejemplos:

  • Nos arrepentimos y no nos interesa que se confirme
  • Fue enviada por error

Antes de saber cómo cancelar una transacción, un paso más.

¿Qué información contiene una transacción?

A continuación, un listado de la información que contiene una transacción:

  • Destinatario: La dirección que recibirá los fondos. Ya sea un particular o un contrato.
  • Firma: Esta se genera cuando, mediante la clave privada, se firma la transacción y se confirma que ha sido autorizada por el remitente
  • Valor: Cantidad de ETH que el remitente transfiere al destinatario o equivalente en otra moneda a enviar
  • Datos: Campo opcional en el que se incluyen datos arbitrarios
  • Límite de Gas: Cantidad máxima de unidades de gas que puede consumir la transacción
  • Precio de GasLa comisión que el remitente paga por unidad de gas
  • Nonce: Es una especie de contador, que enumera el total de transacciones confirmadas enviadas desde la dirección de Ethereum que las envió

Este dato, el “Nonce”, es aquel que utilizaremos para cancelar o reemplazar una transacción en Ethereum.

Pasos para cancelar o reemplazar una transacción en Ethereum

Una vez que hayamos enviado nuestra transacción a la blockchain, y esta continúe pendiente, estaremos aún en condiciones de cancelarla o reemplazarla. Si esto es lo que deseamos hacer debemos seguir los siguientes simples pasos:

  • Buscar el “hash” o número que identifica la transacción
  • Pegarlo en un buscador, como Etherscan.io y buscar la transacción
  • Entre los datos de la misma, tras confirmar que el estado sea “pending”, dar click en “see more”
  • Una vez allí, buscar en la fila “Others” el número del “nonce”
  • Volver a nuestra billetera y en las opciones, generalmente avanzadas, seleccionar la creación manual del “Nonce»
  • Creamos una nueva transacción desde nuestra wallet, seleccionando un gas que supere al seleccionado en la anterior y previo a enviarla le modificamos el número del «Nonce» por el que tiene la transacción a reemplazar
  • Enviamos la transacción y a esperar su confirmación

Datos a tener en cuenta

Al crear la nueva transacción podremos realizar dos acciones:

  • Corregir la transacción anterior
  • Cancelar aquella transacción

En el primer caso, lo que deberíamos hacer es volver a crear la misma transacción, ya sea enviando el mismo monto a la misma dirección o interactuando con el mismo contrato, mientras corregimos el parámetro erróneo y seleccionamos un gas más alto, para que esta transacción sea prioritaria para un minero. Es importante aclarar, que el gas de ambas, será consumido y no nos será devuelto.

En el segundo caso, cuando no queremos que la transacción se ejecute, la opción a la que suele recurrirse es, crear una transacción en la que nos enviemos a nosotros mismos 0 ETH.
De este modo, si esta transacción posee el mismo “nonce”, pero más gas que la anterior, una vez confirmada, reemplazará a la transacción no deseada.

¿Es posible cancelar o reemplazar una transacción pendiente de Ethereum?

Una reflexión

El mundo detrás de una transacción de Ethereum, puede ser fascinante. Este artículo, no es más que un pequeño esbozo de lo que sucede al enviar una transacción y las opciones con qué contamos para intervenir activamente sobre su futuro.

Conocer los fundamentos y conceptos detrás de nuestras herramientas diarias, no es una obligación o una necesidad. Pero, indudablemente nos dota de la «expertise» necesaria para actuar con conocimiento de causa y minimizar los errores.

Una comunidad informada, es una comunidad que está en condiciones de protegerse y compartir sus conocimientos con el mundo. Demasiadas son las muestras ya de que el camino hacia la adopción se cimienta sobre la educación.


Leave a comment
Your email address will not be published. Required fields are marked *