Saltar al contenido
buybitcoinsmart

Glosario / Privacidad y seguridad

Doble gasto

También se conoce como Gasto doble.

¿Qué es un doble gasto?
Un doble gasto es un intento de hacer que el mismo bitcoin pague a dos personas distintas, logrando que se confirme una segunda transacción que gasta las mismas monedas en lugar de la primera.

El dinero digital es copiable por naturaleza, y detener la copia es el problema que bitcoin fue creado para resolver. Cada moneda es una salida que puede consumirse exactamente una vez, y el registro público resuelve las disputas enterrando una versión bajo bloques: tras seis confirmaciones, aproximadamente una hora, deshacerla exige superar en capacidad de minería a toda la red. Hasta que un pago se confirme, trátelo como una promesa y no como dinero recibido.

Cómo funciona

Gastar bitcoin significa consumir salidas específicas, cada una identificada por la transacción que la creó y su posición dentro de esa transacción. Los nodos completos mantienen un conjunto de todos los UTXO, y la validación es una búsqueda: si la salida que su transacción indica no está en ese conjunto, la transacción es inválida y se descarta, sin importar lo bien firmada que esté.

Eso hace que un doble gasto confirmado sea imposible por construcción. Los casos interesantes ocurren todos antes de la confirmación, y son tres.

El caso común es el reemplazo. Dos transacciones que gastan la misma salida están en conflicto, y solo una puede sobrevivir. Los nodos aceptan la que llega primero y normalmente ignoran la segunda, pero retransmitirán un reemplazo que pague una comisión más alta. Desde Bitcoin Core 28.0, publicado en octubre de 2024, el ajuste -mempoolfullrbf viene activado de forma predeterminada, lo que significa que un nodo retransmitirá una transacción en conflicto que pague una comisión más alta, haya pedido o no la original ser reemplazable. Todo lo que sigue sin confirmar queda expuesto.

El segundo es una carrera. El atacante difunde una transacción al nodo del comercio y una transacción en conflicto al resto de la red en el mismo momento, apostando a que la versión que paga al propio atacante llegue primero a los mineros. No hace falta pagar una comisión extra, solo tener mejor conectividad.

El tercero es una reorganización, que requiere la mayoría del hash rate y se trata en el artículo Ataque del 51 %. Es el único método capaz de deshacer un pago que ya está en un bloque.

El propio código de Bitcoin se ha equivocado en esto exactamente una vez en público. El CVE-2018-17144, revelado en septiembre de 2018, fue un fallo que permitía que una transacción gastara la misma entrada dos veces sin hacer caer al nodo que la verificaba. Bitcoin Core 0.16.3 publicó la corrección en cuestión de días, y no se produjo ningún daño en la cadena, pero es un recordatorio útil de que esta garantía la hace cumplir un software que las personas deben seguir auditando.

Por qué importa cuando compra bitcoin

Los compradores casi nunca son víctimas de un doble gasto. Cuando usted envía dólares o euros a un exchange y recibe bitcoin, el exchange asume el riesgo de liquidación, por eso espera a que haya confirmaciones antes de liberar un retiro y por eso los depósitos muestran un contador de progreso. Una vez que las monedas llegan a una dirección que usted controla, nadie puede volver a gastarlas, porque gastarlas requiere su firma.

La exposición se invierte en el momento en que es usted quien recibe bitcoin. Eso ocurre más a menudo de lo que la gente espera: vender monedas en una operación entre pares, aceptar bitcoin por un trabajo independiente, llevar un comercio que acepta pagos. En todos los casos, el error es entregar mercancía, efectivo o una transferencia bancaria a cambio de una transacción sin confirmar. Espere al menos un bloque y, para montos mayores, espere varios.

También existe todo un género de estafa construido sobre esta frase. Vendedores en aplicaciones de mensajería y sitios de video ofrecen "double spend software", "flash BTC", o herramientas que supuestamente generan monedas gastables a cambio de una comisión. Nada de lo que venden funciona, porque la transacción inválida es rechazada por todos los nodos de la red; el producto es la comisión que usted pagó. Nuestra guía de seguridad cubre la familia de fraudes a la que esto pertenece.

