¿Qué es Proof of Work?

Proof of Work hace parte del grupo de protocolos de consenso donde se exige un esfuerzo a los participantes en el sorteo para determinar quién propone el siguiente bloque

Qué son protocolos de consenso

Son sistemas de reglas que permiten la comunicación entre computadoras para compartir información.  Con la llegada de Bitcoin y la financiación descentralizada para el desarrollo de protocolos abiertos, emprendedores han sido inspirados a desarrollar aplicaciones sobre esta nueva base creando nuevos protocolos para funcionar en un mundo descentralizado. 

Las criptomonedas desarrolladas en base a Blockchain tienen la principal característica de esta tecnología: confianza y descentralización, esto va más allá de si los participantes se tienen plena confianza o no. Por esto es necesario llegar a acuerdos sobre la forma como debe operar un proceso, y en informática, estos acuerdos se  refieren a formulas matemática que registran las condiciones, los principios y funcionalidades comunes para todos los participantes, llamadas algoritmos o protocolos de consenso.  

Un protocolo de consenso es el procedimiento mediante el cual se elige a un nodo para proponer un nuevo bloque. Se pretende que esta elección sea aleatoria, como comentábamos en la anterior sección, aunque no todos los participantes tienen la misma probabilidad de ganar el «sorteo», ya que el sistema asignará el premio de minado entre aquellos mineros que tengan mayor poder computacional.  El propósito de esta elección aleatoria es evitar que haya un responsable único de la proposición de bloques que se pueda adueñar, de esta forma, de la cadena. 

Para ello, se desea que todos los participantes puedan ser elegidos para proponer bloques, pero que aquellos que tengan un mayor interés individual en el correcto desarrollo del Blockchain, tengan mayor probabilidad de ganar ese sorteo.

Prueba de trabajo PoW (Proof of Work)

Con el surgimiento del concepto de dinero electrónico introducido por David Chaum  en 1983, se conoció también la propuesta de un servidor central confiable que evitaba un posible doble gasto. Para evitar los riesgos de privacidad de los individuos producidos por este servidor, y para asegurar el uso seguro del dinero electrónico, Chaum introdujo una firma ciega para evitar enlazar las firmas del servidor central, la cual representa la moneda, pero manteniendo el servidor central para evitar el doble gasto. 

Mucho se trabajó en el desarrollo de alternativas que aumentaran la seguridad en cuanto a servidores para el manejo de dinero electrónico, y al manejo y seguridad de la información.  Con el planteamiento del concepto de seguridad de la información se concluye que el desarrollo de estrategias de seguridad debía enfocarse a implementar medidas preventivas y reactivas que le permitieran a las organizaciones el desarrollo de sistemas tecnológicos con el fin de resguardar y proteger la información, buscando mantener la confidencialidad, la disponibilidad e integridad de datos. 

Desde entonces se han desarrollado muchos sistemas para la protección de las transacciones electrónicas, utilizando la criptografía,  algunos de ellos continúan siendo efectivos y se encuentran vigentes. Entre ellos se encuentra el Secure Sockets Layer(SSL), el Protocolo de Seguridad de Transacción Electrónica(SET), todos enfocados en proteger la confidencialidad de la información, la integridad de la información de pago y la autentificación del comerciante y del poseedor de la tarjeta de crédito.

Pero las fallas en cuanto a la seguridad informática y la seguridad de la información —conceptos que suelen entenderse como una sola cosa pero que no lo son— continuaron y se daban prácticamente de la misma forma para todos los usuarios de servicios informáticos: denegación de servicios(DDoS), ataques de intrusión, propagación de software maligno, por lo que la necesidad de desarrollar sistemas de protección era urgente para todos los sectores.

En medio de todo esto, el protocolo Prueba de Trabajo, Proof of Work, surgió como una medida económica para disuadir denegación de servicio, ataques y otros abusos de servicios, tales como correo no deseado en una red, al exigir al solicitante del servicio la realización de un trabajo, lo cual por lo general significa que el tiempo de procesamiento por una computadora deberá aumentar. 

