Problema del doble gasto en Bitcoin ¿Qué es double spending o doble gasto en tecnología descentralizada?

(OroyFinanzas.com) – Satoshi Nakamoto con la creación del protocolo Bitcoin, resolvió un problema fundamental de la tecnología para facilitar pagos entre pares (peer-to-peer o P2P) basados en una red descentralizada sin que nadie pueda gastar sus bitcoins más de una vez y, por lo tanto, evitando lo que se conoce como el problema del doble gasto (double spend en inglés).

La importancia de la confianza en los sistemas de pagos digitales
Hasta la aparición del protocolo Bitcoin no se había podido crear un sistema de pagos descentralizado sin que tuvieran que confiar los miembros del sistema descentralizado el uno en el otro. La cuestión de la confianza es fundamental porque un sistema puede ser malo o ser abusado, pero si todos los miembros que operan en el sistema confían en el sistema puede ser viable, el problema surge cuando se quiere tener un sistema de pagos digitales descentralizados para el mundo entero, porque entonces ya no se puede asumir que no habrá fraude o abusos del sistema si existe la posibilidad.

El problema del doble gasto en sistemas digitales de pago
Cuando damos a otra persona una moneda de un euro o una manzana hemos transferido sin lugar a ninguna duda la propiedad de ese euro o manzana a esa persona y solo podremos recuperarlo si quiere devolvérnoslo voluntariamente o por la fuerza, pero no podremos gastar ese objeto físico de nuevo si no lo recuperamos.

El problema de un fichero digital es que se puede reproducir infinitamente, como ya han descubierto las industrias de los contenidos audiovisuales. Ese es el motivo por el que intentar crear un sistema de pagos digitales tenía que ser centralizado. Pero esto se acaba tras la creación de Bitcoin. Un sistema centralizado de pagos puede ser el de un banco, PayPal o cualquier sistema similar. En un sistema centralizado de pagos aquél en el que todos los participantes confían en un ente central para realizar los pagos entre los miembros/clientes de sus sistema. Eso significa que todos los usuarios confían en que el banco tendrá la capacidad de pagarnos el dinero que hemos depositado cuando lo pidamos. Hay que acordarse de un hecho importante que pocas personas saben o tienen en cuenta, un depósito en un banco no es nuestro dinero sino un crédito que le hemos dado al banco y que el banco podrá honrar mientras sea solvente.

El problema de un sistema de pagos descentralizado es que, para representar una unidad monetaria de un euro de la misma forma que para los ficheros audiovisuales (música, videos, etc) solamente se necesitan bits y, hasta la llegada de Bitcoin, no existía ninguna forma de asegurar esos bits en un sistema descentralizado para que no pudieran ser replicados y gastados de nuevo. A este problema para los pagos en sistemas descentralizados se le denomina el problema del doble gasto. Satoshi Nakamoto consiguió resolverlo con Bitcoin.

El protocolo Bitcoin ha conseguido crear una unidad de cuenta digital descentralizada en una red P2P que no se pueda copiar y replicar infinitamente. En Bittorrent [un sistema para compartir ficheros digitales como peliculas] un fichero que se comparte con otro nodo es una copia completamente idéntica a la del sitio desde donde se descargó y así sucesivamente. Si se descarga un millón de veces por otros ordenadores habrá un millón de copias idénticas y para compartir ficheros audiovisuales en una red P2P eso es una característica deseable.

En cambio con Bitcoin estamos utilizando una red P2P que no comparte ficheros audiovisuales, sino que registra el intercambio de una unidad de cuenta (bitcoin) en un libro contable descentralizado (llamado blockchain) y no queremos que se puedan generar unidades de bitcoins de forma infinita porque no sabríamos si el usuario X ha gastado ya la misma unidad antes. Tampoco queremos que el emisor pueda decidir unilateralmente cómo se gestiona la emisión de bitcoins porque en ambos casos se perdería o confianza o el valor de la moneda por la creación de nuevas unidades. Con el protocolo Bitcoin por ahora nadie ha conseguido copiar al infinito una unidad bitcoin y la red tampoco se ha conseguido corromper por ahora para que alguien pueda crear bitcoins de forma unilateral independientemente de la red.

Un bitcoin (la unidad de cuenta se llama bitcoin con “b” minúscula) no es nada más que un Token (un nombre en inglés para una cadena de caracteres). El protocolo Bitcoin asegura que la reproducción de un Token de Bitcoin en el sistema P2P no sea posible.

¿Cómo asegura el protocolo Bitcoin que no se puedan gastar los mismos bitcoins dos veces?
Bitcoin tiene un libro contable descentralizado, distribuido a través de un programa que se descargan los ordenadores de la red Bitcoin, llamada blockchain (cadena de bloques en español) donde se anotan todas las transacciones hechas con bitcoins para evitar el doble gasto de los mismos. Esta blockchain es pública y puede ser consultado por cualquier persona para comprobar todas las transacciones que se han hecho. Las transacciones que se anotan en la blockchain se anotan por los mineros de Bitcoin.