Lightning cambia la forma del problema en lugar de eliminarlo. Los pagos se liquidan en segundos contra el saldo de un canal, de modo que el comercio no necesita esperar bloques, y la pregunta del doble gasto pasa a ser si una contraparte del canal intenta difundir un estado antiguo, algo que las watchtowers (torres de vigilancia) existen para penalizar.

Reemplazar un pago sin confirmar, paso a paso

Reemplazar un pago sin confirmar es la versión barata del ataque, y vale la pena repasarla con números reales.

Alice compra una computadora portátil y paga 0,01 BTC. Su billetera construye una transacción SegWit de una entrada y dos salidas, de unos 141 bytes virtuales, y adjunta 3 sat/vB, una comisión de 423 satoshis. El terminal de la tienda muestra el pago como recibido y la computadora portátil sale por la puerta.

Antes de que llegue un bloque, Alice difunde una segunda transacción que gasta la misma entrada, esta vez enviando las monedas a su propia dirección, con una comisión de 20 sat/vB, es decir, 2.820 satoshis. Los mineros toman la versión que vale más para ellos. Cuando llega el bloque, el pago de la tienda desaparece de la mempool y nunca se confirmará. Alice gastó 2.397 satoshis adicionales, muy por debajo de un dólar a la mayoría de los precios, y se quedó tanto con la computadora portátil como con las monedas.

Nada en esa secuencia es exótico, y no intervino hash rate alguno. La defensa tampoco cuesta nada: espere un bloque, unos diez minutos en promedio, y la ventana de reemplazo se cierra.

Doble gasto frente a replace-by-fee

Replace-by-fee es el mismo mecanismo usado de forma honesta. Cuando su propio pago se queda atascado, usted lo vuelve a difundir con una comisión más alta al mismo destinatario, y la red reemplaza la versión anterior sin problema. Un doble gasto usa esa maquinaria para cambiar quién recibe el pago. La política de retransmisión no puede distinguir entre ambos casos, porque la diferencia está en la intención expresada en las salidas, razón por la que los comercios que aceptan pagos sin confirmar ahora asumen que todos ellos son reemplazables.

Doble gasto frente a maleabilidad de transacciones

La maleabilidad cambia el identificador de una transacción sin cambiar lo que esta paga. Las monedas siguen llegando al destinatario previsto; lo único que queda obsoleto es el txid que usted estaba siguiendo, lo cual en su momento rompió la contabilidad de los exchanges y el sistema de retiros de Mt. Gox en febrero de 2014. SegWit, activado en agosto de 2017, eliminó la maleabilidad de terceros al sacar las firmas fuera de los datos que se convierten en hash para formar el txid. Una transacción alterada por maleabilidad es un problema contable; un doble gasto es un pago que desaparece.

No confundir con

Preguntas frecuentes

¿Puede alguien hacer un doble gasto del bitcoin que ya he recibido?

No, una vez que está confirmado. Revertir un pago ya registrado en un bloque exige superar en capacidad de minería a toda la red, algo que nunca ha ocurrido en bitcoin. Los pagos que siguen sin confirmar en la mempool son otra cuestión y pueden ser reemplazados.

¿Es seguro aceptar un pago con cero confirmaciones?

No, y se volvió menos seguro cuando el replace-by-fee completo pasó a ser la política de retransmisión predeterminada en Bitcoin Core 28.0. Cualquier transacción sin confirmar puede ser reemplazada por otra en conflicto que pague una comisión más alta, así que espere al menos un bloque antes de entregar mercancía o efectivo.

¿Funcionan realmente las herramientas de doble gasto que se venden en internet?

No. Todo producto anunciado como software de doble gasto, flash bitcoin o generador de transacciones falsas es una estafa. Todos los nodos de la red rechazan las transacciones que producen, y el único dinero que se mueve es la comisión que usted pagó al vendedor.

Para seguir leyendo

Términos relacionados

Más en la sección Privacidad y seguridad

Leer esta página en inglés