El concepto fue concebido por Cynthia Dwork, científica informática estadounidense de la Universidad de Harvard  y Moni Naor, un científico informático israelí, actualmente profesor en el Instituto de Ciencia Weizmann,  como se presentó en un artículo de prensa en 1993.  El término «Prueba de trabajo» o POW como tal se acuñó y formalizó por primera vez en un artículo de 1999 de Markus Jakobsson y Ari Juels, ambos reconocidos expertos en ciencias informáticas.

En 1997 apareció Hashcash como el primer sistema de prueba de trabajo, cuya idea fundamental es que los nodos no confiables que intervienen en un sistema deben aportar una prueba de su interés en el sistema. Para ello tienen que demostrar que han dedicado cierta cantidad de recursos, prueba de trabajo.  

A partir de esta idea han ido apareciendo nuevos sistemas que intentan aprovechar el concepto de prueba de trabajo para aplicaciones más generales. En 1998 aparece B-Money de Wei Dai y Bit Gold de Nick Szabo. En 2004 aparece Reusable Proof of Work de Hall Finney, sistemas que, aún con sus debilidades, fueron las primeras aproximaciones efectivas a tener un sistema de trabajo que permitiera el intercambio de valor. 

En 2009 nace Bitcoin, atribuido a Satoshi Nakamoto, convirtiéndose en la primera implementación ampliamente usada de un sistema de dinero electrónico peer-to-peer, que no requiere tener confianza en los pares. En él se reemplaza la firma del servidor central con un mecanismo de firma consensuada, realizada por nodos no confiables a los que se llama mineros, basada en pruebas de trabajo donde los firmantes son incentivados para que actúen cooperativamente y de forma honesta, cuyo funcionamiento y resultados están basados en el PoW.

Cómo funciona Proof of Work

Dentro de este protocolo el usuario del servicio debe realizar algún tipo de trabajo que tenga cierto costo y que sea verificado fácilmente por el servidor, consistente en realizar un cómputo en el ordenador del cliente, para evitar comportamientos indeseados (ataques de denegación de servicio o spam). Para este sistema existen dos clases de pruebas de consenso:

  • Desafío-respuesta: asumen un enlace interactivo directo entre el cliente y el servidor. El servidor elige un desafío en el cual el cliente encuentra una respuesta apropiada en el conjunto, la cual es enviada de vuelta al servidor donde es verificada.  
  • Solución-verificación: no asumen un enlace como en el caso anterior, debido a esto el desafío debe ser auto-impuesto antes de que el cliente pueda buscar una solución, y el servidor debe verificar tanto el desafío elegido como la solución encontrada.

Las funciones utilizadas por los distintos protocolos pueden ser de dos clases:  

CPU-bound donde el cómputo se ejecuta a la velocidad del procesador, que cambia visiblemente en el tiempo siguiendo la ley de Moore, y también de servidores dedicados a dispositivos portátiles. 

Memory-bound donde la velocidad de cómputo depende de la velocidad de acceso a la memoria principal, que a su vez puede estar limitada por latencia o ancho de banda insuficiente, la cual se espera que sea menos sensitiva a las evoluciones de hardware.

Finalmente, algunos sistemas POW ofrecen cómputos de atajo que permiten a participantes que conocen alguna clave, por lo general una llave privada, acceder al servicio generando trabajo mínimo. La idea es que, por ejemplo, un dueño de una lista de correos pueda enviar mensajes a todos los inscritos sin incurrir en un alto costo. Si esta característica es o no deseable depende del escenario en que se use el sistema POW.

Proof of Work hace parte del grupo de protocolos de consenso donde se exige un esfuerzo a los participantes en el sorteo para determinar quién propone el siguiente bloque, y se da una recompensa al ganador. 

El esfuerzo aquí consiste emplear capacidad computacional para encontrar el código hash que valide el bloque anterior. Cuanto mayor es la potencia del ordenador, mayor es el consumo energético y mayor es la probabilidad de obtener el código válido.

Minería de criptomonedas mediante PoW

El proceso se da cuando alguien propone un nuevo bloque sin un código hash, de forma que todos los nodos pueden competir por encontrarlo, solo algunos lo hacen y son conocidos como mineros, ya que al proceso de encontrar el hash se le conoce como minar.  

