El Replace by Fee (RBF) es una útil característica de Bitcoin y otras criptomonedas que nos permite aumentar las fee de una transacción luego de que esta haya sido realizada para agilizar de esta forma su confirmación.

El reemplazo por tarifa o Replace by Fee (RBF), es un método que nos permite poder reemplazar una transacción, antes de ser confirmada, por otra versión con una tarifa más elevada.

Es muy útil y práctica en casos donde se envía una transacción y ésta tarda mucho en confirmarse. Asi se puede enviar una nueva transacción para que sea priorizada por los mineros. Además se invalida la anterior al compartir las mismas entradas. De esa forma, podemos incrementar la tarifa de comisión que pagaremos a los mineros, para que estos agilicen la confirmación de esa nueva transacción, quedando la otra inservible.

Imagine que realizó una transacción para pagar por un producto que necesita urgente, y que su vendedor no lo enviará hasta que se confirme la transacción. Pero en el momento en que realizó la transferencia, usted eligió una tarifa de comisión más baja de la recomendable en ese momento. Por lo que han pasado horas y su transacción sigue sin confirmar.

En este caso usted puede emplear la opción de Replace by Fee (RBF). Sólo debe crear una nueva transacción con la misma cantidad de criptomoneda que transfirió originalmente. Y enviarla a la misma dirección, pero con una tarifa más alta. Con lo que los mineros se verán motivados por dicha comisión, y procesarán la transacción de forma inmediata. Así usted podrá recibir su producto sin más demoras.  La transacción inicial es invalidada y con ello no supone un nuevo gasto para usted.

¿Cómo funciona el proceso de Replace by Fee (RBF)?

En realidad, cuando aplicamos el Replace by Fee (RBF), no estamos aumentando la tarifa de la transacción que realizamos y está sin confirmar. En su lugar, estamos creando una nueva transacción con las mismas entradas y salidas que la anterior, pero con una comisión mucho más alta. Por lo que los mineros le darán prioridad a ésta, incluyéndola en un bloque de forma más rápida.

En este caso lo importante son las entradas sin gastar que se usan. Si ambas transacciones comparten las mismas entradas, una vez sean gastadas en una transacción, la segunda será omitida por los mineros, pues previamente tras tomar la transacción del mempool revisan que sea válida la transacción, y entre las comprobaciones se encuentra revisar que las entradas no hayan sido gastadas en otra transacción ya confirmada o en el mismo bloque que se está confirmando.

Cuando realizamos una transacción, nuestra wallet nos mostrará una sugerencia de la comisión que se debería pagar según la prioridad que tenga nuestra transacción y la rapidez con la que queremos que se confirme. Pero la red puede sobrecargarse en cuestión de minutos, por lo que nuestra fee puede llegar a ser insuficiente segundos después de haber enviado la transacción.

Esto hace que nuestra transacción se quede estancada en la mempool de la red. Por ello, la implementación de Replace by Fee (RBF) es una gran alternativa de solución a esta problemática. Ya que el usuario cambia la transacción estancada por otra que incluya una tarifa más alta, para que sea procesada y confirmada en la red. Asi se puede combatir la congestión de la red. Una situación que generaba cientos y miles de transacciones estancadas en la mempool. Y aunque no es solución perfecta, si resuelve en parte la problemática de las transacciones.

No obstante, esta opción sólo permite reenviar una transacción a la misma dirección de destino. Con la diferencia la de que la comisión a pagar debe ser mayor. Un proceso parecido lo podemos ver en las Child Pays for Parents (CPFP) que explicamos en otro gran articulo de nuestra Academy.

¿Cuánto sabes, criptonauta?

¿Es posible usar Replace-by-Fee para realizar ataques de doble gasto?

¡CIERTO!

Replace-by-Fee tiene un potencial uso para realizar ataques de doble gasto. Esto debido a que un usuario puede emitir un pago a una dirección con un fee bajo, y luego emitir otro pago a otra dirección propia con un fee mayor. El problema es conocido y de allí la recomendación de siempre esperar porque las transacciones reciban al menos 3 confirmaciones por parte de la red.

¿Cuándo es reemplazable una transacción?

El proceso de Replace by Fee (RBF) está basado en las siguientes normas:

  1. Las transacciones originales no deben estar confirmadas. Y deben indicar su capacidad de reemplazo de forma explícita o mediante herencia. Es decir, si alguna de las entradas de la transacción original posee un número nSequence menor que (0xffffffff – 1). O bien, que sus transacciones antecesoras indiquen la capacidad de reemplazo (herencia).
  2. La nueva transacción creada para el reemplazo sólo puede incluir una entrada no confirmada, si ésta estaba incluida en la transacción original.
  3. La comisión de la nueva transacción es superior a la de la transacción original.
  4. Cuando el número de transacciones a reemplazar no supere las 100 de ellas.
  5. El reemplazo de transacciones es un proceso opcional. Actualmente ninguna wallet viene configurada por defecto para realizar reemplazos. Así como tampoco lo están para realizar reemplazos por herencia.