El padrino del consenso: guía sobre proof-of-work
Este artículo está disponible en los siguientes idiomas:
Ideas clave
El artículo recorre los orígenes y la evolución de proof-of-work (PoW), explicando cómo surgió como herramienta contra el abuso de recursos antes de convertirse en la base de la blockchain descentralizada de Bitcoin. Detalla cómo PoW asegura las transacciones y previene el doble gasto mediante acertijos computacionales resueltos por mineros, pero también destaca los desafíos de escalabilidad y consumo energético. Para abordar estas limitaciones, el artículo menciona el desarrollo de capas de blockchain y nuevos mecanismos de consenso que buscan mejorar la eficiencia manteniendo la seguridad y la descentralización.
Hoy en día, las redes descentralizadas emplean distintos mecanismos de consenso, pero todo comenzó con proof-of-work (PoW). Te contamos cómo surgió, cómo funciona y por qué sigue siendo uno de los algoritmos clave en Web3.
En sus inicios, proof-of-work no fue concebido como la base de redes descentralizadas. No tenía relación alguna con las criptomonedas y, de hecho, fue diseñado para proteger a los usuarios de “recursos compartidos” frente a diferentes tipos de abuso. Los creadores del concepto, presentado en 1993, propusieron una solución que limitaba el acceso a un recurso exigiendo a los participantes realizar cálculos complejos. Además, se estableció que los resultados de estos cálculos debían ser fáciles y rápidos de verificar.
La primera versión apta para implementarse en la práctica surgió solo cinco años después, cuando Adam Back creó el proyecto Hashcash, cuyo objetivo principal era combatir el spam. La idea consistía en usar la criptografía para dificultar el envío masivo de correos electrónicos. Antes de enviar cada correo, el remitente debía realizar cálculos complejos —encontrar un valor de x tal que el hash SHA(x) contuviera N bits iniciales en cero— e incluir el resultado (proof-of-work) en el encabezado del mensaje.
Para que el mensaje llegue al destinatario, debe comprobarse que el remitente resolvió el problema criptográfico. Esto puede verificarse rápidamente con un solo cálculo SHA-1 usando una etiqueta preparada previamente. Esta etiqueta la genera el remitente antes de empezar a resolver el problema y queda disponible para todos los participantes del sistema. Así, enviar un par de correos no supone un problema, pero para realizar envíos masivos se necesita una gran capacidad de cómputo.
¿Te suena familiar? Este concepto fue utilizado en 2008 por Satoshi Nakamoto para crear Bitcoin y su blockchain basada en proof-of-work.
Cómo funcionan las blockchains PoW
En el centro de la idea de Nakamoto (aún no se sabe si es una persona o un grupo de desarrolladores) estaba el objetivo de crear un sistema de dinero electrónico descentralizado, independiente de terceros. Permitía enviar dinero directamente, sin intermediarios como los bancos.
La información de las transacciones se almacena en un registro distribuido entre los participantes del sistema. El proceso de secuenciación consiste en agrupar las transacciones en bloques, que tienen un tamaño limitado. Cada bloque debe contener información sobre el bloque anterior. Para ello, todos los datos relevantes (transacciones, hash del bloque previo, sello de tiempo, etc.) se convierten en un código único conocido como hash. Esto se realiza mediante una función hash, que en el caso de Bitcoin es SHA-256. Los “nodos completos” se encargan de gestionar las cadenas, mientras que los nodos mineros participan en la creación de nuevos bloques.
Es importante destacar que la función hash opera de tal forma que, a partir de un mismo conjunto de datos, siempre se obtiene el mismo hash. Incluso el cambio más pequeño genera un hash completamente distinto.
Como mencionamos antes, los mineros deben calcular el hash de un bloque para añadirlo a la cadena. Esto en sí mismo no lleva mucho tiempo, así que para evitar que el problema computacional se resuelva demasiado rápido, la red ajusta la dificultad cada 2 016 bloques, lo que equivale a aproximadamente dos semanas. Esto garantiza que el tiempo de minería de un bloque sea de unos diez minutos, permitiendo el funcionamiento estable de la blockchain.
¿Cómo funciona esto en la práctica? Los mineros reciben los bloques como entrada y calculan el hash. Sin embargo, la red exige que el hash sea menor que un valor determinado. Espera, ¿no dijimos antes que el hash no se puede cambiar? ¿Cómo es posible? Aquí entra en juego el nonce —un número que solo se usa una vez—. Se añade a los bloques y los mineros lo modifican durante los cálculos, obteniendo así un hash diferente. Luego, comparan el hash resultante con el objetivo de dificultad; si el valor es mayor, cambian el nonce y vuelven a calcular el hash. Este proceso se repite hasta lograr una coincidencia (el resultado debe ser igual o menor al hash objetivo), lo que puede ocurrir millones de veces.
Para que te hagas una idea de la magnitud de la tarea, observa el siguiente número:
115792089237316195423570985008687907853269984665640564039457584007913129639936
Esta es la cantidad de combinaciones posibles en el hash SHA-256. Es equivalente al número de estrellas en el universo, ¡115 mil millones de veces!
La cadena de transacciones
Veamos ahora una transacción estándar para entender cómo funciona todo esto. Supongamos que enviamos fondos a alguien en BTC. Tras generar y firmar la transacción con nuestra clave privada, se envía a la red. El nodo completo verifica que sea correcta y, si no hay inconvenientes, la deja avanzar por la red. Otros nodos también realizan comprobaciones y la colocan en la cola de transacciones no confirmadas (mempool).
Los mineros recogen transacciones del mempool (priorizando aquellas que les generen mayores comisiones), las agrupan en un bloque y comienzan a realizar los cálculos. Cuando uno de los mineros resuelve el problema, los nodos completos verifican la solución y, si es correcta, el minero recibe una recompensa. En ese momento, el bloque se considera “minado” y se añade a la blockchain, mientras que la información se distribuye a todos los participantes de la red. Después, los mineros empiezan a trabajar en el siguiente bloque. Al mismo tiempo, cuantos más bloques se añadan a la blockchain después del bloque que contiene nuestra transacción, mayor será su nivel de confirmación.
En pocas palabras, para que una transacción se considere legítima, la mayoría de los nodos de la red deben estar de acuerdo en que el bloque que la contiene fue calculado correctamente.
¿Todo esto es inevitable?
Nakamoto no fue el primero en intentar crear un sistema descentralizado, pero sí el primero en utilizar el mecanismo de consenso proof-of-work. Sin él, sería imposible resolver el problema del doble gasto, que ocurre cuando un remitente utiliza los mismos fondos dos veces antes de que el sistema confirme la transacción. Los mineros revisan las transacciones para detectar doble gasto cada vez que las reciben del mempool.
Es cierto que, en una blockchain PoW, dos mineros pueden minar el mismo bloque. Esto no necesariamente es malicioso y puede ocurrir si ambos terminan el cálculo casi al mismo tiempo y uno de ellos no recibe a tiempo la información de que el bloque ya fue minado. En este caso, surge una cadena paralela a partir del bloque erróneo. Para eliminar la “rama” incorrecta, el mecanismo de consenso compara ambas blockchains y da prioridad a la versión más larga.
Problemas y limitaciones
El mayor problema de PoW —al menos en su forma más pura— es la escalabilidad. Por ejemplo, la blockchain de Bitcoin procesa alrededor de 7 transacciones por segundo, lo cual es bastante bajo. Por ello, el mempool se llena en momentos de alta demanda y las transacciones con bajas comisiones pueden quedar atascadas durante horas o incluso días. A simple vista, podría parecer que la forma más sencilla de aumentar la velocidad sería hacer los bloques más grandes para que quepan más transacciones, o simplemente minarlos más rápido.
Pero no se puede aumentar el tamaño de los bloques sin consecuencias: se requeriría mucha más potencia de cómputo para crearlos y, como resultado, solo los grandes mineros o pools de minería permanecerían en la red, reduciendo la descentralización.
Si se acorta el tiempo de procesamiento, existe el riesgo de que los nodos de la red no logren llegar a consenso antes de que aparezca el siguiente bloque. Por esto, aumentaría el número de “ramas” en la blockchain y sería posible el doble gasto.
Todo esto se resume en el concepto de la trilema de la blockchain, que sostiene que las redes descentralizadas solo pueden ofrecer dos de sus tres beneficios principales al mismo tiempo: descentralización, seguridad y escalabilidad. Para resolver esto en el contexto de PoW, se utilizan capas de blockchain. Estas operan “por encima” del sistema principal y aumentan la velocidad de procesamiento de transacciones.
Además, se están desarrollando nuevos protocolos de consenso que funcionan junto a PoW. Por ejemplo, Kaspa utiliza PoW como mecanismo de seguridad de la red, pero los bloques se agrupan en un grafo acíclico dirigido en lugar de una blockchain, lo que permite a los mineros trabajar en diferentes bloques en paralelo.
Existe también un aspecto más cotidiano: a mayor poder de cómputo acumulado por una blockchain, mayor es la complejidad de los cálculos y el consumo energético necesario para la minería.