Il concetto di Proof-of-Work
Daniel Krawisz, 24 Giugno 2013 - Satoshi Nakamoto Institute
Last updated
Daniel Krawisz, 24 Giugno 2013 - Satoshi Nakamoto Institute
Last updated
Forse l'aspetto meno intuitivo della rete Bitcoin è il concetto di proof-of-work che utilizza per definire i requisiti per la generazione di un nuovo insieme di transazioni (blocco) da aggiungere al database distribuito delle transazioni (catena di blocchi). Questo concetto, nato dalle idee del movimento cypherpunk₁, è nuovo per la teoria monetaria e sembra un pò fuori luogo anche per l'informatica. Dimostrerò che la biologia ci offre il quadro più adatto per comprenderlo.
Tutti i blocchi della catena di Bitcoin presentano una breve stringa di dati privi di significato, chiamata "nonce". I computer di mining devono cercare la giusta stringa senza significato in modo che il blocco nel suo complesso soddisfi una certa condizione arbitraria. In particolare, è richiesto che l'hash SHA-256 del blocco abbia un certo numero di zeri iniziali.₂ Gli hash sono funzioni unidirezionali, quindi non c'è un modo semplice per trovare il nonce giusto o per progettare un blocco in modo che sia corretto. L'unico modo conosciuto per trovare un buon nonce è semplicemente quello di provare a caso finché non se ne trova uno che funzioni. La Khan Academy fornisce una spiegazione visiva della proof-of-work:
La procedura, ricordiamo, è totalmente arbitraria. È semplicemente una complicazione aggiunta, come un rituale, in modo da rendere i blocchi più difficili da generare. Qualsiasi altra cosa andrebbe bene, purché sia computazionalmente difficile. Altre criptovalute utilizzano altri algoritmi di hash. Non esiste una condizione speciale della teoria dei numeri che solo qualcuno come potrebbe capire.₃
Sebbene lo scopo dei computer di mining sia quello di tenere la contabilità della blockchain, la maggior parte del lavoro che svolgono è la ricerca di nonces buoni, piuttosto che qualcosa che ha a che fare con la contabilità. L'energia utilizzata per trovare i nonces è persa per sempre. L'energia non "sostiene" il valore dei bitcoin come l'oro sostiene una banconota onesta, come alcuni hanno ipotizzato. Della grande potenza di calcolo che viene impiegata per il mining dei bitcoin, tutta la potenza, tranne una minima parte, è apparentemente priva di scopo.
Quando una persona aggiorna la propria attrezzatura di mining, effettua il mining a una velocità maggiore e quindi guadagna più bitcoin. Tuttavia, quando tutti si aggiornano, il mining non diventa più efficiente nel suo complesso. Si suppone che ci sia solo un nuovo blocco ogni dieci minuti, indipendentemente dall'intensità del lavoro della rete. Invece, la rete aggiorna la difficoltà per richiedere condizioni più severe per i blocchi futuri. Tutti i minatori possono lavorare di più, ma nessuno ne trae vantaggio. È un po' come una foresta, in cui ogni albero cerca di crescere il più alto possibile per catturare più luce dei suoi simili, con il risultato finale che la maggior parte dell'energia solare viene utilizzata per far crescere lunghi tronchi morti.
Prima che venga generato un nuovo blocco, potrebbero esserci molti pagamenti in giro per la rete e non c'è ancora una risposta oggettiva su quali pagamenti debbano essere eseguiti. Alcuni potrebbero essere non validi, quindi devono essere controllati tutti. Alcuni potrebbero non includere alcuna commissione di transazione, quindi bisogna decidere se essere gentili e permettere a questi free rider di passare o se ignorarli. Infine, potrebbe esserci un insieme di due o più pagamenti che non possono essere tutti validi contemporaneamente, ma alcuni sottoinsiemi di essi sono validi. Ad esempio, un portafoglio potrebbe cercare di spendere gli stessi bitcoin due volte nello stesso momento. In questo caso, la scelta su quali pagamenti consentire è arbitraria.
Quindi, per un dato insieme di pagamenti, ci possono essere molti blocchi possibili che possono essere costruiti a partire da essi, nessuno dei quali è oggettivamente il più corretto. Non ci sarà necessariamente un accordo su quale risultato sia preferibile, perché i diversi blocchi possibili avranno benefici diversi per persone diverse. C'è, innanzitutto, la ricompensa che deriva dalla generazione di un blocco di una serie di nuovi bitcoin. Questo è necessario perché senza di esso ci sarebbe poco incentivo per chiunque a fare la contabilità; ma con una ricompensa disponibile, ogni minatore naturalmente preferirebbe che il nuovo blocco fosse la sua proposta piuttosto che quella di chiunque altro.
Ci sono altre complicazioni più sottili anche senza considerare la ricompensa. Un minatore potrebbe rifiutarsi di convalidare transazioni che provengono da un suo nemico, oppure potrebbe essere più o meno altruista riguardo al tipo di commissioni che accetta. Potrebbe anche voler truffare qualcun altro spendendo due volte: in questo scenario, invierebbe un pagamento a una vittima in cambio di un bene, ma convaliderebbe solo un secondo pagamento contrastante effettuato nello stesso momento in un altro portafoglio di cui è proprietario. In questo modo il primo pagamento non sarebbe valido e la vittima si ritroverebbe con un bene per il quale non ha pagato.
Con così tanti motivi per voler manipolare la blockchain per i propri scopi, i minatori potrebbero essere d'accordo in astratto sulla necessità di un consenso, senza mai accordarsi su una proposta concreta. La soluzione di Bitcoin consiste nell'aggiungere ulteriori requisiti al protocollo che aumentano notevolmente il costo della defezione. Se i blocchi sono generati casualmente da un calcolo difficile, ci sarà solo un nuovo blocco proposto alla volta. Una volta proposto un nuovo blocco, i minatori possono scegliere se continuare a cercare un'alternativa più favorevole a loro stessi o accettare la nuova proposta e cercare quella successiva. Chiunque accetti l'ultimo blocco capisce che sta seguendo un consenso naturale e che, se è abbastanza fortunato da generare il blocco successivo, questo sarà probabilmente accettato per le stesse ragioni per cui ha accettato l'ultimo. D'altra parte, trattenersi per cercare di produrre un blocco più favorevole è molto rischioso, perché dovrebbe convincere un numero sufficiente di minatori ad assecondarlo per stabilire un nuovo consenso.
La regola generale è che il primo blocco estratto è genuino perché nessuno può pianificare di essere il primo. Si può essere primi solo per fortuna. Qualsiasi blocco non estratto è sospetto perché per generarlo il minatore ha dovuto scegliere di rifiutare un'alternativa perfettamente valida e presumibilmente altruistica. Non è una cosa facile da fare.₄
Il Principio dell'Handicap risolve il problema del Dilemma dei Prigionieri consentendo una fase iniziale del gioco in cui ogni giocatore ha la possibilità di fare qualcosa che elimini in modo convincente il vantaggio della defezione rispetto alla cooperazione. È difficile pensare a come far funzionare il Principio dell'Handicap con la storia dei due prigionieri, ma supponiamo che abbiano un momento insieme al procuratore e che uno dei prigionieri, con una comprensione particolarmente buona della teoria dei giochi, dica al procuratore: "Se l'altro prigioniero è colpevole, allora io sono ugualmente colpevole". Questa affermazione è un chiaro costo per se stesso, perché elimina la sua possibilità di disertare quando l'altro prigioniero collabora. L'altro prigioniero ha quindi la possibilità di ripetere la dichiarazione. Se non lo fa, sa che l'unica opzione possibile per il primo prigioniero è disertare, ma se lo fa, ci si può aspettare che entrambi i prigionieri collaborino. Questo è il Principio dell'Handicap.
Il principio dell'handicap è stato applicato con successo a una vasta gamma di fenomeni biologici. Per fare un esempio concreto, supponiamo che un animale preda si accorga che un predatore lo sta braccando. Entrambi gli animali trarrebbero beneficio se la preda potesse comunicare al predatore che non è più ignara: il predatore non vorrebbe cacciare ulteriormente se avesse perso l'elemento sorpresa e la preda non sarebbe cacciata. Tuttavia, la preda potrebbe iniziare a dire a caso "Ti vedo!" anche quando non vede alcun predatore, solo per scoraggiare quelli che potrebbero trovarsi lì. Finché la preda potrebbe mentire, il predatore non può prendere per buono il suo segnale e deve ignorarlo.₆
All'interno di una specie, il principio dell'handicap spiega molto su come gli animali competono tra loro e interagiscono con i loro compagni. Per esempio, tra i cervi, i cervi con le corna più grandi sono gli esemplari più forti e migliori, perché qualsiasi cervo più piccolo che cercasse di farle crescere più grandi rischierebbe seriamente di consumare più energia e nutrienti di quanti ne possa sopportare. Così, i cervi di seconda categoria si ritrovano con corna di seconda categoria e quelli di terza categoria con corna di terza categoria, e così via.₇
In una specie sociale, il principio dell'handicap spiega molto dell'etica e dell'altruismo. Così come i membri di una specie possono differenziarsi per forza e salute con un handicap come le corna, i membri di una specie sociale possono usare l'altruismo come handicap per distinguersi l'un l'altro. Per esempio, Il principio dell'handicap descrive un uccello sociale chiamato Arabian Babbler che compete per l'altruismo. Gli uccelli più potenti e dominanti dimostrano la loro superiorità dedicando tempo alla guardia del resto dello stormo e nutrendo i nidiacei e gli uccelli di rango inferiore. I babbani non amano essere nutriti da altri babbani di pari rango perché non amano sentirsi inferiori. Il Principio dell'Handicap descrive persino un'osservazione in cui un uccello ha dato da mangiare un verme a un altro uccello per poi vedersi ricacciare lo stesso verme in gola!₈
Il sistema proof-of-work di Bitcoin può essere paragonato sia alle corna del cervo che all'altruismo. La capacità di generare blocchi è una dimostrazione di forza computazionale, che è proprio ciò di cui la rete Bitcoin ha bisogno per aiutare a verificare tutte le transazioni. Ma è anche una dimostrazione di spirito comunitario, perché accettando di partecipare al concorso per il blocco successivo, si dimostra di essere disposti a rispettare gli interessi della comunità piuttosto che a manipolare la catena di blocchi per interessi personali. È proprio questo il genere di cose che ci si aspetta per tenere unita una comunità.
La proof-of-work e la proof-of-stake hanno costi e benefici diversi a seconda delle circostanze. Secondo il principio dell'Handicap, i costi imposti per produrre un segnale devono essere correlati al significato del messaggio. Un sistema proof-of-stake dimostra un investimento nella moneta stessa, mentre un sistema proof-of-work nella rete sottostante.
Pertanto, se ci fossero una rete proof-of-work e una rete proof-of-stake con la stessa capitalizzazione di mercato, ci si aspetterebbe che la moneta proof-of-work abbia una rete più grande con una maggiore capacità e sia più liquida della rete proof-of-stake, mentre la moneta proof-of-stake avrebbe una maggiore stabilità di prezzo.
Il sistema proof-of-work scoraggia i minatori antisociali dal manipolare la blockchain rendendo difficile fare affidamento sulla rete per accettare i suoi blocchi. Il sistema proof-of-stake, al contrario, scoraggia i minatori antisociali accettando solo i blocchi dei minatori che hanno un incentivo a garantire che la merce rimanga assolutamente affidabile. Poiché la proof-of-stake viene esaurita man mano che vengono generati nuovi blocchi, c'è un continuo ricambio di chi è in grado di effettuare il mining e quindi un minore incentivo a specializzarsi nella manutenzione della blockchain.
Nelle fasi iniziali, una rete di criptovalute richiede un investimento a lungo termine nella moneta stessa per acquisire credibilità e valore, mentre una rete più grande e matura richiederebbe più probabilmente una specializzazione nell'infrastruttura di rete per garantirne il corretto funzionamento.
Questa è una discussione accademica. È controproducente sostenere qualsiasi criptovaluta diversa dal Bitcoin. Non ci si può aspettare che i consumatori comuni scelgano una valuta piuttosto che un'altra a causa di oscuri dettagli tecnici che non influiscono sul loro utilizzo come valuta. È molto più probabile che scelgano quella che è più ampiamente accettata. Chi pensa che il PPCoin sia più razionale non si aspetta che il PPcoin batta il Bitcoin, ma potrebbe avere la possibilità di convincere la comunità del Bitcoin ad adattare un sistema di proof-of-stake in una versione futura del Bitcoin. Anche se questo è teoricamente possibile e potrebbe avere dei vantaggi, i minatori di Bitcoin hanno già un interesse acquisito nell'attuale sistema e tenderebbero quindi a opporsi a tale innovazione.
Anche se è già successo una volta. Il 13 marzo 2013, un bug nella versione 0.7 di bitcoin-qt ha causato un conflitto con la versione 0.8. La blockchain ha forkato, con ogni versione che riconosceva un ramo diverso come valido. La community dei Bitcoin miners ha scelto il ramo della versione 0.7 come quello da riconoscere, anche se era il più corto.
Si veda Zahavi, "The Handicap Principle: A Missing Piece of Darwin's Puzzle, Oxford University Press", 1997 per una deliziosa presentazione di questa idea, scritta dal biologo che l'ha originariamente proposta. Sebbene si tratti di una presentazione divulgativa senza matematica, non è banale e utilizza sofisticati argomenti biologici per far valere le proprie ragioni. Il Principio dell'Handicap è stato proposto originariamente nel 1975, ma è diventato mainstream solo negli anni '90.
Zahavi, Zahavi, 1997, pp. 3-13.
Zahavi, Zahavi, 1997, pp. 55-57.
Zahavi, Zahavi, 1997, pp. 125-150.
Perché legare ogni blocco di bitcoin ad un difficile letto di ? Il modo corretto di pensare al concetto di proof-of-work è come un mezzo per un gruppo di persone con interessi personali, nessuno dei quali è subordinato a nessun altro, per stabilire un consenso contro un considerevole incentivo a disattenderlo. Bitcoin potrebbe funzionare perfettamente senza proof-of-work, a patto che tutti siano perfettamente onesti e altruisti. Se non lo sono, allora raggiungere un consenso è difficile.
C'è un'idea di biologia chiamata che fa luce su questo processo.₅ Dice che quando due animali hanno un incentivo a cooperare, devono comunicarsi reciprocamente le buone intenzioni in modo credibile. Per rendere implausibile la menzogna, il segnale deve imporre al segnalatore un costo tale da rendere molto oneroso l'imbroglio. In altre parole, il segnale stesso deve essere un handicap.
Questo può essere compreso in termini di , una famosa idea della teoria dei giochi che trova applicazione in un'enorme gamma di fenomeni. Il Dilemma del Prigioniero prevede due giocatori, ciascuno con due opzioni: cooperare o disertare. Normalmente, il gioco viene spiegato in termini di una storia di due prigionieri che hanno la possibilità di tacere o di fare la spia all'altro. Le caratteristiche essenziali del Dilemma dei prigionieri sono che a ciascun giocatore conviene scegliere di disertare, indipendentemente dalla scelta dell'altro giocatore, e che il beneficio maggiore va a colui che diserta quando l'altro collabora. I giocatori potrebbero stare meglio se cooperassero entrambi piuttosto che disertare entrambi, ma poiché non hanno modo di garantire la cooperazione, sceglieranno entrambi di disertare.
Il proof-of-work non deve quindi essere visto come un sistema misterioso o inutile, ma come qualcosa di funzionale, naturale e potenzialmente utile per la progettazione di qualsiasi protocollo di comunicazione. Se un sistema distribuito di computer è di proprietà di una persona, questa può presumere che tutti cooperino perché controlla il loro comportamento. In caso contrario, è necessario che i diversi computer dimostrino di lavorare per lo stesso obiettivo. L'universalità del Principio dell'Handicap in biologia dovrebbe essere sufficiente a far sospettare che un protocollo che non imponga costi ai suoi utenti inviti all'abuso. È interessante pensare a quanti problemi di Internet possono essere attribuiti alla mancata considerazione di questo principio. Se la proof-of-work fosse stata compresa quando è stata inventata la posta elettronica, forse non ci sarebbe mai stato il problema dello . Se il protocollo Internet richiedesse la prova di lavoro per le richieste dei clienti, forse non dovremmo preoccuparci degli (Distributed Denial of Service).₉
Un'applicazione più recente del proof-of-work è , un protocollo di messaggi anonimi, distribuiti e crittografati che un giorno potrebbe diventare importante quasi quanto Bitcoin.₁₀ È stato ispirato da Bitcoin, ma funziona in modo molto diverso. Non c'è una catena di blocchi nel protocollo Bitmessage perché non c'è bisogno di memorizzare tutti i messaggi per sempre in un database. Al contrario, Bitmessage richiede che chiunque invii un messaggio esegua un lavoro prima che la rete lo inoltri. Questo garantisce che ogni messaggio sia significativo: nessuno spammer può permettersi di far funzionare il suo computer per circa un minuto per ogni messaggio che invia. La proof-of-work è essenziale perché una rete distribuita che si basa sul calcolo donato dai suoi utenti non può permettersi di dare accesso ai free-riders. Attualmente è agli inizi e non è ancora stata studiata a sufficienza per essere considerata sicura, ma ha un enorme potenziale come alternativa alla posta elettronica.
Una discussione sul proof-of-work non sarebbe completa senza parlare di , la terza criptovaluta più popolare dopo Bitcoin e Litecoin.₁₁ Anche PPCoin utilizza il proof-of-work in modo da rendere la defezione non redditizia, ma i costi sono distribuiti in modo molto diverso tra i minatori: i minatori che possiedono molti PPCoin da molto tempo subiscono requisiti molto meno severi per la produzione di un blocco rispetto a quelli che possiedono pochi PPCoin e che li possiedono da meno tempo. Ciò significa che le persone non tenderanno a seguire il consenso proposto dalla persona con il computer più potente, ma piuttosto dalla persona che ha dimostrato di aver investito maggiormente nella valuta. I minatori si distinguono per qualcosa di più simile all'anzianità che alla forza. Quando un minatore crea un nuovo blocco nella catena di blocchi PPcoin, deve scambiare alcune delle sue vecchie monete per ottenere le nuove, il che significa che tutti coloro che creano un blocco sono meno in grado di creare il successivo. Questo sistema è chiamato proof-of-stake.
Si veda Back, A., "", 1 agosto 2002, per una descrizione del concetto di proof-of-work e delle sue applicazioni da parte del suo inventore originale.
Si veda Nakamoto, S., "" , 2008.
Matematico di fama mondiale, ipotizzato per motivi superficiali da come il creatore di Bitcoin. È noto sia per la presunta dimostrazione della congettura sia per la sua riluttanza a pubblicizzare il suo lavoro o a spiegarlo a qualcuno. La dimostrazione è lunga più di 500 pagine ed è così originale che nessun altro matematico l'ha ancora compresa appieno; se fosse vera, sarebbe un affare molto più grande della dimostrazione dell'Ultimo Teorema di Fermat. Si veda il suo , S., "Inter-Universal Geometer: Shinichi Mochizuki", 2013. Tuttavia, non c'è motivo di aspettarsi che il creatore di Bitcoin sia un genio della matematica. Il Bitcoin è una brillante opera di ingegneria, non di deduzione logica. La matematica necessaria per crearlo si potrebbe trovare in un corso introduttivo di crittografia. Satoshi non ha proposto idee fondamentalmente nuove; ha semplicemente messo insieme alcune idee esistenti in un modo nuovo e straordinariamente utile. Anche la solitudine dei due personaggi è superficiale. Mochizuki è il tipico matematico eccentrico e asociale, ma solo un po' di più. Nakamoto, invece, ha tenuto segreta la sua identità per ottime ragioni. Inoltre, non era asociale: è stato molto attivo nella comunità Bitcoin finché non ha ritenuto che questa non avesse più bisogno della sua guida.
Si veda Warren, J., "", 27 Nov 2012.
Si veda King, S., Nadal, S., "", 19 Aug 2012. Questo paper non è scritto bene e non consiglio di leggerlo.
Leggi la versione originale qui: