En este momento estás viendo Prueba de trabajo

¿Qué es prueba de trabajo?

La prueba de trabajo describe un sistema que requiere una cantidad insignificante pero factible de esfuerzo para desalentar los usos frívolos o maliciosos de la potencia informática, como el envío de correos electrónicos no deseados o el envío de ataques de denegación de servicio. Hal Finney adaptó el concepto de dinero en 2004 a través de la idea de «prueba de trabajo reutilizable». Después de su introducción en 2009, bitcoin fue la primera aplicación ampliamente aceptada con la idea de Finney (Finney también adquirió la primera transacción de bitcoin). La prueba de trabajo también es la base de muchas otras criptomonedas.

Prueba de trabajo explicada

Esta explicación se centrará en la prueba de trabajo, ya que opera en la red bitcoin. Bitcoin es una moneda digital respaldada por un tipo de libro de distribución llamado «blockchain». Este libro mayor contiene un registro de todas las transacciones de bitcoins, organizadas en «bloques secuenciales» para que un usuario no pueda gastar ninguna de sus tenencias dos veces. Para evitar alteraciones, el libro mayor es público o «distribuido»; Otros usuarios rechazarían rápidamente una versión modificada.

La forma en que los usuarios sienten la intrusión es prácticamente a través de hashes, largas cadenas de números que crean una prueba de trabajo. Agregue un conjunto de datos separado a través de una función hash (bitcoin usa SHA-256), y solo generará un solo hash. Sin embargo, debido al «efecto cometa», un pequeño cambio en cualquiera de los datos originales resultará en un hash completamente irreconocible. Cualquiera que sea el tamaño del conjunto de datos original, el hash generado por una función en particular tendrá la misma longitud. El hash es una función unidireccional: no se puede usar para recuperar los datos originales, sino para verificar que los datos generados por el hash sean compatibles con los datos originales.

Sería trivial generar cualquier computadora nueva para un conjunto de transacciones bitcoin, por lo que para convertir el proceso en «trabajo», la red bitcoin establece un cierto nivel de «dificultad». Esta configuración se ajusta para que se «corte» un nuevo bloque, que se agrega a la cadena de bloques generando un hash válido, aproximadamente cada 10 minutos. El establecimiento de la dificultad se logra estableciendo un «objetivo» para el hash: el objetivo es menor, el conjunto de hashes válidos es más pequeño y uno es más difícil de generar. En la práctica, esto significa un hash que comienza con una cadena larga de ceros: el hash del bloque # 429818, por ejemplo, es 000000000000000004dd3426129639082239efd583b5273b1bd75e8d78ff2e8d. Ese bloque contiene 2.012 transacciones que contienen poco más de 1.000 bitcoins, así como el encabezado del bloque anterior. Si un usuario cambia el monto de una transacción por 0.0001 bitcoins, el hash resultante no se reconocerá y la red rechazará el fraude.

Dado que un conjunto de datos en particular solo puede generar un hash, ¿cómo se aseguran los mineros de generar un hash por debajo del objetivo? Cambian la entrada agregando un número entero, llamado nonce («número de una sola vez»). Cuando se encuentra un hash válido, se transmite a la red y el bloque se agrega a la cadena de bloques.

La minería es un proceso competitivo, pero hay más loterías que carreras. En promedio, uno generará una prueba aceptable de trabajo cada diez minutos, pero nadie lo sabe. Los mineros se integran para aumentar sus posibilidades de minar bloques, generar tarifas de transacción y, por un tiempo limitado, recompensas de bitcoins recién creados.

La prueba de trabajo hace que sea extremadamente difícil cambiar cualquier aspecto de la cadena de bloques, ya que dicho cambio requeriría volver a extraer cada bloque posterior. También dificulta que un usuario o grupo de usuarios monopolice la potencia de cálculo de la red, ya que la maquinaria y la potencia necesarias para realizar las funciones hash son caras.