¿Qué sucede con una transacción que, por tener una comisión muy baja, no es seleccionada por los mineros?

Esta es una pregunta que se suele leer mucho durante las épocas en las que las comisiones por transacción se incrementan.

Cuando no estas familiarizado con Bitcoin y su funcionamiento puedes sentirte preocupado cuando ves que tú transacción pasa mucho tiempo sin confirmarse e incluso puedes llegar a pensar que se va a quedar «en el limbo».

 

Y es que muchos estamos acostumbrados a pagar comisiones muy bajas y cuando las comisiones por uso de la red se incrementan, nos preocupamos y nos preguntamos, con justa razón, ¿qué va a pasar con mi transacción?.

 

Esa pregunta casi siempre viene acompañada de otra pregunta, ¿cuánto tiempo puede tardar mi transacción sin ser seleccionada por un minero?.

 

Antes de contestar a esas pregunta, es importante conocer a nivel general lo siguiente. Una transacción de bitcoin, una vez que es enviada, por ejemplo desde la wallet de un móvil, ingresa a lo que se llama la mempool (memory pool) o piscina de transacciones.

 

La mempool es el sitio donde las transacciones son “puestas” para irse propagando por la red. Es importante entender esto, ya que significa que cada nodo de la red tiene su propia mempool y por lo tanto mantiene una copia de las transacciones que le van llegando.

 

También es importante saber que por código en los clientes de Bitcoin Core existe una variable que indica que las transacciones expiren después de 336 horas (configurable con el parámetro -mempoolexpiry), eso significa que una transacción, una vez que es introducida a la mempool del nodo, estará «viva» aproximadamente durante 2 semanas (336 horas).

 

Y otra cosa más a saber es que cada nodo puede configurar la capacidad de almacenamiento de la mempool (por defecto es de 300MB), y además puede cambiar su política de almacenamiento (transacciones que entran en su mempool), por ejemplo podría decidir que mi nodo no acepte transacciones que paguen menos de 10 sat/vbyte de comisión. Así como también puedes decidir purgar las transacciones en algún momento o que no se guarden en la memoria de tu nodo tras un reinicio del nodo.

 

Servicios como mempool.space no solo tienen su propia mempool (más de una me atrevería a decir) sino que el tamaño de ellas es mayor que el común. Esto es importante porque debemos entender que este tipo de servicios pueden llegar a mantener durante más tiempo en su mempool una transacción.

Conociendo esto debemos entender que si una transacción es purgada de la mempool de un nodo, no existe garantía de que esa misma transacción sea también purgada de la mempool de otros nodos de igual tamaño (esto por las políticas que pueda tener de aceptación de transacciones) y ya ni decir si el tamaño de su mempool es mayor.

Eso si, una vez que una transacción es seleccionada por un minero e incluida en un bloque, la transacción desaparece de la mempool de todos los nodos al ser confirmada.

 

Así que una vez entendido que cada nodo tiene su propia mempool, que en cada mempool puede haber una replica de las transacciones, y que cada mempool puede ser de una capacidad de almacenamiento diferente, así aplicar políticas diferentes para aceptarlas, pasemos a ver las preguntas.

 

¿Qué sucede con una transacción que permanece sin confirmar durante mucho tiempo?

 

Vamos a suponer que envías una transacción a través de un nodo propio y que no modificas el tiempo de expiración de las transacciones, eso significará que una vez que la transacción es puesta en la mempool de tu nodo, tendrás 2 semanas para que la misma pueda ser procesada.

En este mismo ejemplo vamos a suponer que la enviaste con una comisión de minería muy baja (1 sat/vbyte) por lo cual es muy probable que tarde mucho en ser tomada por un minero o que incluso nunca lo sea.

Además conforme se vaya propagando por la red, es posible que existan nodos que no la «dejen pasar» a su mempool porque no cumple con sus políticas (fee muy baja). También llegará a la mempool de nodos que tengan una memoria más grande que la del resto, por lo que entrará pero quedará por debajo de todas aquellas que paguen más.

 

