Bitcoin: Desglosando el sueño de Satoshi Nakamoto - Parte 11: Cálculos Bienvenidos a la décima primera entrega de nuestra serie sobre el *whitepaper* de Bitcoin, donde seguimos explorando la visión de Satoshi Nakamoto para un sistema de dinero electrónico descentralizado. En esta ocasión, abordaremos la sección 11, titulada "Calculations" (Cálculos). Esta sección es más técnica y extensa, ya que incluye fórmulas y un algoritmo para analizar la seguridad de Bitcoin frente a un posible ataque. Sin embargo, la explicaremos de manera clara y sencilla, evitando jerga complicada para que cualquiera pueda entender cómo Bitcoin protege su red. ¿Qué Tan Seguro es Bitcoin Frente a un Ataque? Satoshi dedica esta sección a analizar qué pasaría si alguien intenta atacar la red de Bitcoin creando una cadena de bloques alternativa más rápida que la cadena honesta (la que sigue las reglas). Este tipo de ataque podría permitirle a un atacante, por ejemplo, revertir una transacción para recuperar dinero que ya gastó. Sin embargo, Satoshi explica que Bitcoin está diseñado para hacer que este ataque sea extremadamente difícil, siempre que la mayoría de los nodos sean honestos. El Escenario: Una Carrera Entre Cadenas Imagina que la blockchain de Bitcoin es como una carrera entre dos equipos: los **nodos honestos**, que siguen las reglas y construyen la cadena oficial, y un **atacante**, que intenta crear una cadena alternativa para engañar a la red. Satoshi describe esta competencia como un **paseo aleatorio binomial**, un concepto matemático que podemos entender como una especie de juego de azar: Cada vez que se añade un bloque a la cadena honesta, esta avanza un paso (+1). Cada vez que el atacante añade un bloque a su cadena alternativa, la diferencia se reduce un paso (-1). El objetivo del atacante es alcanzar a la cadena honesta, pero esto es difícil porque los nodos honestos, en conjunto, suelen tener más poder computacional (gracias a la prueba de trabajo). Satoshi compara este escenario con el **problema de la ruina del apostador**: un jugador con un déficit intenta alcanzar el punto de equilibrio jugando muchas veces. Aquí, el atacante intenta superar un déficit de bloques para igualar la cadena honesta. Las Probabilidades: ¿Puede el Atacante Ganar? Satoshi introduce algunas variables para calcular la probabilidad de que un atacante alcance a la cadena honesta: **p**: La probabilidad de que un nodo honesto encuentre el próximo bloque. **q**: La probabilidad de que el atacante encuentre el próximo bloque. **z**: El número de bloques de ventaja que tiene la cadena honesta. Si **p > q** (es decir, los nodos honestos tienen más poder computacional), la probabilidad de que el atacante alcance a la cadena honesta disminuye **exponencialmente** a medida que aumenta **z** (la ventaja en bloques). En otras palabras, cuanto más larga es la cadena honesta, más difícil es para el atacante superarla. Satoshi proporciona una fórmula para calcular la probabilidad de que el atacante alcance a la cadena honesta desde **z** bloques atrás: Si **p ≤ q** (el atacante tiene tanto o más poder que los nodos honestos), la probabilidad de alcanzarla es **1** (100%). Si **p > q**, la probabilidad es **(q/p)^z**, que se hace más pequeña a medida que **z** crece. Por ejemplo, si el atacante tiene menos poder computacional (digamos, q = 0.1 y p = 0.9), la probabilidad de alcanzarla desde 5 bloques atrás es muy baja, y desde 10 bloques atrás, es prácticamente nula. ¿Cuánto Tiempo Debe Esperar el Receptor? Ahora, Satoshi aborda un caso práctico: ¿cuánto tiempo debe esperar el receptor de un pago para estar seguro de que el remitente (un posible atacante) no puede revertir la transacción? Por ejemplo, imagina que María le paga $10 a Pedro, pero luego intenta crear una cadena alternativa para recuperar ese dinero. Para evitar que el atacante prepare una cadena alternativa con anticipación, el receptor (Pedro) genera un nuevo par de claves y le da la clave pública al remitente (María) justo antes de la transacción. Esto asegura que María no pueda trabajar en una cadena alternativa hasta que la transacción se envíe. Una vez que la transacción está en un bloque y se añaden **z** bloques después, el receptor puede estar más seguro. Satoshi calcula la probabilidad de que el atacante aún pueda alcanzar a la cadena honesta usando una distribución de Poisson, que modela el progreso esperado del atacante. La fórmula es un poco compleja, pero el resultado es claro: la probabilidad de un ataque exitoso disminuye rápidamente a medida que se añaden más bloques. El Algoritmo: Calculando la Probabilidad Satoshi incluye un fragmento de código en C para calcular la probabilidad de que un atacante alcance a la cadena honesta. Vamos a explicarlo sin entrar en detalles técnicos: ¿Cómo Funciona el Código? Imagina que estás tratando de calcular las probabilidades de que un corredor (el atacante) alcance a otro que lleva ventaja (la cadena honesta). El código hace lo siguiente: **Entradas**: **q**: La probabilidad de que el atacante encuentre un bloque (por ejemplo, 0.1 si tiene el 10% del poder computacional). **z**: El número de bloques de ventaja que tiene la cadena honesta (por ejemplo, 5 bloques). **Cálculos iniciales**: Calcula **p**, la probabilidad de que los nodos honestos encuentren un bloque (p = 1 - q). Si q = 0.1, entonces p = 0.9. Calcula **lambda**, que representa el progreso esperado del atacante, ajustado por la ventaja de la cadena honesta. Es como estimar cuánto puede avanzar el atacante en promedio. **Bucle principal**: El código considera diferentes escenarios (desde que el atacante no haya avanzado nada hasta que haya avanzado **z** bloques) y calcula la probabilidad de cada uno usando una distribución de Poisson. Esto es como calcular las chances de que el atacante tenga suerte en diferentes momentos. Para cada escenario, multiplica la probabilidad de ese avance por la probabilidad de que el atacante alcance a la cadena desde ese punto. Luego, resta este valor de una suma inicial (que empieza en 1) para obtener la probabilidad total. **Resultado**: El código devuelve un número entre 0 y 1, que representa la probabilidad de que el atacante alcance a la cadena honesta. Cuanto más pequeño sea este número, más seguro está el receptor de que la transacción no será revertida. Los Resultados: ¿Qué Tan Seguro Está el Receptor? Satoshi proporciona ejemplos de cómo la probabilidad de un ataque exitoso disminuye a medida que la cadena honesta tiene más bloques de ventaja (**z**). Vamos a interpretar los resultados como si estuviéramos mirando una tabla de puntajes: Caso 1: El atacante tiene poco poder (q = 0.1, o 10%) Si la transacción está confirmada por **0 bloques** (recién enviada): P = 1.0 (100% de probabilidad de que el atacante pueda revertirla, porque no hay ventaja). Si está confirmada por **1 bloque**: P = 0.2045873 (20.46%). Si está confirmada por **5 bloques**: P = 0.0009137 (0.09%). Si está confirmada por **10 bloques**: P = 0.0000012 (0.00012%). Esto significa que, con solo el 10% del poder computacional, un atacante tiene una probabilidad insignificante de revertir una transacción después de 5 o 10 confirmaciones. Caso 2: El atacante tiene más poder (q = 0.3, o 30%) Si está confirmada por **0 bloques**: P = 1.0 (100%). Si está confirmada por **5 bloques**: P = 0.1773523 (17.74%). Si está confirmada por **10 bloques**: P = 0.0416605 (4.17%). Si está confirmada por **24 bloques**: P = 0.0001522 (0.015%). Aquí, el atacante tiene más poder, por lo que necesita más bloques (24) para que la probabilidad caiga por debajo del 0.1%. Umbral de Seguridad (P < 0.001 o 0.1%) Satoshi calcula cuántos bloques son necesarios para que la probabilidad de un ataque sea menor al 0.1%: Si q = 0.10: z = 5 bloques. Si q = 0.15: z = 8 bloques. Si q = 0.20: z = 11 bloques. Si q = 0.30: z = 24 bloques. Si q = 0.45: z = 340 bloques. Esto muestra que, incluso si el atacante tiene un poder significativo (hasta el 45%), esperar suficientes confirmaciones hace que el riesgo de un ataque sea prácticamente nulo. En la práctica, esperar **6 confirmaciones** se ha convertido en un estándar para transacciones importantes, ya que ofrece un equilibrio entre seguridad y tiempo de espera. ¿Por Qué Es Importante Esto? Esta sección demuestra que la seguridad de Bitcoin no depende de confiar en una autoridad, sino en matemáticas y en la dificultad de superar el poder computacional de los nodos honestos. La prueba de trabajo asegura que un atacante necesitaría una cantidad enorme de recursos para revertir una transacción confirmada por varios bloques, y las probabilidades están diseñadas para desalentar tales intentos. Esto refuerza la idea de Satoshi de un sistema donde la confianza se reemplaza por cálculos verificables. Además, el enfoque de esperar confirmaciones permite a los usuarios decidir su nivel de seguridad. Para un café, tal vez una o dos confirmaciones sean suficientes; para una compra grande, como un auto, esperar 6 o más bloques es más seguro. En la práctica La sección de cálculos refleja la genialidad de Satoshi al usar matemáticas para proteger un sistema descentralizado. La idea de que los usuarios puedan confiar en la red simplemente esperando unas pocas confirmaciones es elegante y elimina la necesidad de intermediarios. Sin embargo, en la práctica, la concentración de la minería en manos de grandes actores con equipos especializados podría hacer que la suposición de que "los nodos honestos controlan la mayoría del poder computacional" sea menos sólida. Si un pequeño grupo controla la mayor parte del poder, el riesgo de un ataque coordinado podría aumentar, aunque sigue siendo costoso. Además, esperar varias confirmaciones puede tomar tiempo (unos 10 minutos por bloque), lo que podría hacer que Bitcoin sea menos práctico para pagos instantáneos, como los que imaginamos con "dinero en efectivo electrónico". Esto plantea preguntas: ¿sigue Bitcoin siendo tan rápido y accesible como Satoshi soñaba? ¿La concentración de la minería respeta la visión de una red donde la seguridad depende de muchos participantes distribuidos? Te invito a reflexionar: ¿es la seguridad matemática de Bitcoin suficiente para mantener la confianza en un mundo donde la minería está más centralizada? ¿El tiempo de espera para confirmaciones se alinea con la idea de un sistema de pagos directo y eficiente?
Log in to join in Reading is open to everyone. Replying needs an account.
No comments yet