El padrino del consenso: guía sobre proof-of-work

Este artículo está disponible en los siguientes idiomas:

Author logo
Patrick Dike-Ndulue
Post image

Ideas clave

El artículo repasa los orígenes y la evolución del proof-of-work (PoW), explicando cómo surgió como herramienta para combatir 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 señala 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 descentralización.

Actualmente, las redes descentralizadas utilizan distintos mecanismos de consenso, pero todo comenzó con proof-of-work (PoW). Te llevaremos por la historia de cómo surgió, cómo funciona y por qué sigue siendo uno de los algoritmos fundamentales en Web3.

Al principio, proof-of-work no fue concebido como base para 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” de distintos 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. También 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 una implementación práctica se propuso 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 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 x tal que el hash SHA(x) contuviera N ceros iniciales, e incluir el resultado (proof-of-work) en el encabezado del mensaje.

Para que el correo llegue al destinatario, es necesario verificar que el remitente resolvió el problema criptográfico. Esto puede hacerse 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 se vuelve pública para todos los participantes del sistema. Así, enviar un par de correos no representa un problema, pero para hacer una campaña masiva de emails se requiere 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 (hasta hoy se desconoce si es una persona real o un grupo de desarrolladores) estaba el objetivo de crear un sistema de dinero electrónico descentralizado, independiente de terceros. Permitiría enviar dinero directamente, sin intermediarios como los bancos.

La información sobre 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, marca de tiempo, etc.) se convierten en un código único llamado 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 manera 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 diferente.

Como mencionamos antes, los mineros deben calcular el hash de un bloque para añadirlo a la cadena. Esto en sí mismo no toma mucho tiempo, así que, para evitar que el problema computacional se resuelva demasiado rápido, la red ajusta la dificultad cada 2 016 bloques. Esto representa un periodo de aproximadamente dos semanas. Se hace para asegurar que el tiempo de minería de cada bloque sea de unos diez minutos, lo que permite el funcionamiento estable de la blockchain.

¿Cómo funciona esto en la práctica? Los mineros reciben 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 puede cambiarse? ¿Cómo es posible? Aquí entra en juego el nonce (“number only used once”). Se añade a los bloques y los mineros lo modifican durante los cálculos, obteniendo así un hash distinto. Luego comparan el hash obtenido con el objetivo de dificultad y, si el valor es mayor, cambian el nonce y recalculan el hash. Este proceso se repite hasta lograr una coincidencia (el resultado debe ser igual o menor al hash objetivo), lo que puede suceder 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

Ahora veamos 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 problemas, permite que siga su camino en 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 (dando prioridad a las que ofrecen 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 comunica a todos los participantes de la red. Después, los mineros pasan a trabajar en el siguiente bloque. Al mismo tiempo, cuantos más bloques se agregan a la blockchain después del bloque que contiene nuestra transacción, mayor es el nivel de confirmación de la misma.

En pocas palabras, para que una transacción se considere legítima, la mayoría de los nodos de la red debe estar de acuerdo en que el bloque que la contiene ha sido 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 gasta los mismos fondos dos veces antes de que el sistema confirme la transacción. Los mineros verifican cada transacción para evitar el doble gasto cuando las reciben del mempool.

Es cierto que, en una blockchain PoW, dos mineros pueden minar el mismo bloque. Esto no siempre es un acto malicioso y puede suceder si ambos mineros completan el cálculo casi al mismo tiempo y uno de ellos no recibe la información de que el bloque ya fue minado a tiempo. En ese caso, aparece una cadena paralela a partir del bloque erróneo. Para eliminar la “rama” incorrecta, el mecanismo de consenso compara ambas blockchains y da preferencia 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 unas 7 transacciones por segundo, lo cual es bastante bajo. Por eso, el mempool se llena en momentos de alta demanda y las transacciones con bajas comisiones pueden quedarse atascadas durante horas o incluso días. A primera vista, podría parecer que la forma más sencilla de aumentar la velocidad sería hacer los bloques más grandes para que entren 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 potencia de cómputo para crearlos y, como resultado, solo quedarían en la red los grandes mineros o pools de minería, reduciendo la descentralización.

Si se reduce el tiempo de procesamiento, existe el riesgo de que los nodos de la red no logren alcanzar 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 clave al mismo tiempo: descentralización, seguridad y escalabilidad. Para abordar 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 con PoW. Por ejemplo, Kaspa usa 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 problema más cotidiano: cuanto más poder de cómputo acumula una blockchain, mayor es la complejidad de los cálculos y el consumo de energía necesario para la minería.

Author logo
Autor Patrick Dike-Ndulue

Senior editor covering crypto, onchain equities, and technology.

Author logo
Revisado por Rukkayah Jigam

Writer & editor covering digital assets and product updates.