Saltar al contenido
buybitcoinsmart

Glosario / Transacciones y comisiones

Replace-by-fee

También se conoce como RBF, Full-RBF o Reemplazo por comisión.

¿Qué es el replace-by-fee?
El replace-by-fee permite reemplazar una transacción sin confirmar por una versión de sí misma que paga más, y las versiones modernas de Bitcoin Core retransmiten ese reemplazo tanto si la original lo señalizó como si no.

Se especifica en el BIP-125.

Las estimaciones de comisión quedan obsoletas, así que bitcoin permite que un remitente reescriba un pago que todavía no se ha minado. El reemplazo debe volver a pagar la comisión completa de la transacción original más al menos un satoshi adicional por byte virtual, así que aumentar la comisión nunca sale gratis. Para usted, la regla práctica es tajante: nada sin confirmar está liquidado, y solo el remitente puede aumentar la comisión.

Cómo funciona

El reemplazo es una política de retransmisión, no una regla de consenso, y por eso su comportamiento ha cambiado dos veces sin ninguna bifurcación.

BIP125 definió la versión opcional, y Bitcoin Core la incorporó en la 0.12.0, el 23 de febrero de 2016. Un remitente señalizaba su disposición a que la transacción se reemplazara poniendo el número de secuencia de al menos una entrada en 0xfffffffd o menos, y entonces los nodos retransmitían una transacción en conflicto que pagara más. Las billeteras que no activaban el indicador producían pagos que sus propios usuarios no podían arreglar.

Esa distinción ha desaparecido. La versión 28.0 de Bitcoin Core, publicada en octubre de 2024, cambió a activado el valor predeterminado de la opción -mempoolfullrbf, así que un nodo bien conectado retransmite ahora una transacción en conflicto que paga más, independientemente de lo que haya señalizado la primera transacción. Cualquier pantalla de billetera que siga prometiendo que un pago no señalizado "no se puede reemplazar" describe una red que ya no existe.

Cuatro condiciones deciden si un nodo acepta la nueva versión, y existen para impedir que el reemplazo se use para inundar la red con reescrituras gratuitas:

  • El reemplazo debe pagar una comisión absoluta más alta que la de todas las transacciones que expulsa, no simplemente una comisión por vB más alta.
  • También debe pagar un monto adicional de al menos la comisión incremental de retransmisión, que por defecto equivale a 1 satoshi por byte virtual multiplicado por el tamaño de la nueva transacción.
  • No puede incorporar entradas sin confirmar que la original no gastara ya.
  • No puede expulsar más de 100 transacciones a la vez, contando los descendientes de todo aquello con lo que entra en conflicto.

La regla de la comisión absoluta es la que sorprende a la gente. Un reemplazo que reduce una transacción grande a otra más pequeña con una mejor comisión por vB puede ser rechazado igualmente, porque el total de la comisión bajó. Tenga en cuenta también que usted paga la nueva comisión, no las dos: la original se descarta y nunca se mina, así que la comisión anterior nunca se cobra.

Bitcoin Core ofrece esto como la llamada RPC bumpfee, y la mayoría de las billeteras de escritorio lo presentan como un botón con la etiqueta "increase fee" (aumentar la comisión) o similar. El mecanismo habitual consiste en reducir la salida de cambio en el monto de la comisión adicional, y por eso a un pago que envió todo un saldo sin dejar cambio no se le puede aumentar la comisión sin añadir otra entrada.

Por qué importa cuando compra bitcoin

El reemplazo pasa a ser problema suyo en el momento en que usted retira fondos de un exchange a su propia billetera, o envía desde esa billetera a otra persona.

Enviar desde su propia billetera es el caso bueno. Si eligió una comisión por vB a las 2 de la madrugada y la mempool se despertó, abra la transacción y aumente su comisión. Elija una billetera que ofrezca el botón antes de necesitarlo: es una funcionalidad normal en Bitcoin Core, Sparrow, Electrum y Trezor Suite, y una funcionalidad ausente en muchas billeteras móviles que eligen la comisión por usted y no le dan ninguna forma de volver atrás.

Retirar fondos de un exchange es el caso malo. El exchange construyó esa transacción, tiene las claves de las entradas y solo él puede reemplazarla. Los servicios de soporte por lo general no lo harán, porque sus lotes de retiros atienden a decenas de clientes a la vez. Su única palanca desde el lado del destinatario es el child pays for parent (el hijo paga por el padre), que funciona porque la moneda que le llega es gastable desde el momento en que existe, aunque no esté confirmada.