Este protocolo emplea una gran capacidad computacional para encontrar el hash con lo cual se incurre en un gasto económico y dado que ningún nodo tiene la garantía de ser el primero en encontrarlo, constituye una garantía de seguridad ya que parece poco razonable que un nodo maligno malgaste energía y dinero en ese propósito, más aún teniendo en cuenta que en caso de que ganase el sorteo y propusiera un bloque inválido, el resto de nodos lo rechazarían y se quedaría sin la recompensa.

Para motivar a los mineros benignos a intentar encontrar los hashes válidos, las cadenas de bloques que implementan este método ofrecen una recompensa en forma de criptomoneda al primer nodo que lo encuentre,  y es precisamente este protocolo el utilizado en la minería de Bitcoin.

El valor de la recompensa actual, por cada bloque validado es de 12.5 bitcoins y se valida un bloque cada 10 minutos en promedio. Este método solo es utilizado en cadenas de bloques asociados a criptomonedas. 

En la medida que la red de mineros crece, acumulando mayor poder informático, toma cada vez menos tiempo encontrar la solución y el tiempo de bloque se reduce, con lo cual el cronograma de emisión de la moneda se altera, debido a que cada vez que se procesa un bloque se emiten monedas para recompensar al minero.  En sus inicios, el valor de esta recompensa correspondía a 50 BTC, pero debido a la naturaleza del proceso de minería, ésta ha ido disminuyendo. 

Por otra parte, si la red pierde poder informático, el tiempo de bloque se hace más largo, y esto afecta la estabilidad de la red porque las transacciones tardan más en procesarse. 

Para evitar esto, las redes ajustan periódicamente las condiciones que debe cumplir la función hash, a fin de que el tiempo de bloque se mantenga constante. En otras palabras, la red hace ajustes de dificultad para mantener el tiempo de bloque constante ante el posible crecimiento o decrecimiento de la red de mineros.

Enorme gasto de energía

Uno de los argumentos esgrimidos en contra de este protocolo es precisamente la gran cantidad de energía empleada, o desperdiciada según muchos, al realizar el proceso de minado de bloques, aunque no hay que olvidar que este proceso no sirve solamente para determinar quién propone el siguiente bloque sino que también redunda en la seguridad de la cadena, ya que si alguien modifica algo en un bloque tanto ese bloque como todos los posteriores pasarán a tener un hash inválido que necesita ser minado de nuevo. 

Por tanto, si alguien consiguiese modificar la cadena de bloques tendría que volver a minar de nuevo no solo ese bloque sino todos los posteriores, y tendría que hacer eso en cada copia de la blockchain que esté en propiedad de cada nodo.

Esto representa un grado de dificultad al hacker aún mayor que el que hubieran tenido que superar los mineros iniciales del proceso. Así, quien quisiera corromper la red tendría que gastar tanta energía en hacerlo como la que se gastó en validarla originalmente. Si la dificultad es alta, la energía empleada es mayor pero también lo es la seguridad. 

Por otro lado, también hay que decir que, a partir de un cierto nivel de dificultad en el hash, lo que implica un mayor gasto energético en encontrarlo, la cadena puede considerarse suficientemente segura y la energía extra empleada para obtener hashes válidos de mayor dificultad puede considerarse desperdiciada.  

La razón por la que a pesar de todo se gasta toda esta energía es que la dificultad del hash no se configura en función de cuánta seguridad se pretende conseguir sino de cuál es el tiempo promedio que se pretende que los mineros tarden en minar. 

Es decir, como los mineros compiten por encontrar el hash para cada bloque, si se fijase una dificultad de minado que aportase suficiente seguridad para la cadena, entonces cuando los mineros aumentasen en número o incrementasen sus recursos los bloques se minarían cada vez más rápido y por tanto estarían más vacíos, contendrían menos transacciones. 

Lo cual no es tan importante, de forma que lo que se fija es el tiempo promedio que se desea que tarden los bloques en ser minados, por ejemplo en la minería de Bitcoin son 10 minutos y cada 2 semanas aproximadamente se recalcula la dificultad de minado de forma que se satisfaga ese requisito.

