A proba de traballo (proof of work, PoW) é un mecanismo criptográfico no que atopar unha solución válida require un custo computacional, mentres que comprobar esa solución é moito máis sinxelo. Nos esquemas baseados nunha busca aleatoria, a dificultade determina un custo esperado e non acredita cantos intentos realizou unha persoa nun caso concreto. Informe técnico.

Propúxose para limitar o abuso de recursos informáticos, como o correo lixo e certos ataques de denegación de servizo, e incorporouse a sistemas como Bitcoin. Nunha cadea de bloques, a proba de traballo forma parte dun protocolo de consenso con regras adicionais para validar transaccións e seleccionar o historial.

Exemplo de funcionamento Hashcash procura un selo que cumpra unha condición sobre o seu resumo. No exemplo seguinte, construído para o enderezo reservado [email protected], a data declarada é o 14 de setembro de 2026 e a dificultade é de 20 bits. Isto equivale a un número medio de 220 intentos no modelo de busca aleatoria. Apartado «stamp format (version 1)».

X-Hashcash: 1:20:260914:[email protected]::hK0Usl9SvFdZn+vm:1699bb

O hash calcúlase só sobre o selo, sen o nome da cabeceira nin un salto de liña final. Os primeiros 20 bits do seguinte resumo SHA-1 son cero: 000005caada1171b07537ca538f3dff707fada2b

A comprobación desta condición non substitúe as de data, recurso ou reutilización do selo. Apartado «stamp format (version 1)».

Evolución dos algoritmos de proba de traballo A proba de traballo pasou das propostas contra o abuso de recursos dixitais a aplicacións en redes de cadeas de bloques. Satoshi Nakamoto anunciou o libro branco «Bitcoin: A Peer-to-Peer Electronic Cash System» o 31 de outubro de 2008; nel propuxo unha rede de pagamentos entre pares que empregaba proba de traballo para acordar o historial de transaccións sen unha autoridade central.

No artigo de Dwork e Naor presentado en CRYPTO '92 e publicado en 1993, «Pricing via Processing or Combatting Junk Mail», describíronse funcións de custo como a extracción de raíces cadradas modulares. O cálculo debía ser moderadamente difícil, pero a súa comprobación sinxela. Esta asimetría permitía impor traballo a quen solicitase un recurso mantendo reducido o custo de verificación.

Hashcash, anunciado en 1997, empregaba SHA-1 para calcular unha inversión parcial de hash. O informe de Back de 2002 describiu unha versión mellorada na que se procuraba un hash cun número determinado de ceros iniciais. A variante orixinal comparaba prefixos de hashes; a substitución por un obxectivo fixo reducía o custo de verificación.

Bitcoin, lanzado en 2009, adaptou a proba de traballo de Hashcash ás criptomoedas. Borrador previo á publicación, distribuído desde a web académica de Princeton; sección 5.2, pp. 138-145, e seccións sobre scrypt e Litecoin, pp. 219-221 e 271. Emprega un esquema baseado en SHA-256, no que os mineiros buscan unha proba válida para engadir un bloque e recibir recompensas. A dificultade axústase periodicamente para manter un intervalo medio obxectivo duns dez minutos, non un tempo exacto para cada bloque. A necesidade de refacer o traballo dos bloques encadeados dificulta a alteración do historial, baixo os supostos de seguridade do protocolo.

A minaría de Bitcoin, realizada inicialmente con CPU, incorporou despois GPU, FPGA e ASIC, que ofrecían vantaxes de rendemento para o cálculo empregado na minaría.

Litecoin, lanzado en 2011, emprega scrypt na súa proba de traballo, en lugar do esquema baseado en SHA-256 de Bitcoin. Desenvolvido por Colin Percival, scrypt é unha función de derivación de chaves baseada en contrasinais que emprega funcións que requiren un uso intensivo da memoria para reducir a vantaxe do hardware especializado. O RFC 7914, de Percival e Simon Josefsson, especifica os seus parámetros e funcionamento. Litecoin puido minarse inicialmente con CPU, pero posteriormente a súa minaría incorporou GPU e ASIC; polo tanto, o uso de scrypt non impediu a aparición de hardware especializado.

