Finanzas descentralizadas para inquietos. Miguel Caballero
Чтение книги онлайн.
Читать онлайн книгу Finanzas descentralizadas para inquietos - Miguel Caballero страница 17
•Después el timestamp, para determinar la hora exacta en la que se ha creado el bloque.
•A continuación, la raíz de Merkle de las transacciones, es decir, todas las transacciones del bloque se encuentran hasheadas y representados en un árbol de Merkle, incluyendo en el bloque el hash resultante.
•Ahora aparece el nonce, que es simplemente aquel número que los mineros tienen que descubrir para poder anotar el bloque y recibir la recompensa.
•Y, por último, tenemos el HASH del bloque, que sale hacia al siguiente. De aquí el término de que los bloques están encadenados: están unidos siempre por un hash de entrada y salida.
Figura 13. Incorporación de transacciones (hasheadas) en bloques y configuración de cabeceras
Para 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