Finanzas descentralizadas para inquietos. Miguel Caballero
entender mejor el último término introducido, el nonce, debemos introducir el concepto de dificultad. El protocolo de Bitcoin dice que los bloques se deben pasar por un hash siempre, y este hash debe comenzar por un número X de ceros. Por lo tanto, los mineros tendrán que encontrar el número (nonce) que, haciendo el hash del bloque, dicho bloque empiece con el número de ceros necesarios. Antes hemos visto que la función hash es unidireccional, así que la única forma de encontrar tal número es por fuerza bruta. Gastar enormes cantidades de energía para probar números de forma aleatoria hasta encontrar el correcto.
El número de ceros va cambiando para aumentar la dificultad del problema y asegurar que los bloques se minen siempre cada diez minutos. Por ejemplo, si hoy hay cinco mineros y entre los cinco tardan diez minutos en descubrir el nonce, y por tanto en anotar un nuevo bloque, si el día siguiente hay diez mineros, la lógica nos dice que ahora tardarán cinco minutos en encontrar el nonce. Para evitar esto y asegurar que siempre se tarde de media diez minutos por bloque, y así hacer de Bitcoin un sistema monetario con una inflación programada y controlada, se utiliza la dificultad. Esta se basa en modificar el número de ceros con lo que debe comenzar el hash cada nuevo bloque. Si hay muchos mineros, aumentará el número de ceros para hacer más difícil el cálculo, y si hay menos, se reducirá ese número de ceros, siempre asegurando que todos los mineros juntos tarden de media diez minutos en descubrir el nonce.
El hash es como nuestra huella dactilar, es muy fácil encontrarla cuando tenemos nuestro dedo, pero es muy difícil saber a quién pertenece si solo tenemos la huella. El hash funciona igual, es muy fácil para los otros mineros ver si el nonce descubierto por uno de los mineros es correcto. La parte complicada es encontrar el número (nonce) con el cual el hash del bloque empiece con los ceros necesarios. Otra comparación son los sudokus, revisar si está bien no es complicado, pero resolverlos sí lo es.
Figura 14. Aplicación práctica de la función hash aplicando algoritmo SHA-256. https://www.keycdn.com/support/sha1-vs-sha256
Por otro lado, hemos visto que cada bloque empieza anotando el hash del bloque anterior. Esto permite que los bloques estén vinculados matemáticamente. De nuevo por eso se conoce como cadena de bloques, porque estos están ligados como una cadena. Cambiar un dato de la blockchain es prácticamente imposible ya que, cambiando un pequeño dato, el resultado del hash del bloque cambia y por tanto no coincide con el anotado en el bloque siguiente.
3.10. Bitcoin: la red más segura del mundo
Hemos visto cómo funciona técnicamente Bitcoin, ahora iremos viendo cómo cada uno de los mecanismos que hemos comentado sirve como barrera de seguridad de la red. Vamos a poder determinar que Bitcoin es una red segura y que podemos confiar en ella para guardar y transmitir valor.
Caso 1. Realizar una transacción falsa, por ejemplo, enviar bitcoins que no tenemos
Este problema se soluciona en la primera capa de seguridad, los full-nodos. Estos serán los primeros en recibir la transacción y deberán revisar que sea correcta. Al revisar la blockchain y ver que este agente no tiene los bitcoins que dice que quiere enviar, la transacción se cancela. Además, aunque un nodo la dé por buena, no es suficiente, deben ser todos (un 70 % de la red aproximadamente) los que afirmen que la transacción es correcta. Al ser una red descentralizada, las transacciones las revisan todos individualmente; por mucho que un nodo afirme que la transacción es correcta o falsa, cada nodo se asegurará él mismo. Primer posible ataque solucionado.
Caso 2. Cambiar información de bloques pasados
Otro intento por falsificar información y dañar la reputación de Bitcoin (debemos tener en cuenta que el mínimo error del sistema conllevaría una pérdida absoluta de la confianza que la gente ha depositado en Bitcoin) es el hecho de cambiar la información de bloques pasados.
Imaginemos que puedo acceder a la blockchain de Bitcoin y hacer un cambio referente al número de bitcoins que recibí hace una semana. Cada bloque tiene incorporado el hash del bloque anterior. Por tanto, el mínimo cambio provocaría que el hash dejara de coincidir y automáticamente toda la red detectaría y desaprobaría el cambio que se está intentando hacer. En segundo lugar, si se quisiera sacar adelante, antes se debería manipular prácticamente la mayoría de los nodos de la red (aproximadamente unos cuarenta mil). Además debería superar en fuerza computacional a todos los mineros, ya que tendrían que volver a minar todos los bloques para poder conseguir el nuevo hash.
Como aclaración, la red de Bitcoin es, con muchísima diferencia, la red más grande, más segura y con más fuerza computacional del mundo. Podríamos llegar a afirmar que es más factible hackear la NASA, la CIA y la Reserva Federal a la vez de intentar cambiar bloques de la red de Bitcoin.
Caso 3. La red se satura porque hay muchos mineros intentando mentir
Este podría ser uno de los grandes problemas, que la red se saturara porque hay demasiados individuos poniendo freno a las confirmaciones de los bloques, demasiados agentes malignos que buscan atacar el sistema.
El algoritmo de consenso y los incentivos económicos nativos de la red hacen tan poco atractivo a nivel económico la existencia de este tipo agente, que consigue que todos los mineros sean honestos. Si recordamos, un minero maligno estaría continuamente gastando grandes cantidades de electricidad solo para frenar la red, sin recibir nada a cambio. Realmente, si este agente existe, en pocos días acabaría actuando de forma honesta y ayudando a la red a ser más segura, porque al menos actuando así recibe bitcoins a cambio y podría compensar los enormes gastos de estar compitiendo con otros mineros para encontrar el nonce.
Caso 4. Ciertos mineros controlan más del 51 % de la red
Este es uno de los problemas más grandes de todas las blockchains: que un solo individuo o grupo controle más del 51 % y, por lo tanto, tenga suficiente fuerza como para manipularla o cambiar las normas. En el caso de Bitcoin, este ataque podría haber sido posible durante sus primeros años de vida, cuando la red era muy débil y no estaba defendida por miles de ordenadores repartidos por el mundo. Hoy, un ataque del 51 % a Bitcoin significa lo siguiente:
Primero, controlar más de la mitad de los nodos y superar por mayoría a gran parte de los mineros del mundo, lo que equivale a millones de ordenadores funcionando día y noche y gastando barbaridades en electricidad. Además, esto tampoco garantizaría su éxito. Realmente, un ataque así solo podría darse por parte de un gobierno o la unión de varias potencias. El hecho es que, si sucede, sería una gran confirmación de que Bitcoin es útil y que es necesario para tener un mundo más justo; y segundo, este agente solo tendría poder sobre la red durante diez minutos, ya que después, si toda la comunidad está de acuerdo, se puede actualizar el código, romper la cadena en una nueva y expulsarlo. Bitcoin se habría visto muy debilitado por el ataque, pero seguiría existiendo y seguiría creciendo de nuevo. Este fenómeno se conoce como hard fork.
Caso 5. Los mineros pueden cambiar las normas y modificar una nueva política monetaria
Aquí nos volvemos a encontrar en un escenario prácticamente imposible. Los mineros no tienen poder por sí solos para elegir el futuro de Bitcoin. De hecho, esto quedó demostrado con el caso Segwit.
En el caso de Segwit (una actualización que permitía aumentar el número de transacciones en un bloque sin cambiar su tamaño) los nodos anunciaron que a partir de ese momento no aceptarían ningún bloque que no tuviera incorporado Segwit. Se comportaron así porque ciertos mineros se negaban a actualizar el software, ya que no ganaban nada haciéndolo (aunque tampoco perdían). No obstante, los mineros vieron cómo de un día para otro toda su actividad productiva podría desaparecer si no aceptaban los requisitos que plantearon los nodos. Terminaron aceptando la actualización de Segwit porque corrían un grave riesgo de que los nodos dejaran de aceptar sus bloques en la cadena.
Además, tenemos que recuperar el concepto de teoría de juegos: todos tienen intereses diferentes (nodos, desarrolladores, usuarios y mineros) y ninguno puede imponer sus condiciones, ya que suelen ser contradictorias con