Sistema de prueba de trabajo

De Wikipedia, la enciclopedia libre
(Redirigido desde «Prueba de trabajo»)
Saltar a: navegación, búsqueda

Un Sistema de prueba de trabajo o Sistema "POW" (del inglés Proof-Of-Work system), es un sistema que, para evitar comportamientos indeseado (por ejemplo ataques de denegación de servicio o spam), requiere que el cliente del servicio realice algún tipo de trabajo que tenga cierto coste y que es verificado fácilmente en la parte del servidor. Normalmente el trabajo consiste en realizar un cómputo en el ordenador del cliente.[1]

La característica clave de la estrategia es su asimetría: El trabajo debe ser moderadamente difícil (pero factible) por el lado del cliente, pero fácil de verificar por el lado del servidor.[1]

Variantes de sistemas POW[editar]

Existen dos clases de protocolos para los sistemas POW:

  • Los protocolos de desafío-respuesta asumen un enlace interactivo directo entre el cliente y el servidor. El servidor elige un desafío, por ejemplo un elemento de un conjunto con una propiedad específica; luego el cliente encuentra una respuesta apropiada en el conjunto, la cual es enviada de vuelta al servidor, que procede a verificarla. Como el desafío es elegido en el momento por el servidor, su dificultad puede ser adaptada según la carga actual del servicio. El trabajo por parte del cliente está acotado y su varianza es baja.
  • Los protocolos de 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. La mayoría de los casos corresponden a procedimientos iterativos probabilísticos no acotados con alta varianza, como Hashcash.

Más aún, las funciones utilizadas por los distintos protocolos pueden ser de 2 tipos:

  • 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[2] [3] [4] 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 algún secreto, típicamente 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.

Ejemplo de sistemas[editar]

Hashcash[editar]

Hashcash es un método que agrega un string al encabezado de un correo electrónico que prueba que el emisor dedicó un poco de tiempo para calcular dicho string. La idea es que como el emisor le dedicó tiempo a calcular el string y enviar el correo, es improbable que éste sea spam. Por otro lado el receptor puede, con un costo computacional casi nulo, verificar que el string es válido.

Sistema RPOW[editar]

Precursores de Bitcoin y basados en Hashcash, un sistema RPOW difiere de un sistema POW normal en que después de que un servidor recibe una prueba de trabajo ("moneda POW") de un cliente, éste puede cambiar esta moneda ya gastada por otra que no lo esté, que puede ser utilizada para acceder a otro servidor que también requiera la entrega de una prueba de trabajo. De esta manera el servidor se ahorra el costo de hacer el trabajo requerido, usando en cambio el trabajo que éste ha recibido por sus servicios. El otro servidor a su vez también puede cambiar la prueba de trabajo recibida por otra que pueda usar.

Bitcoin[editar]

Bitcoin utiliza un sistema de prueba de trabajo para la creación de nuevas unidades monetarias y para verificar la validez de las transacciones. En este caso, el sistema de prueba de trabajo permite la transferencia de valor de manera directa entre los participantes de una transacción sin necesidad de depender de ninguna organización central de confianza, ya sea bancos o cualquier otra entidad financiera.[5] [6]

Elección del algoritmo de prueba de trabajo[editar]

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.[7]
  • 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 (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).[7]

Referencias[editar]

[1] [2] [3] [8] [4] [9]

  1. a b c Adam Back. HashCash Popular proof-of-work system. First announce in March 1997.
  2. a b Martín Abadi, Mike Burrows, Mark Manasse, and Ted Wobber. Moderately hard, memory-bound functions. In 10th Annual Network and Distributed System Security Symposium (NDSS), San Diego, CA, USA, February 2003. Also in ACM Trans. Inter. Tech., 5(2):299-327, 2005.
  3. a b Cynthia Dwork, Andrew Goldberg, and Moni Naor. On memory-bound functions for fighting spam. In Advances in Cryptology - CRYPTO 2003, volume 2729 of Lecture Notes in Computer Science, pages 426-444. Springer, 2003.
  4. a b Fabien Coelho. Exponential memory-bound functions for proof of work protocols. Cryptology ePrint Archive, Report 2005/356.
  5. Lowenthal, Thomas (2011). "Bitcoin: inside the encryted, peer-to-peer digital currency", ArsTechnica.com (en inglés)
  6. IEEE.org (ed.). «Bitcoin: The Crytoanarchists' Answer to Cash» (en inglés). Consultado el 12 de junio de 2012. 
  7. a b Bitcoin and Cryptocurrency Technologies. Chapter 8 Arvind Narayanan, Joseph Bonneau, Edward Felten, Andrew Miller, Steven Goldfeder. 25 de agosto 2015
  8. Ben Laurie and Richard Clayton. proof-of-work proves not to work. In WEIS 04, May 2004.
  9. Debin Liu and L Jean Camp. Proof of Work can Work. In Fifth Workshop on the Economics of Information Security, June 2006.

Enlaces externos[editar]

  • Hashcash (Inglés)
  • Sistema de Finney (Inglés)
  • Bit gold. Describe un sistema monetario completo (including generation, storage, assay, and transfer) basado en funciones POW, y el problema de la arquitectura de máquinas generado por el uso de estas funciones. (Inglés)