Variantes Pódense distinguir dúas clases de protocolos de proba de traballo segundo a interacción entre as partes.

Os protocolos desafío-resposta asumen unha conexión interactiva directa entre o solicitante (cliente) e o provedor (servidor). O provedor elixe un desafío; o solicitante procura a resposta e devólvea para que o provedor a comprobe. Como o provedor elixe o desafío no momento, a dificultade pode adaptarse á súa carga actual. O traballo do solicitante pode estar acoutado se existe unha solución coñecida, elixida polo provedor, dentro dun espazo de busca finito.

miniatura|550px|centro|alt=O cliente solicita un servizo; o servidor escolle e envía un desafío. O cliente resólveo e envía a resposta; o servidor verifícaa e concede o servizo.|Protocolo de proba de traballo de desafío-resposta entre un cliente e un servidor.

Os protocolos solución-verificación non requiren que o provedor envíe previamente un desafío: o solicitante escolle o problema antes de procurar unha solución, e o provedor debe comprobar tanto esa elección como a solución atopada. Hashcash é un exemplo de custo probabilístico non acoutado: o número esperado de intentos é previsible, pero a busca pode prolongarse máis ca esa media.

miniatura|550px|centro|alt=O emisor realiza un cálculo, resolve o problema e envía o resultado ao receptor, que o verifica.|Protocolo de proba de traballo baseado na verificación dunha solución enviada polo emisor.

Os desafíos cunha solución coñecida permiten limitar o custo do peor caso. Porén, Back sinalou que esa limitación podía ter un efecto práctico reducido sobre a variabilidade do tempo de cálculo. Unha técnica para reducir esa variabilidade consiste en repartir o traballo entre varios subdesafíos independentes cun custo total esperado equivalente.

Tamén existen construcións de custo fixo baseadas en crebacabezas de bloqueo temporal, descritas por Back como cálculos secuenciais que permiten unha verificación máis barata a quen coñece un segredo.

Ademais, as funcións subxacentes empregadas por estes esquemas poden ser: Limitadas pola CPU, nas que o custo de cálculo depende do rendemento do procesador, que pode variar considerablemente entre xeracións e clases de equipos. Limitadas pola memoria, nas que o tempo de cálculo está dominado polos accesos á memoria principal. Estes esquemas propuxéronse para reducir as diferenzas de custo entre máquinas, aproveitando que a latencia da memoria variaba menos ca a velocidade dos procesadores. Porén, Coelho mostrou que as implementacións optimizadas podían quedar limitadas polo ancho de banda da memoria, que variaba máis entre equipos e reducía esa vantaxe. Cuckoo Cycle tamén se propuxo co obxectivo de facer da latencia da memoria o principal factor limitante. Limitadas pola rede, como o protocolo de crebacabezas de visita guiada, no que o cliente recibe un desafío do provedor e debe contactar secuencialmente con varios nós guía. Cada guía devolve un valor hash necesario para continuar o percorrido; ao rematalo, o cliente reenvía a solicitude ao provedor coa resposta obtida. O custo imposto ao cliente consiste principalmente nos atrasos de ida e volta da rede, mentres que o cálculo e o tráfico adicionais son pequenos.

Por último, algúns sistemas PoW ofrecen atallos de cálculo que permiten aos participantes que coñecen un segredo, como unha chave privada, xerar probas de baixo custo. Dwork e Naor propuxeron que unha autoridade puidese empregar eses atallos para permitir envíos masivos autorizados sen pagar o custo computacional completo de cada destinatario. A conveniencia desta característica depende do contexto de uso.

