Tabla de Contenidos
ToggleQuié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.
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.
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:
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.
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”.
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.
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:
Antes de saber cómo cancelar una transacción, un paso más.
A continuación, un listado de la información que contiene una transacción:
Este dato, el “Nonce”, es aquel que utilizaremos 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:
Al crear la nueva transacción podremos realizar dos acciones:
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.
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.