¿Qué es la prueba de trabajo o proof-of-work (PoW)?

Tiempo de lectura: 8 minutos Que es la prueba de Trabajo o proof of work PoW

La prueba de trabajo, del inglés proof-of-work (PoW), es un proceso que permite a un dispositivo informático demostrar objetiva y cuantificablemente que ha gastado energía. Este medio se utiliza para seleccionar equipos como parte del acceso a un servicio o privilegio.

Entre otras cosas, la prueba de trabajo ayuda a disuadir los ataques de denegación de servicio o limitar el spam. En Bitcoin y otros sistemas de criptomonedas, sirve para evitar la falsificación de la unidad de cuenta (bitcoin en el caso de Bitcoin) y para hacer posible que la red llegue a un consenso respecto a la blockchain.

¿De dónde viene la prueba de trabajo?

El concepto de prueba de trabajo fue descrito por primera vez por Cynthia Dwork y Moni Naor en 1992, en un artículo titulado Pricing via Processing or Combatting Junk Mail. En este artículo se describe cómo se puede utilizar el proceso para combatir el correo no deseado en los buzones de correo electrónico. En 1997, Adam Back implementó la idea con Hashcash, un algoritmo para producir pruebas de trabajo de forma sencilla a través de una función hash, y cuyo uso principal era el correo electrónico.

Se han imaginado varias aplicaciones de prueba de trabajo, en particular la garantía de la integridad de una unidad de cuenta digital. El concepto de dinero b imaginado en 1998 por Wei Dai teorizó el uso de esta técnica para mantener la estabilidad del dinero b en comparación con una canasta de bienes. El mismo año, Nick Szabo conceptualizó el uso del proceso para garantizar la rareza a prueba de manipulaciones de su broca de oro.

El término «proof-of-work» apareció en 1999 bajo la pluma de Markus Jakobsson y Ari Juels en su artículo Proofs of Work and Bread Pudding Protocols. Hal Finney luego recuperó el nombre por su sistema de pruebas de trabajo reutilizables (RPOW) implementado en 2004.

¿Cómo funciona? El ejemplo de Hashcash

El algoritmo Hashcash, diseñado por Adam Back en 1997, es un proceso simple de prueba de trabajo, y también es el utilizado en Bitcoin. Es por eso que nos detendremos aquí en este modelo.

Hashcash se basa en lo que se llama una función hash. Una función hash es una función especial ya que es una función unidireccional, teóricamente imposible de revertir, que toma como entrada un mensaje de tamaño variable y lo transforma en una huella digital de tamaño fijo. Hay una gran cantidad de funciones hash, pero aquí nos centraremos en la función SHA-256 que se utiliza en Bitcoin.

👉 Para obtener más información sobre las funciones hash, puede consultar nuestro artículo sobre el tema: ¿Qué significan hash?

Como se ha dicho, las funciones hash son unidireccionales. Por lo tanto, es teóricamente imposible deducir el mensaje de su huella dactilar, incluso cuando se compara con otras huellas dactilares de mensajes ligeramente diferentes. Por ejemplo, las huellas dactilares de los siguientes mensajes no tienen nada que ver entre sí:

Mensaje Huella (SHA-256)

  1. «Hola» => 9172e8eec99f144f72eca9a568759580edadb2cfd154857f07e657569493bc44
  2. «Hola.» => 441278a3222df4721ec34da47617fc314830ca0951491981ab2fb2de7ae640d2
  3. «hola» => 2cb4b1431b84ec15d35ed83bb927e27e8967d75f4bcd9cc4b25c8d879ae23e18

En Hashcash, el algoritmo de prueba de trabajo consiste esencialmente en encontrar una colisión parcial de la función hash que se considera, es decir, encontrar dos mensajes con una huella dactilar que comienza con los mismos caracteres. Dado que es una función hash unidireccional, esto solo se puede hacer probando las diferentes posibilidades una por una, realizando un trabajo que requiere energía.

Un uso restringido de Hashcash, que se implementa notablemente en Bitcoin, es encontrar una huella digital que comience con un número dado de ceros. Por ejemplo, la siguiente huella digital tiene 4 ceros hexadecimales (16 ceros en binario):

0000bc75a4125119dcd24b8dda99f172af316781f717f432e06b51e7d1770d42

Esta huella dactilar no es trivial, ya que encontrar el mensaje correspondiente requería un trabajo que implicaba calcular todas las posibilidades. Por ejemplo, al tomar el mensaje básico «Hola» y agregarle un número de variable, pudimos probar 9990 combinaciones antes de encontrar una solución:

  1. «Hola 0» => ac93b929780c357e68f57cb8d261a4779b4d098e59fb5a36d2269baa1edd7eeb
  2. «Hola 1» => 0d2156f9ae119fedf71e44e48c963b5605f66eb9573cef97a09dddaa73b6378c
  3. «Hola 2» => a1a382b6b01425d83d81b4f7c5e425120ad6d9ac9df585060c266e6ac241ed12
  4. «Hola 10» => da4f31015f620eacbe869c03aed42f067d5ef73aebd929e2e0a1c49b16eaaf05
  5. «Hola 100» => 34d9ddfafc58c7c12cbe7093945ca4d1154aa239254b6c348433511b8b1adfb9
  6. «Hola 1000» => 74692131e79edaed6d4c3c68e6b7eaa6ee2cc2109a94daaa40a5c3d735f1eaca
  7. «Hola 9990» => 0000bc75a4125119dcd24b8dda99f172af316781f717f432e06b51e7d1770d42

En promedio, tal cálculo requiere probar 65.536 posibilidades (216). Por último, tenga en cuenta que el mensaje generalmente debe incluir indicaciones del contexto en el que se realizó la prueba de trabajo (identificador, fecha, hora, etc.) para demostrar que la prueba de trabajo no se ha utilizado ya en otro lugar.

De esta manera, es posible probar un gasto energético, si es necesario muy grande: cuantos más ceros iniciales sea la huella, más valor tendrá el mensaje correspondiente. Puede ser difícil encontrar una solución, pero aún así es muy fácil verificarla: es esta asimetría la que hace que la fuerza del proceso.

¿Cómo se utiliza la prueba de trabajo en Bitcoin?

Bitcoin se basa en la prueba de trabajo y, como se ha dicho, utiliza el algoritmo Hashcash para calcular esta proof-of-work (PoW). La función hash utilizada es la doble SHA-256 (la función SHA-256 aplicada 2 veces seguidas).

El uso de la prueba de trabajo en Bitcoin tiene un doble papel:

  • Requieren un costo para la fabricación de nuevos bitcoins. Esta es la razón por la que, por analogía con la minería de oro, que requiere energía para extraer nuevas cantidades de mineral, la minería a menudo se conoce como minería cuando se describe la actividad de calcular la prueba de trabajo.
  • Para garantizar que la red pueda llegar a un consenso, es decir, los nodos honestos pueden ponerse de acuerdo sobre quién posee qué y qué transacciones son válidas.

Para esto, Bitcoin establece lo que se llama una blockchain en la que los bloques de transacciones se suceden entre sí, y se agregan cada 10 minutos en promedio. Cada bloque contiene el identificador del bloque anterior que permite vincular los bloques entre sí. Sin embargo, no todos pueden realizar esta operación: es necesario que el menor calcule una prueba de trabajo que demuestre que ha gastado la cantidad de energía requerida por el protocolo.

¿Dónde está la prueba de trabajo en un bloque?

Tomemos el ejemplo del bloque 635.000 de Bitcoin, extraído el 16 de junio de 2020 por la cooperativa Poolin. Para validar el bloque 635.000, el minero tuvo que construir un borrador de este bloque (incluyendo transacciones y datos útiles), indicar el identificador del bloque anterior para hacer el enlace, y variar un número presente en la cabecera llamada nonce. Al variar este nonce (así como otros parámetros en el bloque), el minero pudo probar un número gigantesco de posibilidades para que el hash de encabezado produjera un resultado adecuado, es decir, una huella digital que comenzara con un número suficiente de ceros. Esta huella digital es el identificador de este bloque:

0000000000000000000de8fe48015885c04cf07fc40a3e7b4bb3d32cf0b4e488

El bloque en sí es, por lo tanto, la prueba de trabajo, y el identificador es cómo se verifica. De esta manera, cada miembro de la red puede, a partir de los datos del bloque, asegurarse de que el minero ha encontrado una solución válida.

Además, el número de ceros iniciales en el identificador permite estimar el número medio de posibilidades que tenía el menor para intentar conseguir este resultado. Aquí hay 19 ceros, lo que representa 276 combinaciones, o alrededor de 75.558 mil millones de posibilidades. Este número es enorme, y por una buena razón: el poder de hash de la red Bitcoin en junio de 2020 fue de alrededor de 110 EH/s (110 mil millones de hashes por segundo).

👉 Para saber qué contiene un bloque, no dudes en leer nuestro artículo ¿Qué es un bloque en la tecnología blockchain?

¿De dónde vienen los nuevos bitcoins?

Incluso si la cantidad teórica de bitcoins en circulación se limita a 21 millones, se deben crear estos 21 millones. Desde el 3 de enero de 2009, se ha creado de forma decreciente: 50 bitcoins por bloque en 2009, 25 BTC por bloque en 2012, 12,5 bitcoins por bloque en 2016 y 6,25 BTC por bloque desde mayo de 2020.

Cada vez que se añade un bloque a la cadena, se paga con estos nuevos bitcoins al que lo validó calculando el comprobante de trabajo: el minero incluye en el bloque una transacción de recompensa que permite recuperar estos nuevos bitcoins, así como las comisiones de las transacciones contenidas en el bloque. Esto ayuda a incentivar al minero a proporcionar potencia de cálculo para asegurar el sistema. A largo plazo, se espera que la compensación se base cada vez más en las tarifas de transacción.

Finalmente, para evitar que el aumento de la potencia de cálculo de la red acelere la producción de nuevos bitcoins, se establece un algoritmo de ajuste de dificultad en el protocolo. Cada dos semanas más o menos, este algoritmo cambia la dificultad del PoW para calcular de modo que el tiempo promedio entre cada bloque es de 10 minutos. La minería, algo que era posible hacer con un simple ordenador personal en 2009, ahora solo es accesible para mineros con equipos especializados y optimizados (los famosos ASIC).

¿Cómo llega la red de Bitcoin a un consenso?

Se ha dicho: Bitcoin utiliza la prueba de trabajo para obtener nodos honestos en la red para llegar a un consenso sobre el contenido del libro mayor de transacciones, es decir, la blockchain. Para ello, se utiliza un principio simple: el principio de la cadena más larga que establece que la cadena con la prueba de trabajo más acumulada es la cadena que debe considerarse correcta. Como el nombre de este principio sugiere, esta cadena es casi siempre la cadena que consiste en el mayor número de bloques.

De esta manera, cuando se produce un conflicto en la red, la situación se puede resolver. Cuando, por ejemplo, dos mineros encuentran cada uno un bloque al mismo tiempo, se produce lo que se llama una bifurcación o ramal: las dos cadenas resultantes contienen la misma cantidad de prueba de trabajo y, por lo tanto, ambas son válidas, por lo que la red no puede estar de acuerdo. El conflicto se resuelve en el momento en que un minero encuentra un nuevo bloque (vinculado al bloque que consideraba válido), lo que hace que una cadena sea más larga que la otra.

Consenso de la red Bitcoin

El algoritmo de consenso basado en el principio de la cadena más larga se llama algoritmo de consenso de prueba de trabajo de Nakamoto, en homenaje a su inventor, el creador de bitcoin Satoshi Nakamoto.

Ten en cuenta que el algoritmo de validación de proof-of-work utilizado por Bitcoin no es único. Por lo tanto, hay muchas variantes del principio. Litecoin utiliza, por ejemplo, Scrypt, un algoritmo de prueba de trabajo que también requiere capacidad de memoria. Y Ethereum se basa en Ethash, un protocolo de consenso que selecciona como criterio de selección la cadena más pesada, que pone en equilibrio los bloques invalidados como en el diagrama anterior.

¿Cuáles son las ventajas e inconvenientes de la prueba de trabajo?

Bitcoin utiliza la prueba de trabajo en su modelo de consenso, que lo distingue de los sistemas distribuidos basados en la prueba de autoridad, donde la lista de validadores se define de antemano, o la prueba de participación, donde la selección de validadores se realiza en relación con la posesión de tokens.

Este modelo, descrito por primera vez en el libro blanco de Bitcoin en 2008, es innovador y tiene grandes ventajas sobre los modelos anteriores. Como nada es perfecto, también tiene sus inconvenientes que son mencionados regularmente por los detractores de Bitcoin y las criptomonedas.

Ventajas del consenso de proof-of-work (PoW)

  • Participación en consensos abiertos: los menores empiezan a contribuir y dejan de hacerlo cuando quieren.
  • La robustez de la red: un minero no tiene que conocer todos los demás nodos de la red.
  • La objetividad de la blockchain: cualquiera puede reconstruir la cadena a partir del bloque de génesis y ver que es la correcta.
  • Mejor resistencia a la censura a largo plazo debido a la naturaleza externa de la evidencia: la evidencia no se basa en datos internos, lo que permite anular al censor mediante el despliegue de más equipos de minería.

Inconvenientes del consenso de proof-of-work (PoW)

  • El alto costo de asegurar el sistema, vinculado a un consumo significativo de energía. Esto requiere que los mineros revendan parte de su recompensa directamente para pagar los costos de electricidad y mantenimiento, lo que reduce mecánicamente el precio de la criptomoneda.
  • El impacto ecológico: este consumo de energía contamina. Esto debe ponerse en perspectiva: en Bitcoin, por ejemplo, el 75% de la energía de la minería proviene de energía renovable, que a menudo es una energía de recuperación.
  • Vulnerabilidad a los ataques por el 51%: es posible que un solo actor reúna más de la mitad de la potencia de cálculo para hacer un doble gasto lucrativo. Esta vulnerabilidad se ve acentuada por la frecuente agrupación de mineros en cooperativas mineras (pools mineros). Si Bitcoin es relativamente seguro, este no es el caso de algunos otros sistemas de criptomonedas: por lo que podríamos ver este tipo de ataque orquestado en Ethereum Classic, Bitcoin Gold o Pegnet.

Para encontrar más información sobre la prueba de participación (PoS), no dudes en leer nuestro artículo: ¿Qué es la prueba de participación (PoS)?

También tenemos un artículo sobre las diferencias entre los dos modelos (PoW y PoS).

¡No dudes en publicar en comentario las preguntas que te hagas!

¡Gracias a Carmen del Pozo por contribuir a la redacción de este artículo!

¿Te ha ayudado ❤ este artículo? Siéntase libre de hacérnoslo saber dando una puntuación de 5 🙂

¿Cuál es tu opinión sobre este artículo?
(Votos: 0 Promedio: 0)

Últimas noticias sobre Blockchain

Sobre la autora: Carmen del Pozo

Carmen del Pozo
Deja un comentario

Este sitio web utiliza cookies propias y de terceros para recopilar información que ayude a optimizar tu visita. No se utilizarán las cookies para recoger información de carácter personal. Puedes aceptar o rechazar su uso siempre que lo desees. Encontrarás más información en nuestra política de cookies. Más información

Los ajustes de cookies en esta web están configurados para «permitir las cookies» y ofrecerte la mejor experiencia de navegación posible. Si sigues usando esta web sin cambiar tus ajustes de cookies o haces clic en «Aceptar», estarás dando tu consentimiento a esto.

Cerrar