Lista de funcións de proba de traballo Velaquí unha lista de funcións e construcións de proba de traballo: Extracción de raíces cadradas módulo un número primo grande, proposta por Dwork e Naor como función de custo sen atallo. Seccións 4.1-4.3. Esquemas de sinatura Fiat-Shamir debilitados para obter unha función de custo. Esquema de sinatura Ong-Schnorr-Shamir, aproveitando o algoritmo de Pollard para producir sinaturas sen coñecer a chave privada. Inversión parcial de hash. Versión de autor, sección 6.2, p. 14 do PDF. Jakobsson e Juels tamén introduciron os protocolos de pudin de pan, nos que o cálculo realizado para unha proba de traballo se aproveita para outro cálculo útil e verificable, como a emisión de moedas de MicroMint. Poxas de crebacabezas, nas que os clientes escollen a dificultade do traballo e, cando o servidor está ocupado, reciben prioridade as solicitudes que presentan solucións de maior dificultade. Secuencias de hash para a medición auditable do uso dun servizo, como as funcións incrementais propostas por Franklin e Malkhi. Versión ampliada, sección 4.1, p. 4; non é a edición das actas de 1997. Crebacabezas de cliente baseados na recuperación de bits ocultos dunha preimaxe de hash, empregados para dificultar os ataques de esgotamento de conexións. O programa emprega a variante «Defense» no título; o PDF di «Countermeasure». Crebacabezas baseados en Diffie-Hellman. Moderate, a familia de funcións de Abadi e colaboradores. Manuscrito de autor, con paxinación propia 1-27. MBound. Hokkaido. Informe técnico A/370/CRI, versión 3, revisada o 7 de novembro de 2006. Cuckoo Cycle. Prepublicación de 13 páxinas, distinta da edición das actas. Construción baseada na árbore de Merkle. Versión ampliada e en cor, revisada o 22 de xuño de 2008, con paxinación propia 1-8. Protocolo de crebacabezas de visita guiada. Copia de autor de dez páxinas, sen paxinación editorial.

Proba de traballo útil (PoUW) Na conferencia CRYPTO 2022 da IACR presentouse Ofelimos, un protocolo de cadea de bloques baseado na «proba de traballo útil» (PoUW). O seu mecanismo de consenso está deseñado para realizar ao mesmo tempo unha busca descentralizada de solucións a problemas de optimización. Emprega a busca local dobremente paralela (DPLS, do inglés Doubly Parallel Local Search), que combina exploracións locais con operacións de hash necesarias para a seguridade do protocolo. Os autores describen unha instancia de DPLS baseada nunha variante de WalkSAT para problemas de satisfactibilidade booleana.

Proba de traballo optimizable (OPoW) A proba de traballo optimizable (optimisable proof of work, OPoW) é unha proposta do proxecto The Innovation Game. Segundo a súa documentación, pretende incentivar a mellora dos algoritmos de resolución sen favorecer a inestabilidade nin a centralización da rede. O deseño combina desafíos de satisfacibilidade booleana, rutas de vehículos con capacidade e mochila, e reparte recompensas mediante un cálculo de influencia. Distingue os mineiros, que calculan solucións, dos contribuíntes que achegan algoritmos e reciben recompensas segundo a súa adopción. Os autores presentan a separación entre resolución de desafíos e creación de bloques como un xeito de construír un mercado de algoritmos.

Proba de traballo de tipo Bitcoin En 2009, a rede Bitcoin entrou en funcionamento. É unha moeda dixital baseada nunha proba de traballo de tipo Hashcash. A diferenza da RPOW de Finney, que empregaba un servidor con hardware de confianza, en Bitcoin a protección contra o dobre gasto baséase nun protocolo entre pares descentralizado que acorda o historial das transferencias. Anuncio do sistema. Os mineiros buscan unha proba válida para os bloques; os nós comproban tanto esa proba como a validez das transaccións. A dificultade axústase periodicamente para manter o tempo medio entre bloques arredor dun valor obxectivo.

Consumo de enerxía miniatura|alt=Gráfica do consumo eléctrico anualizado estimado de Bitcoin entre 2016 e febreiro de 2025, coa estimación central e os límites superior e inferior, en TWh.|Evolución do consumo eléctrico anualizado estimado de Bitcoin de 2016 a febreiro de 2025, en TWh, cos límites superior e inferior. Datos da Universidade de Cambridge.