En el uso personal esto no es tan relevante porque las cantidades son muy pequeñas, pero la minería es una actividad intensiva que requiere el uso permanente de toda la capacidad de procesamiento de la máquina.

Para tener una idea aproximada de la energía consumida en los procesos de minería, el consumo anual de electricidad empleado en Bitcoin es de 39.03 TWh, que es del mismo orden que los 39 TWh aproximados que se necesitan para abastecer energéticamente a un país del tamaño de Perú el pasado año. 

Ventajas y desventajas

Con la experiencia de uso de los algoritmo de prueba de trabajo, especialmente en Bitcoin, se ha argumentado que el algoritmo elegido sería mejor si cumpliera ciertas restricciones:

  • Resistencia frente a tecnologías ASIC. En Bitcoin la especialización del proceso de minado, para hacerlo rentable, está provocando que el poder para crear bloques se esté centralizando en aquellos que emplean economías de escala para competir e invierte en tecnologías ASIC. Esto provoca la centralización del poder de producción de bloques en entidades externas. Por este inconveniente si se quiere usar algoritmos de prueba de trabajo es bueno que sean resistentes a la tecnología ASIC.
  • Prueba de trabajo útil del inglés Proof-Of-Useful-Work. En Bitcoin la cantidad de trabajo computacional que hoy día se gasta en el proceso de minería es extraordinario. Se estima que se han gastado varios cientos de megawatios. Por eso se plantea usar algoritmos de consenso por prueba de trabajo de tal forma que el trabajo que se realice se pueda aprovechar para obtener algún beneficio. Por ejemplo el algoritmo de consenso de Primecoin que buscan primos con ciertas características y de Permacoin, basado en almacenamiento distribuido de información dando lugar a la llamada prueba de almacenamiento del inglés proof-of-storage o prueba de recuperación del inglés proof-of-retrievability.

La minería por prueba de trabajo ha sido la primera en establecerse y en la actualidad es la más extendida y desarrollada.  Es el protocolo utilizado para minar Bitcoins, Litecoin y el que utilizó Ethereum antes de implementar el Proof of Stake, o pruepa de participación.

La seguridad de este protocolo está probada y respaldado por el valor de mercado de las tres criptomonedas mencionadas, el cual es de cientos de millones de dólares, y ninguna de ellas ha podido ser atacada jamás.

Sin embargo, tiene algunos puntos que son objeto de debate. Por una parte, el altísimo consumo eléctrico de estas redes atenta contra la necesidad de preservar los recursos naturales del planeta.

Por otra parte, la industrialización y el desarrollo de hardware especializado están creando una tendencia a la centralización, con lo cual se pierde la naturaleza fundamental de esta tecnología.

Finalmente, tiene dificultades para la escalabilidad, es decir, su velocidad para procesar transacciones es limitada, con lo cual se limita el crecimiento de las redes.

Blockchain es una tecnología nueva, que está en desarrollo constante. Hay desarrolladores e investigadores brillantes que día a día trabajan buscando soluciones que la hagan más segura, más eficiente, más escalable y con mayores posibilidades.

Cada vez más son desarrollados nuevos protocolos de consenso que buscan dar soluciones a los inconvenientes de PoW, como es el caso del protocolo de prueba de participación, el cual plantea soluciones a algunos de los problemas comentados, y se han propuesto combinaciones o variaciones para mejorar los resultados.

Los cambios que se implementen en estos protocolos son complejos ya que ponen en riesgo la seguridad de la red, más aún cuando se manejan activos que tienen valor monetario, por lo cual estos sistemas aún deben ser puestos a prueba a fin de conocer mejor su desempeño en las condiciones más desfavorables.

Afortunadamente el avance tecnológico es un proceso constante, en el cual día a día se retan y se superan los límites para lograr mejores resultados.  Muy seguramente la tecnología Blockchain seguirá evolucionando en los próximos años, y genera grandes expectativas de cuáles soluciones se implementarán para que sea más eficiente y para aumentar su aporte a la humanidad.

Artículo anteriorArtículo siguiente

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *