El doble gasto es un defecto potencial del dinero digital por el que una misma moneda digital (a la que también se llama token) puede gastarse más de una vez. Esto es posible porque cada moneda consta de un archivo digital que puede duplicarse o falsificarse. Al igual que con el dinero falsificado, el doble gasto conlleva inflación dado que se crean nuevas monedas fraudulentas que anteriormente no existían. Esto devalúa la moneda en relación a otras unidades monetarias, y disminuye la confianza de los usuarios, así como dificulta la circulación y posesión de la moneda. En el caso concreto de Bitcoin, este se protege contra los ataques de doble gasto agregando cada transacción a la blockchain y verificándola después. Para ello, utiliza un sistema descentralizado, basado en una gran red de nodos que confirman la transacción. Cuando más vulnerable es Bitcoin a este tipo de ataques, es durante el inicio de la transacción en la red y por eso, a más veces se confirme, menos probable será el riesgo de sufrir un ataque.
Otros sistemas numéricos inhiben los ataques de doble gasto con la ayuda de terceros que siguiendo unas reglas comerciales, autorizan cada transacción. Ejemplos de ello son las firmas ciegas y, particularmente en sistemas off-line, el secreto compartido.
Para ejecutar un ataque de gasto con éxito han de seguirse los siguientes pasos:
Esta variación del ataque de doble gasto solo se puede producir en caso de transacciones cuyos vendedores aceptan pagos sin confirmación ya que se exponen a que la transacción pueda ser revertida.
El ataque se basa en que a la hora de realizar una transacción podemos realizar al mismo tiempo otra u otras transacciones usando los mismos fondos. El nombre del ataque viene porque se produce una carrera para ver que transacción se acepta primero.
Debe su nombre a Hal Finney que fue el primer receptor de una transacción por medio de una red Bitcoin. Solo funciona si el comerciante acepta transacciones no confirmadas. Requiere la participación de un minero.
El atacante va a ir minando bloques en el bloque que está buscando incluye una transacción que le devuelve algunas de sus monedas sin transmitir la transacción. En cada bloque que genera incluye una transferencia de una dirección A a B ambos controladas por él. Cuando encuentra un bloque hace una compra desde A y cuando se acepte el pago el atacante difunde su bloqueo, la transacción le envía las monedas a él y anulara el pago anterior al comerciante.
Es una combinación del ataque de carrera y el ataque Finney que puede utilizarse incluso en transacciones con una confirmación. Por eso se le conoce como ataque de una conversación.
Este ataque se puede realizar incluso si se necesitan recibir algunas confirmaciones al realizar la transacción. El éxito o fracaso del ataque depende del hashrate que tengamos es decir de la frecuencia de hash que tengamos, pero requiere un gasto considerable en electricidad.
El ataque consiste en hacer una transacción en la que pagamos al vendedor y mientras se va minando un blockchain alternativo en el que se incluye un ataque de doble gasto, una vez se ha esperado un número de confirmaciones y el vendedor vende el producto, si en ese momento se han encontrado más de n bloques entonces se libera la cadena y el atacante recupera su dinero.
Este ataque solo se puede realizar si el atacante controla más del 50% del hashrate, este sería un caso especial del ataque por fuerza bruta que tendría un 100% de probabilidades de éxito ya que el atacante va a poder generar bloques más rápido que el resto de la red.
El número de confirmaciones sería irrelevante pero un mayor número de confirmaciones puede retrasar lo suficientemente al atacante para que este método no sea rentable.
La prevención del doble gasto puede realizarse de dos formas: centralizada y descentralizada.
La base del ataque de doble gasto es que una moneda o partes de ella puedan usarse más de una vez, lo cual en teoría es algo que debería ser imposible. Para solventar este problema se han desarrollado sistemas de verificación que siguen básicamente la siguiente secuencia:
Normalmente se implementa utilizando una tercera parte confiable central que pueda verificar que se haya gastado la moneda (token). Esto normalmente representa un punto único de fallo desde el punto de vista tanto de la disponibilidad como de la confianza.
Desde 2007 existen varios sistemas de prevención del doble gasto mediante la utilización de sistemas distribuidos.[2][3]
La criptomoneda Bitcoin implementó una solución descentralizada a principios de 2009. Emplea un protocolo criptográfico denominado sistema de prueba de trabajo (proof-of-work)para evitar la necesidad de una tercera parte confiable en la validación de transacciones. En vez de ello, las transacciones se guardan en un libro de contabilidad público llamado cadena de bloques (blockchain). Se considera que una transacción es válida cuando está incluida en la cadena de bloques que contiene la mayor cantidad de trabajo computacional. Esto hace que el doble gasto sea «imposiblemente difícil», volviéndolo más robusto a medida que crece la red global.[4]
Error en la cita: La etiqueta <ref>
definida en las <references>
con nombre «kopstein» no se utiliza en el texto anterior.
Error en la cita: La etiqueta <ref>
definida en las <references>
con nombre «prop2007» no se utiliza en el texto anterior.
Escribe un comentario o lo que quieras sobre Doble gasto (directo, no tienes que registrarte)
Comentarios
(de más nuevos a más antiguos)