Es al recibir cuando el reemplazo cambia la forma en que usted debería actuar. Quien entregue mercancía a cambio de un pago sin confirmar, ya sea vendiendo en un mercado entre pares, en una operación en persona o como operador de un cajero de bitcoin, está confiando en una transacción cuyo reemplazo puede ver cualquiera que tenga una mempool. Que el replace-by-fee completo sea el comportamiento predeterminado significa que el viejo consejo, según el cual una transacción no señalizada podía aceptarse sin riesgo con cero confirmaciones, ha quedado obsoleto. Espere un bloque. Para montos que importen, espere varios.

Aumentar la comisión de un retiro de 3 sat/vB que se atascó

Suponga que envía 0,05 BTC desde su propia billetera con una entrada SegWit nativa y dos salidas, una para el destinatario y otra para el cambio. Esa transacción ocupa alrededor de 141 bytes virtuales y, a 3 sat/vB, lleva una comisión de 423 satoshis.

A la mañana siguiente, la comisión por vB más baja que se está confirmando es de 20 sat/vB y su pago no se ha movido. Usted aumenta la comisión. El reemplazo ocupa los mismos 141 bytes virtuales, así que 20 sat/vB suponen una comisión de 2.820 satoshis, que se descuentan de la salida de cambio y no del monto del destinatario. El piso que impone la política para este reemplazo son los 423 satoshis originales más 1 sat/vB sobre 141 bytes, es decir, 564 satoshis, así que 2.820 lo superan con creces.

Usted no paga 3.243 satoshis. Paga 2.820, y la primera versión muere sin minarse. El destinatario sigue recibiendo exactamente 0,05 BTC, y el ID de transacción cambia, así que si ya le dio a alguien el ID antiguo, tiene que enviarle el nuevo.

Esto se encarece cuando no queda ninguna salida de cambio que reducir. Entonces la billetera tiene que añadir otra entrada, la transacción crece hasta aproximadamente 209 bytes virtuales y los mismos 20 sat/vB cuestan ahora 4.180 satoshis.

Replace-by-fee frente a doble gasto

El replace-by-fee y un intento de doble gasto usan el mismo mecanismo y solo se diferencian en adónde va a parar el dinero. Un reemplazo suele mantener el mismo destinatario y sacar la comisión adicional del cambio. Un doble gasto reescribe las salidas para que las monedas vuelvan al remitente o vayan a otro sitio completamente distinto, y el comerciante que entregó la mercancía no recibe nada.

Ningún nodo puede distinguirlos, porque ambos son simplemente transacciones en conflicto y gana la que paga más. Ese es todo el argumento para esperar confirmaciones en lugar de fiarse de la etiqueta que su billetera pone a un pago entrante. La protección es la profundidad en la cadena, no la intención declarada del remitente.

No confundir con

Preguntas frecuentes

¿Puedo cancelar una transacción de bitcoin con replace-by-fee?

Solo en un sentido limitado, y solo desde la billetera que la creó. Mientras el pago esté sin confirmar, puede reemplazarlo por una transacción en conflicto que gaste las mismas entradas enviándolas de vuelta a usted mismo y pague una comisión más alta. Una vez que se confirma, nada puede deshacerlo.

¿Sigo necesitando activar el replace-by-fee en mi billetera?

Para la red, no hace falta. Desde Bitcoin Core 28.0, de octubre de 2024, los nodos retransmiten una transacción en conflicto que paga más tanto si la original lo señalizó como si no. La opción sigue importando dentro de su propia billetera, porque algunas billeteras solo ofrecen el botón de aumento de comisión en las transacciones que ellas mismas señalizaron.

Mi retiro de un exchange está sin confirmar. ¿Puedo usar replace-by-fee con él?

No. El reemplazo requiere las claves privadas que firmaron las entradas, y en un retiro de un exchange las tiene el exchange. Desde su lado, la herramienta es el child pays for parent: gaste la moneda entrante con una transacción de comisión alta y los mineros procesarán ambas.

Para seguir leyendo

Términos relacionados

Más en la sección Transacciones y comisiones

Leer esta página en inglés