¿Qué hace un minero en Bitcoin?
Los mineros consiguen registrar transacciones en la blockchain resolviendo problemas matemáticos complejos de un algoritmo llamado SHA-256 que aumenta o reduce la complejidad del problema a resolver según la capacidad computacional total que intenta participar en la red Bitcoin para registrar transacciones. Cuantos más mineros haya, más difícil será resolver los problemas matemáticos.

¿Como se resuelve un problema matemático con SHA-256 para un minero Bitcoin?
Para resolver un problema un minero Bitcoin tiene que probar aleatoriamente diferentes números primos con un ataque de fuerza bruta para conseguir crear un bloque en la cadena de bloques. El incentivo para hacer un ataque de fuerza bruta es la recompensa por conseguir registrar un nuevo bloque en la cadena de bloques que es de 25 bitcoins en la actualidad (los primeros 4 años el premio era de 50 bitcoins por bloque y cada cuatro años el premio se divide por dos). De esta forma se va creando una blockchain (cadena de bloques) que es muy difícil de falsificar por la gran capacidad computacional que se ha utilizado en su creación. Este sistema hace la creacion de nuevos bloques extremadamente difícil, pero la comprobación de la veracidad de los bloques es relativamente sencilla con este sistema. En un artículo que hemos publicado recientemente explicamos en más detalle el funcionamiento de los cálculos con un ejemplo manual para el algoritmo SHA-256.

Un posible ataque para desestabilizar la red Bitcoin es lo que se conoce como el ataque del 51% (51% attack en inglés) y lo describiremos en otro artículo próximamente.

Hasta la actualidad, el protocolo Bitcoin no ha creado posibilidades para hacer ataques de doble gasto por ser de dominio público, excepto una ocasión por un fork (una versión diferente del código Bitcoin) en la que se resolvió el problema rápidamente, pero no obstante existe el riesgo de que eso suceda en el futuro.

¿Cómo se confirma una transacción en un bloque de Bitcoin?
Todas las transacciones antes de ser confirmadas pasan a un estado de limbo en lo que se llama “Unconfirmed Transaction Pool” (Piscina de transacciones no confirmadas en español).

Supongamos que tenemos un bitcoin y decidimos mandarselo a Alicia (Transacción A) y esa transacción pasa al “Unconfirmed Transaction Pool” esperando a ser confirmada. Al mismo tiempo envío el mismo bitcoin a Bob (Transacción B) que tambien va al “Unconfirmed Transaction Pool”. En este caso he gastado el mismo bitcoin dos veces.

Cuando las transacciones se cogen del “Unconfirmed Transaction Pool” y se integran en un bloque por los mineros en la cadena de bloques se comprueban para ser validadas. Asumamos que la Transacción A ha sido seleccionada primero y al ser el propietario de ese bitcoin es aceptada al bloque y insertada en la cadena de bloques por el minero que consiga crear el primer bloque.

Ahora le toca a la Transacción B para ser extraida del “Unconfirmed Transaction Pool”. El protocolo la comprueba y rechaza la transacción porque ya se gastó el bitcoin antes y por tanto no se confirma la transacción.

¿Qué pasa si se procesan las Transacciones A y B al mismo tiempo? En ese caso habrá dos bloques compitiendo para convertirse en el próximo bloque de la cadena de bloques y el primero en conseguirlo se convertirá en el último bloque confirmado con su correspondiente transacción (A o B en este caso).

Por eso se recomienda esperar 6 confirmaciones (o sea 6 bloques diferentes confirmados que se crean de media cada diez minutos) porque en ese tiempo de media cualquier validación simultánea de transacciones que se podría haber producido será resuelto con una probabilidad muy alta. Hasta que no se hayan producido esas seis confirmaciones teóricamente podría cancelarse una transacción que supuestamente hemos recibido aunque en la práctica esto casi nunca ocurre.

Fuente: 99bitcoins.comCornell.edu

© OroyFinanzas.com

loading...

© OroyFinanzas.com

Sobre el autor

OroyFinanzas.com
El equipo de analistas de OroyFinanzas.com y sus autores invitados para fomentar el entendimiento del dinero.

1 Comentario en "Problema del doble gasto en Bitcoin ¿Qué es double spending o doble gasto en tecnología descentralizada?"

  1. Unconfirmed Transaction Pool= grupo de transacciones no confirmadas. En este caso “Pool” significa “grupo”, asi por ejemplo tenemos un “car pool” es un grupo de carros que prestan un srvicio. En nuestro pais por ejemplo usamos el término “pool de carros o de coches”

Comments are closed.

mencionado en: