El protocolo de Prueba de Trabajo o Proof of Work, es el más conocido y antiguo protocolo de consenso que consiste en que las partes de una red realicen con éxito un trabajo computacionalmente costoso para acceder a los recursos de dicha red.
El protocolo de Prueba de Trabajo, nos sirve para evitar ciertos comportamientos indeseados en una red. Su nombre proviene del inglés Proof of Work (PoW). Este protocolo funciona bajo el concepto de requerir un trabajo al cliente, que luego es verificado por la red. Normalmente el trabajo solicitado, consiste en realizar complejas operaciones de cómputo.
Estas operaciones que luego son verificadas por la red. Una vez que son aprobadas, se da acceso al cliente para que use los recursos de la misma. Con ello se busca impedir que clientes maliciosos puedan consumir todos los recursos de forma incontrolada. Una situación que puede acabar por denegar el servicio prestado al resto de clientes de la red.
Un ejemplo muy simple de entender es el famoso captcha que se pone cuando se quiere hacer un registro en una web. La web pone este reto que el visitante ha de resolver. Si lo resuelve tendrá acceso al servicio. Esto evita que un atacante pueda crear millones de registros y así colapsar la página web. No obstante, el reto en una comunicación entre ordenadores no puede ser tan complejo. Debe ser solventable, aunque con una complejidad relativa.
La principal característica de esta estrategia es su asimetría. El trabajo por parte del cliente es moderadamente difícil de realizar, pero la verificación por parte de la red es sencilla. Esto quiere decir, que la prueba de trabajo lleva mucho tiempo en producirse y es computacionalmente costosa. Pero verificarla es sencillo, pues la prueba diseña patrones que facilitan la verificación.
Fue precisamente esta característica, la que llamó la atención de Satoshi Nakamoto a la hora de diseñar el Bitcoin. Es por ello que implementó el sistema HashCash (un sistema PoW) en su reconocida criptomoneda.
Algoritmos PoW – Un poco de historia
En el año de 1992, la penetración de Internet ya era bastante importante. Con su llegada, el uso de los correos electrónicos comenzó a masificarse. Pero esta positiva situación traía consigo nuevos problemas. Los sistemas de correo electrónico sufrían de forma recurrente ataques de spam. Estos ataques generalmente deshabilitaban a los servidores y dejaban sin servicios a muchas personas. Era necesario conseguir una solución a este problema.
En el año 1993, los académicos Cynthia Dwork y Moni Naor, reconocieron el problema y trataron de resolverlo. De allí se originó el ensayo “Fijación de precios mediante el procesamiento o la lucha contra el correo no deseado”. En el cual presentaron formas para evitar que los spammers enviarán mensajes masivos.
La idea presentada era la de incluir un costo computacional para poder usar los servicios de correo electrónico. Para ello, Dwork y Naor diseñaron una serie de pruebas que requerían de trabajo con coste de computación. Entre ellas; el cálculo de algunas raíces cuadradas o el uso intensivo de funciones hash. Una vez realizado este trabajo, el usuario debía agregar la información al correo para ser verificada. Si era correcta el correo se enviaba, si no, el correo era rechazado. Este sencillo sistema que disuadía a los spammers de seguir realizando sus ataques. Pero todavía pasaría algún tiempo hasta que el sistema pudiera ser implementado completamente.
La creación de HashCash
Más tarde en el año 1997, salió a la luz el protocolo HashCash creado por el criptonarquista Adam Back. Al igual que en el ensayo anterior, el término “Prueba de trabajo” (Proof of Work) nunca se utilizó en el anuncio de HashCash. Pero Back si utilizó un término muy importante en la tecnología blockchain, el de “Protección de Doble Gasto”, del que David Chaum ya había adelantado en sus trabajos anteriores.
Con HashCash, Back pretendía poner freno a los envíos de spam masivo.
La idea era imponer un coste no monetario al envío de cada correo. Un coste que estaría asociado al cálculo de problemas usando el computador. El principio es sencillo: se calculaba el problema, se adjuntaba a la información del correo y se enviaba. El servidor recibía el correo, verifica la información y lo aceptaba o rechazaba si pasaba la prueba.
Pero el coste computacional también tenía un coste real. El gasto en electricidad causado por el cálculo intensivo era de un céntimo de dólar por cada correo enviado. Quien enviará unos pocos correos al día no notaría nada, pero un spammer si. Enviar millones de correo aumentaría de gran manera la factura de electricidad de esa persona. De esa forma, se desincentiva a los spammer de realizar su actividad maliciosa.
El acuñamiento del término Prueba de Trabajo
Fue finalmente en 1999, cuando Markus Jakobsson y Ari Juels escribieron un documento titulado “Prueba de trabajo y Protocolos de pudin de pan”. Y así se acuñó el término “Prueba de Trabajo”. Jakobsson y Juels afirman que un sistema de prueba de trabajo es:
Este es un protocolo en cual un comprobante demuestra a un verificador que ha gastado un cierto nivel de esfuerzo computacional en un intervalo de tiempo específico. Aunque no se definieron como tales ni se trataron formalmente, las pruebas de trabajo se han propuesto como un mecanismo para varios objetivos de seguridad, incluida la medición del acceso al servidor, la construcción de cápsulas de tiempo digitales y la protección contra el envío de correo no deseado y otros ataques de denegación de servicio.
Markus Jakobsson y Ari Juels
Proof of Work and Bread Pudding Protocols (1999) – Pág 2
Características del protocolo PoW
- Es un protocolo muy seguro. La Prueba de Trabajo garantiza grandes niveles de seguridad, si la red está formada por miles de mineros. De hecho, mientras más mineros más segura es la red. Esto lo hace ideal para su uso en la formación de enormes redes distribuidas.
- Es sencillo y muy fácil de implementar algorítmicamente. Una de las principales ventajas de PoW es que es muy sencillo de implementar. Esta facilidad se traduce en el fácil mantenimiento de los software que hacen uso del mismo. Además de permitir auditorías de forma mucho más sencilla con el fin de mantener la seguridad de la red.
- Fácilmente adaptable a las necesidades de hardware, pudiéndose diseñar resistencia a determinados equipos (ASIC, GPU, FPGA, CPU). Otra ventaja del protocolo es su adaptabilidad a la tecnología. Se puede hacer más fácil o difícil, con el fin de adaptarlo a los avances tecnológicos. Permitiendo que la evolución del hardware no deje atrás la dificultad de minado. Que por ende termina centralizando el poder minero en quienes tienen hardware más nuevo y poderoso.
- Excelente capacidad de resistencia a ataques de Denegación de Servicios. La principal razón de la creación de los protocolos PoW fue; evitar la denegación de servicios. Una tarea que cumplen a la perfección y que han mejorado mucho los actuales esquemas del protocolo.
- El sistema consume una gran cantidad de energía eléctrica. El intensivo trabajo computacional de PoW necesita de grandes cantidades de energía eléctrica. Estimaciones ubican que el consumo asciende a los 24 Teravatios de energía al año y seguirá ascendiendo a medida que se necesite más potencia para realizar este intensivo trabajo.