Bitcoin utiliza la cadena de bloques, que distribuye por la red la historia de todas sus monedas para que cualquiera pueda revisar y tomar medidas en contra del doble gasto.
Antes de profundizar más sobre esta definición, debemos entender que es el doble gasto, así será más’s fácil comprender como esta criptomoneda (y otras similares) consigue hacer frente a este problema.
Contenido
¿Qué es el doble gasto?
El problema del doble gasto nos habla de la dificultad que tiene una red, o los nodos de estas, en controlar y prevenir que alguien pueda gastar más de una vez los mismos fondos.
Si vemos los sistemas financieros tradicionales, estos lo resuelven muy fácilmente al utilizar una entidad central que lo verifica. También pueden hacer uso de terceras partes, como bancos o procesadores de pagos, que junto con las instituciones gubernamentales se aseguran de que todo se mantenga de forma honesta.
Antes de Bitcoin se han intentado crear varias monedas digitales, pero ninguna ha sido capaz de resolver este problema en particular sin perder descentralización (sin confiar en un tercero).
Todo hasta que llego Satoshi Nakamoto, que cito el hecho de confiar en un tercero como el problema que estas criptomonedas tuvieron. La forma que utilizo el inventor para resolver esta dificultad es quizás una de las mejores innovaciones que se han hecho en este mundo, ya que nos ha permitido tener monedas digitales descentralizadas.
¿Cómo Bitcoin hace frente a este problema?
Bitcoin utiliza un libro contable distribuido, una cadena de bloques, para registrar todas las transacciones que ocurren y han ocurrido en la red.
Básicamente, es una base de datos que es replicada por todos los nodos de Bitcoin y que no requiere de una entidad central para su operación. Esta se encuentra compuesta de bloques, que es la estructura elegida para contener las transacciones.
Cadena de bloques
La cadena de bloques es una gran base de datos independientes almacenadas por miles de ordenadores, que conocemos como nodos, en todo el mundo.
Como cada nodo tiene el historial completo de todas las transacciones, y además trabajan en conjunto para mantenerse actualizado de que nuevos bloques y transacciones suceden, es que la red puede funcionar sin una entidad central a la cual recurrir.
Si nos vamos al whitepaper de Satoshi Nakamoto, escrito el 31 de octubre de 2008:
Los nodos pueden salir y volver a unirse a la red a voluntad, aceptando la cadena de prueba de trabajo más larga como prueba de lo que ha sucedido mientras estaban fuera.
Cada nodo en la red almacena de forma independiente una copia de la cadena de bloques, ya que todos los nodos funciona con el mismo protocolo y aceptan los mismos bloques y transacciones de acuerdo a estas reglas preestablecidas.
En caso de que decían aceptar bloques que no coinciden con este protocolo o no aceptar los válidos, entonces formaría una nueva cadena y no serían parte de la red.
Estas reglas especifican los objetivos claros que acerca de que cosas son válidas en la cadena y cuales no.
Por esta razón es que cada nodo contiene la historia completa de las transacciones de Bitcoin, lo cual les permite luego verificar que una moneda no haya sido gastada más de una vez.
De esta forma, cada nodo puede verificar de manera independiente la propiedad de los BTC sin la necesidad de confiar en un tercero.
Marca de tiempo
Una cadena de bloques, como su nombre lo indica, está compuesta de bloques, que a su vez tienen una marca de agua. Esto es muy importante para mantener un ordeno cronológico.
Si dos transacciones intentan gastar los mismos bitcoins, lo que se conoce como un doble gasto, el diseño del protocolo de esta criptomoneda permite que cada nodo pueda decidir objetivamente cual de las dos es válida.
Y además, como no hay una entidad central a la que recurrir, no se puede abrir una disputa para determinar cual es la transacción válida y cual no. El sistema elige la que considera correcta y la otra la descarta, evitando así que alguien pueda cometer este tipo de estafa que tratamos en el artículo.
Cualquier transacción agregada en un bloque, y por consiguiente en la cadena, es considerada como válida. Si alguien intenta crear una transacción que utilice como entrada la misma entrada que otra transacción validada, entonces no será tomada en cuenta por la red.
Las confirmaciones en la blockchain
Una vez que una transacción ha sido integrada a la cadena, se considera inmutable. Sin embargo, sabemos que la transacción no puede ser considerada completamente inmutable hasta que haya obtenido una serie de confirmaciones.
El viaje que sigue una transacción cuando es transmitida por nuestro monedero es primero llegar a la mempool, donde se encuentran aquellas transacciones pendientes de validación.
Luego un nodo minero la elige de esta base de datos de transacciones pendientes y la agrega a un bloque, que posteriormente mina para pasar a obtener una confirmación.
Se podría considerar que ya está validada y que no podrá ser revertida, pero siempre existe la posibilidad de que se encuentren 2 o más bloques en otra cadena de la red y que esta última sea considerada la correcta, desechando el bloque recién minado.
Por eso es que si bien 1 confirmación puede ser vista suficiente por el protocolo, siempre se suele esperar otros bloques que sean minados por encima de este. Los cuales agregan más confirmaciones y hacen más difícil el hecho de que se encuentre una cadena más larga que reemplace a la actual.
El problema de la reorganización
La cantidad necesaria de confirmaciones a esperar está dado en función a la cantidad de fondos que transmitamos. Mientras que para unos pocos dólares o euros, 2 o 3 confirmaciones pueden ser suficiente, para transacciones más grandes requerirán más. Aunque en líneas generales el número promedio es 6.
Como vimos antes, esto se hace por el temor de que un bloque pueda quedar huérfano ante la posibilidad de que se descubra una cadena de bloques más grandes.
En caso de que eso ocurra, todas las transacciones dentro del bloque eliminado perderán su condición de válidas, volviendo a la mempool para obtener de nuevo la confirmación. Situación que se la conoce como reorganización, que aunque suele ser rara, teóricamente y prácticamente es posible.
Es durante este evento que puede suceder un doble gasto. Lo cual con un ejemplo nos ayudara a entender todo el asunto más claramente.
Supongamos que enviamos 0,5 BTC a un amigo. Esta transacción deberá permanecer en la mempool hasta que un minero la tome para confirmarla.
El problema es que nosotros podríamos crear una segunda transición con exactamente los mismos bitcoins pero enviándoselos a otro amigo.
Un caso que puede darse es el de que un minero incluya una transacción y sea validada, haciendo inválida a la otra. Aquí no ocurriría ningún problema, ya que es como debe funcionar la red.
Las complicaciones llegan cuando un minero mina la primera transacción mientras que otro hace lo mismo con la segunda prácticamente al mismo tiempo, lo que genera dos cadenas. Ahora comienza una guerra por ver quien descubre el próximo bloque y sobre cual de las dos cadenas.
En esta situación ambas transacciones son confirmadas, con una 1 sola confirmación.
Supongamos que finalmente se encuentra un bloque sobre la segunda cadena, es ahí cuando la primera se descarta y con ello la transacción. Uno de nuestros amigos obtendría los fondos y el otro no.
Todo este proceso es lo que se conoce como reorganización de la cadena de bloques, y no habría mucho problema en el ejemplo, porque en ese caso nuestro amigo nos haría una visita reclamándonos lo que le debemos.
Sin embargo, en caso de que hagamos esto con dos tiendas, podemos hacernos con ambos productos pagando uno solo. Ahí es donde reside el mayor riesgo del doble gasto para los que aceptan sin esperar las suficientes confirmaciones.
El mejor antídoto para esto es esperar un número alto de ciertas confirmaciones, que tampoco lo sea demasiado como para que no sea poco práctico hacer transacciones Bitcoin.
Con cada nueva confirmación, la posibilidad de una reorganización disminuye exponencialmente. Y es por esto que 6 confirmaciones vuelven a una transacción prácticamente inmutable, lo que quiere decir que es irreversible.
Resumen
- Para resolver el problema, Bitcoin utiliza una cadena de bloques distribuida por toda la red que registra las transacciones.
- Esta solución tecnológica permite que cualquiera pueda ver el historial de cada moneda, y de esta forma tomar las medidas necesarias para que no puedan ser gastadas dos veces.
- Aquellas cadenas de bloques que usen Prueba de Trabajo tienen una manera confiable de determinar la valides y el orden de las transacciones.
- Si una transacción no ha sido agregada a la cadena de bloques, entonces no podemos estar seguros de que no sufra un doble gasto.
Agrega un Comentario