DEFINICIÓN DE PRUEBA DE TRABAJO
La prueba de trabajo (Proof of Work – PoW) es el mecanismo por el cual los usuarios gastan algún recurso por la oportunidad de hacer una actualización del sistema. En el caso de Bitcoin por ejemplo, los nodos deben realizar un esfuerzo computacional consumiendo recursos informáticos y energía eléctrica, para tener el derecho a incluir un bloque en la blockchain. Este trabajo es complejo de realizar pero fácil de verificar.
La PoW es un elemento clave dentro del protocolo de consenso de Bitcoin y su inclusión por parte de Satoshi Nakamoto permitió que finalmente se pudiera contar con una sistema confiable para realizar transacciones sin intermediarios. Y esto lo consigue a pesar de que el sistema esta conformado por nodos que no se conocen entre sí y que son susceptibles de fallar, o incluso de nodos que quieran atacar al sistema.
Sin embargo, la idea de una PoW no es original de Satoshi Nakamoto. En el Libro Blanco de Bitcoin, Satoshi hace referencia a la PoW utilizada por Adam Back en su sistema Hashcash. El problema que Hashcash resolvía era el del correo electrónico basura o spam. Cuando se instalaba este sistema en una computadora, obligaba a ésta a realizar una PoW que tardaba unos pocos segundos, luego de los cuales recién se podía enviar un correo electrónico. Para un usuario normal, una espera de tres segundos para enviar un correo electrónico no es significativa, pero para un spammer que envía miles de correos es una espera insoportable. Este procedimiento fue utilizado por varios fabricantes de software anti-spam, entre ellos Microsoft.
USOS DE LA PoW
La PoW tiene varios usos dentro de una blockchain:
- Protege la red de ataques de hackers. Una vez que se ha realizado la PoW para generar un nuevo bloque, si un hacker alterase parte del contenido del bloque, se generaría una inconsistencia fácilmente detectable por el resto de nodos, por lo que el hacker tendría que volver a realizar una nueva PoW en el bloque alterado y en todos los sucesivos, si existieran, para volverla a hacer consistente. Esto le tomaría bastante tiempo para una sola cadena que sería descartada porque todos los demás nodos tienen la cadena válida. Incluso, si el hacker tuviera bajo su control muchos nodos tendría que hacer las mismas PoW en todos los bloques de todas sus cadenas y tendría que controlar el 50% + 1 de los nodos. Una tarea imposible, por el momento. La PoW permite entonces que la información registrada en la blockchain sea inmutable.
- Da el derecho a votar en la red. Para poder tener el derecho a votar respecto a cuál será el nuevo bloque, no basta con que tengas una identificación en red, debes aportar la energía, el tiempo y el esfuerzo computacional necesario («un CPU un voto») requerido por una PoW para obtener el derecho a crear un nuevo bloque y con ello el nuevo estado de la cadena. Adicionalmente a ello el ganador de la PoW obtendrá el premio mayor de la blockchain, nuevas monedas de la red y las comisiones que vienen con las transacciones.
- Regula la velocidad de emisión de la moneda de la red. Así como en el caso del Hashcash solo se permite enviar un correo cada x segundos, en el caso de una blockchain como Bitcoin por ejemplo, permite programar que cada 10 minutos, que es lo que en promedio se demora la solución de una prueba de trabajo, se liberen al mercado 6.25 bitcoins, en lugar de liberar millones de bitcoins en un solo momento; generando con ello una emisión programada y transparente.
MINERÍA
Dado que la prueba de trabajo o PoW implica dedicar esfuerzo y recursos con la expectativa de obtener algo valioso como el oro, a esta actividad se le denomina minería y a los nodos (computadoras) de la red se les denomina mineros. Los mineros aseguran con su trabajo el funcionamiento continuo de la red y garantizan su seguridad.
Sin embargo, si estás pensando en dedicarte a la minería debes tener en cuenta que actualmente con tu laptop o la computadora de tu casa no podrás competir de ninguna manera. La minería está actualmente dominada por mineros que tienen grandes granjas de computadoras que cuentan procesadores especiales (ASIC) que realizan a gran velocidad los cálculos criptográficos definidos en el protocolo de la red blockchain. La velocidad de procesamiento de hashes (hash rate) mide cuántos cálculos de hash por segundo puede hacer el procesador. Como referencia, una computadora casera puede calcular unos pocos millones de hashes por segundo (MH/s) mientras que un computador ASIC puede calcular 110 terahashes por segundo (TH/s), es decir 110 millones de veces más. Un AntMiner S19 que procesa hashes a esa velocidad, cuesta a la fecha unos US$7,000. Una granja puede tener miles de estos equipos.
Aún hay una forma de participar en minería y es uniéndote a un pool de minería. Los pools son asociaciones de grandes y pequeños mineros que comparten recursos y que por supuesto comparten ganancias. Las ganancias se distribuyen en función de los recursos aportados por cada minero. Actualmente cuatro pools de minería (AntPool, F2Pool, Foundry USA, ViaBTC) controlan más del 50% del poder computacional de Bitcoin , con lo que también obtienen más del 50% de los bitcoins que se crean.
Dada la gran cantidad de energía eléctrica que se requiere para operar estos equipos y la necesidad de mantenerlos a una temperatura baja para una operación óptima, las grandes granjas de minería se ubican en lugares donde la energía eléctrica es barata y donde el clima es frío. Así, la mayor parte está ubicada en la Estados Unidos, Kazajistán, Canadá y Rusia.
Debido a las restricciones impuestas por la China a las criptomonedas, mucha de la actividad de minería de ese país migró hacia otros que empezaron a ganar relevancia. Kazajistán por ejemplo ha visto crecer su participación en el mercado de energía para minería de criptomonedas de 1.4% en el 2019 a 18.1% en el 2021.En el cuadro siguiente se observa la distribución del hash rate mundial, es decir la capacidad de procesamiento para minería que tienen los países, donde es notoria la desaparición del liderazgo de China en beneficio de otros países.
CÓMO FUNCIONA LA PRUEBA DE TRABAJO DE BITCOIN
Se hace referencia a la prueba de trabajo de Bitcoin como un puzzle o problema matemático a resolver, pero en realidad se parece más a una lotería; la explicaremos a continuación.
El reto planteado en el protocolo de Bitcoin para la PoW es obtener un hash SHA-256, o sea un hexadecimal de 64 caracteres, que empiece con un número determinado de ceros.
Actualmente el hash debe empezar con 19 ceros, digo actualmente porque el nivel de dificultad se va ajustando en función de si el reto se está resolviendo más rápido (porque hay más nodos o porque estos se han vuelto más potentes) o más lento, de tal manera que en promedio el tiempo para resolver el reto sea de 10 minutos. Este ajuste se hace cada dos semanas, que es equivalente a decir cada 2016 bloques creados.
Hagamos una analogía para el reto, imaginemos que tenemos una máquina tragamonedas que tiene 64 columnas y 16 figuras posibles en cada una de ellas. Una de las figuras es una manzana. Ganamos el reto si después de jalar la palanca del tragamonedas obtenemos una línea que empieza con 19 manzanas. Ese es el nivel de dificultad del reto, esto implica que en promedio para obtener el resultado esperado las computadoras tienen que hacer 13.44 x 1015 intentos, es decir 13.44 mil billones de intentos.
Si no has leído el post sobre hash, te sugiero que lo leas antes de continuar. Ahora procedamos a explicar cómo se implementa la prueba de trabajo o PoW:
- Primero identificaremos un elemento importante: el nonce. Nonce significa number used only once o número utilizado una sola vez. Es un número que se va variando con cada intento de hash. En nuestra analogía de la máquina tragamonedas sería la ficha que nos permite realizar un nuevo intento.
- El nodo minero conforma primero un bloque a partir de un número de transacciones y una cabecera que contiene: el número de bloque, el hash del bloque anterior, la hora, el resumen de las transacciones y el nonce.
- A partir de toda esta información se calcula un hash utilizando SHA-256:
- Si el hash no cumple el criterio de empezar con los 19 ceros se vuelve a hacer un nuevo intento pero esta vez cambiando el valor del nonce, todo lo demás se mantiene igual.
- Por el contrario, si el hash cumple el criterio, el nodo ha conseguido un bloque ganador y procede a comunicarlo al resto de nodos para su verificación.
- Si los nodos confirman que el hash del nuevo bloque cumple con el criterio definido, algo que es muy fácil de verificar, y también que las transacciones incluidas en el bloque son correctas, incluyen el bloque en la blockchain (votan implícitamente que aceptan el nuevo bloque) y a continuación todos empiezan a trabajar en la creación de un nuevo bloque.
- El nodo minero ganador recibe 6.25 bitcoins y las comisiones incluidas en las transacciones de su bloque.
0 Comments