title: Proof-of-work
text: # Proof-of-work
  
  Un sistema proof-of-work (POW) o protocollo proof-of-work, o funzione proof-of-work è una misura economica per scoraggiare attacchi denial of service (negazione di servizio) e altri abusi di servizio, come spam sulla rete, imponendo alcuni lavori dal richiedente del servizio, di solito intendendo tempo di elaborazione di un computer. Una caratteristica chiave di questi schemi è la loro asimmetria: il lavoro deve essere moderatamente complesso (ma fattibile) dal lato richiedente ma facile da controllare per il fornitore del servizio (service provider). Questa idea è anche conosciuta come funzione di costo della CPU, client puzzle, puzzle computazione o funzione di pricing della CPU.
  
  Un sistema famoso, usato anche nella creazione di moneta Bitcoin è l'hashcash, che usa inversioni di hash parziali per verificare che il lavoro sia fatto, come token di buona volontà da inviare via e-mail. La seguente intestazione (header) rappresenta i calcoli di circa $2^{52}$ hash per inviare un messaggio a calvin@comics.net il 19 gennaio 2038:
  
  È verificabile con un singolo calcolo controllando l'hash SHA-1 del timbro (omette la porzione "X-Hashcash:") cominciando con 52 zeri binari, che corrispondono a 13 zeri esadecimali: 0000000000000756af69e2ffbdb930261873cd71.
  
  È ancora oggetto di dibattito se i sistemi POW siano in grado di risolvere particolari casi di denial of service, come nel caso del problema spam.
  
  I sistemi Proof-of-work sono usati come primitive da altri più complessi sistemi crittografici come quello che usa Bitcoin, un sistema simile a Hashcash.
  
  Dopo diversi anni in cui si è proposto l'utilizzo del protocollo POW sulla rete Tor, gli sviluppatori dietro il progetto Tor hanno finalmente deciso di utilizzare un sistema POW per proteggere gli Onion Services dagli attacchi DoS che affliggono la rete.
  
  ## Varianti
  
  * Challenge response (Risposta di sfida): i protocolli di questo tipo prendono un collegamento interattivo diretto tra il richiedente (client) ed il fornitore (server).
  * Solution-verification (Soluzione-Verifica): questi protocolli non hanno un collegamento: il problema è autoimposto prima che una soluzione venga richiesta dal richiedente, ed il fornitore deve controllare che sia la scelta del problema che la soluzione trovata. La maggior parte di tali schemi sono procedure iterative probabilistiche illimitate come Hashcash.
  
  ## Elenco di funzioni proof of work
  
  * Modulo di radice quadrata di un intero di un grande numero primo
  * Weaken Fiat–Shamir signatures
  * Ong–Schnorr–Shamir signature broken di Pollard
  * Inversione hash parziale come Hashcash
  * Sequenze Hash
  * Puzzle
  * Diffie-Hellman basato su puzzle
  * Moderate
  * Mbound
  * Hokkaido
  * Basato sull'Albero di Merkle
  * Guided tour puzzle protocol (protocollo puzzle tour guidato)
  