En ese escenario, tú transacción estará durante las 2 semanas mencionadas en tu mempool y pasado ese tiempo será purgada. Esto significará que desde ese preciso momento, los utxos (bitcoins) que estabas usando para esa transacción quedarán desbloqueados y verás el saldo de tu wallet restablecerse. Desde ese momento podrías hacer otra transacción usando esos utxos para gastarlos.

 

Pero recordar que no todos los nodos tienen la misma configuración, por lo cual no es garantía de que efectivamente a las 2 semanas todos los nodos de la red la desechen, además que seguramente no llega a ellos a la misma vez. La transacción seguirá viva mientras no desaparezca por completo de todas las mempool’s de todos los nodos.

 

Esto podrá ocasionar que cuando trates de enviar esa nueva transacción usando los mismos utxos, tengas un error.

Esto es debido a que si la mayoría de los nodos no han purgado la transacción inicial, rechazarán esta nueva transacción ya que la identificarán como un intento de doble gasto.

Tendrías que esperar hasta que haya pasado un tiempo mayor y volverlo a intentar para ver si TODOS los nodos de la red han por fin purgado la transacción inicial. Aunque como ya hemos visto no hay garantía de que eso pase al mismo tiempo en el resto de la red. Aunque también es cierto que una transacción no tarda demasiado en propagarse y también es cierto que la gran mayoría de nodos no modifican el tiempo de expiración.

 

Ahora, no todo son “malas” noticias, si una transacción tiene una comisión muy baja y no es procesada por ningún minero significa que hay más transacciones entrando a la red que pagan más comisiones por lo que esa transacción eventualmente desaparecerá de la mempool del resto de nodos. Solo es cuestión de tiempo.

 

Las transacciones siguen un método tipo pila o stack, donde en la parte más alta de la mempool están las transacciones que pagan más comisiones y en la parte más baja las que menos.

Cuando una transacción se queda tan abajo en la pila de la mempool, lo que sucederá es que una siguiente transacción que llegue con más comisión, terminará por sacarla de la mempool (recordemos que tienen un tamaño finito).

En ese momento la transacción desaparecerá de la mempool, por lo que es muy probable (pero no seguro) que suceda lo mismo en otros nodos. Y si sucediera que ya no la vemos en servicios como el de mempool.space, que suelen tener piscinas muy grandes, pues es aún más probable que haya desaparecido de todos los demás nodos.

Si eso llegará a pasar, entonces la transacción no existiría más y por consecuencia si enviáramos una siguiente transacción usando los mismos utxos, no tendríamos problema alguno.

 

Pero ¿y si pasa el tiempo y la transacción sigue ahí?. Tienes la opción de intentar realizar un incremento en el pago de la comisión, ya sea usando un método llamado Replace By Fee (RBF) o el mecanismo llamado Children Pay for Parents (CpFP), en este artículo hablo sobre ello. También te dejo este otro artículo que explica en detalle como realizar ambos procedimientos.

 

Y por último, a la pregunta de ¿Cuánto tiempo puede tardar mi transacción sin ser seleccionada por un minero?

Entenderás que la respuesta aunque suene a broma, va a ser que depende, depende de los factores antes descritos sobre el tamaño de la mempool, la cantidad de transacciones que estén entrando a la red pagando comisiones superiores y de las políticas implementadas por los nodos.

Aunque en la práctica suele ser muy raro que la transacción tarde más de 3 semanas, es importante que se entienda que es posible.

 

Como siempre, si llegaste hasta aquí, te agradezco el tiempo de leerme, si te gusta el trabajo que realizo, te agradecería una propina, eso me ayuda a seguir generando contenidos para que todos podamos aprender y además me ayuda a mantener el sitio y el dominio libre para todos!.

 

Mil gracias.

5/5

Puedes dejar una propina con el botón «Invítame un café».

O mediante Lightning network:

⚡[email protected]

También puedes hacerlo onchain, vía Paynyms de Samourai Wallet:

PayNym: +decentralized