¿Qué es el doble gasto?
El doble gasto (double spending) es el riesgo de que el importe de una criptomoneda se gaste dos veces. Se trata de un problema potencial exclusivo de las monedas digitales porque la información digital puede ser replicada con relativa facilidad por personas expertas que entienden la red blockchain y la potencia de cálculo necesaria para manipularla.
Con las criptomonedas, existe el riesgo de que el titular pueda hacer una copia del token digital y enviarlo a un comerciante o a otra parte, conservando el original.
El problema del doble gasto se hizo más importante con el bitcoin, la criptodivisa más popular, ya que es una moneda descentralizada sin ningún organismo central que verifique que se gasta una sola vez. Sin embargo, bitcoin cuenta con un mecanismo basado en registros de transacciones, conocido como blockchain, para verificar la autenticidad de cada transacción y evitar el doble gasto.
El peligro del doble gasto
El doble gasto se produce cuando una red de blockchain se interrumpe y la criptodivisa es esencialmente robada.
- El método más común de doble gasto es cuando un ladrón de blockchain envía múltiples paquetes a la red, invirtiendo las transacciones para que parezca que nunca ocurrieron.
- También hay otra variante que se produce cuando el ladrón envía una copia de la transacción de la moneda para hacerla parecer legítima.
Cómo se produce el doble gasto
Bitcoin requiere que todas las transacciones, sin excepción, se incluyan en la cadena de bloques o blockchain. Este mecanismo asegura que la parte que gasta los bitcoins realmente los posee y también previene el doble gasto y otros fraudes. La cadena de bloques de las transacciones verificadas se va construyendo con los bloques que se van generando cada determinado tiempo.
Las transacciones de Bitcoin tardan en verificarse porque el proceso implica un intenso cálculo de números y complejos algoritmos que requieren una gran cantidad de potencia de cálculo. Por lo tanto, es extremadamente difícil duplicar o falsificar la cadena de bloques debido a la inmensa cantidad de potencia de cálculo que se necesitaría para hacerlo.
Los piratas informáticos han intentado burlar el sistema de verificación de bitcoin utilizando métodos como la superación del mecanismo de seguridad de la cadena de bloques o el uso de una técnica de doble gasto que consiste en enviar un registro de transacciones fraudulentas a un vendedor y otro al resto de la red de bitcoin.
Estas estratagemas solo han tenido un éxito limitado. De hecho, la mayoría de los robos de bitcoins que se han producido hasta ahora no han implicado un doble gasto, sino que se han debido a que los usuarios han almacenado bitcoins sin las medidas de seguridad adecuadas.
El mayor riesgo de doble gasto se produce en forma de ataque del 51%, que puede ocurrir si un usuario controla más del 50% de la potencia de cálculo de minado que mantiene la blockchain de una criptomoneda. Si este usuario controla la cadena de bloques, podrá procesar la transferencia de bitcoins a su cartera varias veces invirtiendo el libro mayor de la cadena de bloques como si las transacciones iniciales nunca hubieran ocurrido.
¿Cómo se puede evitar el doble gasto en una red como la de Bitcoin?
Bitcoin lucha contra el “doble gasto” mediante un mecanismo de consenso conocido como prueba de trabajo (PoW).
Esta prueba de trabajo es llevada a cabo por una red descentralizada de “mineros” que no sólo aseguran la fidelidad de las transacciones pasadas en el libro de contabilidad de la cadena de bloques, sino que también detectan y evitan el doble gasto.
La cadena de bloques en la que se basa una moneda digital como el bitcoin no es capaz de evitar el doble gasto por sí sola. Más bien, todas las diferentes transacciones que involucran a la criptodivisa en cuestión se publican en la cadena de bloques, donde se verifican por separado y se protegen mediante un proceso de confirmación. En el caso del bitcoin y de muchas otras criptodivisas, las transacciones que han sido confirmadas de esta manera se vuelven irreversibles; se publican y se mantienen a perpetuidad.
Bitcoin fue la primera gran moneda digital en resolver el problema del doble gasto. Lo hizo implementando este mecanismo de confirmación y manteniendo un sistema de libro mayor común y universal. De este modo, la cadena de bloques de Bitcoin conserva los registros de las transacciones con sello de tiempo que se remontan a la fundación de la criptomoneda en 2009.
Imagina que tienes 1 BTC e intentas gastarlo dos veces en dos transacciones distintas. Podrías intentar hacerlo enviando el mismo BTC a dos direcciones de monedero bitcoin distintas. Ambas transacciones pasarán al conjunto de transacciones no confirmadas.
- La primera transacción se aprobaría a través del mecanismo de confirmación y se verificaría en el siguiente bloque. Sin embargo, la segunda transacción sería reconocida como inválida por el proceso de confirmación y no sería verificada.
- Si ambas transacciones se sacan del pool para su confirmación simultáneamente, la transacción con el mayor número de confirmaciones se incluirá en el blockchain, mientras que la otra se descartará.
Esperar 6 confirmaciones
Aunque esto resuelve eficazmente el problema del doble gasto, no está exento de problemas. Por ejemplo, el destinatario de la segunda transacción (fallida) no tendría un aviso del fallo de la transacción en sí, y sin embargo esa persona no recibiría el bitcoin que había previsto. Por ese motivo, esta establecido que debemos esperar al menos 6 confirmaciones de una transacción para asegurarnos de que es completamente fiable (lo que significa que se añadieron seis bloques de transacciones subsiguientes a la cadena de bloques después de la transacción en cuestión). En este punto, el comerciante puede asumir con seguridad que la transacción es válida.
Red distribuida
Quedan otras vulnerabilidades en este sistema que podrían permitir ataques de doble gasto. Por ejemplo, si un atacante es capaz de controlar al menos el 51% de la potencia de la red, puede cometer un doble gasto. Si un atacante consiguiera controlar de algún modo esta cantidad de potencia computacional, podría invertir las transacciones y crear una cadena de bloques privada y separada. Sin embargo, el rápido crecimiento de bitcoin ha asegurado prácticamente que este tipo de ataque sea imposible.
Explicación de PoW y la “minería
En la práctica, la forma en que los usuarios detectan las manipulaciones, como un intento de doble gasto, es a través de los hashes, largas cadenas de números que sirven como prueba de trabajo (PoW). Si se somete un conjunto de datos a una función hash (bitcoin utiliza SHA-256), sólo se generará un hash. Sin embargo, debido al “efecto avalancha”, incluso un pequeño cambio en cualquier parte de los datos originales dará lugar a un hash totalmente irreconocible. Sea cual sea el tamaño del conjunto de datos original, el hash generado por una función determinada tendrá la misma longitud. El hash es una función unidireccional: no se puede utilizar para obtener los datos originales, sólo para comprobar que los datos que generaron el hash coinciden con los datos originales.
Generar cualquier hash para un conjunto de transacciones de bitcoin sería trivial para un ordenador moderno, así que para convertir el proceso en “trabajo”, la red de bitcoin establece un cierto nivel de “dificultad”. Esta configuración se ajusta para que un nuevo bloque sea “minado” - añadido a la cadena de bloques mediante la generación de un hash válido - aproximadamente cada 10 minutos. El ajuste de la dificultad se realiza estableciendo un “objetivo” para el hash: cuanto más bajo sea el objetivo, más pequeño será el conjunto de hashes válidos y más difícil será generar uno. En la práctica, esto significa un hash que comienza con una larga cadena de ceros: el hash del bloque #429818, por ejemplo, es 000000000000000004dd3426129639082239efd583b5273b1bd75e8d78ff2e8d. Ese bloque contiene 2.012 transacciones que implican algo más de 1.000 bitcoins, así como la cabecera del bloque anterior. Si un usuario cambiara el importe de una transacción en 0,0001 bitcoin, el hash resultante sería irreconocible y la red rechazaría el fraude.
Dado que un conjunto de datos determinado sólo puede generar un hash, ¿cómo se aseguran los mineros de generar un hash por debajo del objetivo? Alteran la entrada añadiendo un número entero, llamado nonce (“número utilizado una vez”). Una vez que se encuentra un hash válido, se transmite a la red y el bloque se añade a la cadena de bloques.
La minería es un proceso competitivo, pero es más una lotería que una carrera. Por término medio, alguien generará una prueba de trabajo aceptable cada diez minutos, pero nadie sabe quién será. Los mineros se agrupan para aumentar sus posibilidades de minar bloques, lo que genera tasas de transacción y, durante un tiempo limitado, una recompensa de bitcoins recién creados.
La prueba de trabajo hace que sea extremadamente difícil alterar cualquier aspecto de la cadena de bloques, ya que dicha alteración requeriría volver a minar todos los bloques posteriores. También dificulta que un usuario o grupo de usuarios monopolice la potencia de cálculo de la red, ya que la maquinaria y la energía necesarias para completar las funciones hash son caras.