# Proof-of-stake

È detto proof-of-stake (PoS, vagamente traducibile in italiano come "prova che si ha un interesse in gioco") un tipo di protocollo per la messa in sicurezza di una rete di criptovaluta e per il conseguimento di un consenso distribuito. È basato sul principio che a ogni utente venga richiesto di dimostrare il possesso di un certo ammontare di criptovaluta. Si differenzia dai sistemi proof-of-work che sono basati su algoritmi di hash che validano le transazioni elettroniche. Peercoin è stata la prima criptovaluta ad introdurre sin dal lancio il sistema Proof of Stake senza mai implementarlo completamente. Altre note implementazioni del PoS sono BitShares, Nxt, GridCoin, BlackCoin e Cardano.

## Attacchi

Le vulnerabilità aggiuntive dei sistemi PoS sono direttamente correlate al loro vantaggio, cioè la bassa quantità di calcoli necessari per costruire una blockchain.

### Attacchi a lungo raggio

La bassa quantità di potenza di calcolo coinvolta permette una classe di attacchi che sostituiscono una porzione non trascurabile della blockchain principale con una versione hijacked. Questi attacchi sono chiamati in letteratura con nomi diversi: Long-Range, Alternative History, Alternate History, History Revision, e non sono fattibili nei sistemi PoW a causa del volume enorme di calcoli richiesti. Le prime fasi di una blockchain sono molto più modellabili per la riscrittura, poiché probabilmente hanno un gruppo molto più piccolo di stakeholder coinvolti, semplificando la collusione. Se le ricompense per blocco e transazione vengono offerte, il gruppo malintenzionato può, ad esempio, riscrivere l'intera storia e raccogliere queste ricompense.
L'attacco "Short-Range" classico (attacco di corruzione) che riscrive solo una piccola porzione finale della catena è anche possibile.

### Niente a rischio

Poiché i validatori non hanno bisogno di spendere una considerevole quantità di potenza di calcolo (e quindi di denaro) nel processo, sono inclini all'attacco Niente-a-Rischio: la partecipazione a una convalida di successo aumenta i guadagni del validatore, quindi c'è un incentivo incorporato per i validatori ad accettare tutti i fork della catena che vengono loro sottoposti, aumentando così le possibilità di guadagnare la tariffa di convalida. I sistemi PoS consentono la creazione a basso costo di alternative blockchain a partire da qualsiasi punto della storia (simulazione senza costi), la presentazione di questi fork a validatori entusiasti mette a rischio la stabilità del sistema. Se questa situazione persiste, può consentire il double-spending, dove un token digitale può essere speso più di una volta. Ciò può essere mitigato penalizzando i validatori che convalidano catene in conflitto ("finalità economica") o strutturando le ricompense in modo che non ci sia incentivo economico a creare conflitti. I sistemi PoS basati sulla Tolleranza ai Falli Bizantini sono generalmente considerati robusti contro questa minaccia.

### Attacco di corruzione

L'attacco di corruzione, in cui gli attaccanti inducono finanziariamente alcuni validatori ad approvare il loro fork della blockchain, è potenziato in PoS, poiché la riscrittura di una grande porzione della storia potrebbe consentire la collusione di stakeholder una volta ricchi che non detengono più quote significative in gioco per rivendicare una maggioranza necessaria a qualche punto nel tempo passato, e far crescere la blockchain alternativa da lì, un'operazione resa possibile dal costo computazionale basso dell'aggiunta di blocchi nel sistema PoS.

## Varianti per la selezione di un blocco

Ogni qualvolta un nuovo blocco viene aggiunto alla blockchain, deve essere scelto il creatore del blocco successivo. Dato che quest'ultimo non può essere l'account che possiede la maggiore quantità della criptovaluta (altrimenti questo creerebbe tutti i blocchi), sono stati escogitati diversi metodi di selezione.

### Selezione casuale (random)

Nxt e BlackCoin utilizzano una funzione casuale per predire il generatore del blocco successivo, impiegando una formula che cerca il valore hash più basso rapportato alla dimensione della somma in gioco. Dato che la conoscenza delle somme è pubblica, ogni nodo della rete può predire - con ragionevole accuratezza - quale account si aggiudicherà il diritto di forgiare un nuovo blocco.

### Selezione basata sull'anzianità

La PoS di Peercoin mescola la selezione casuale con il concetto di "anzianità", un numero ottenuto tramite il prodotto del numero di monete per il numero di giorni in cui tali monete sono state possedute. Le monete che non sono state spese per almeno 30 giorni competono per la creazione del blocco successivo. Gli ammontari di monete più anziani e più grandi hanno una maggiore probabilità di firmare il blocco successivo. Eppure quando un ammontare di monete è utilizzato per firmare un blocco, questo ammontare deve ricominciare con "anzianità zero" e quindi aspettare almeno altri 30 giorni prima di poter firmare un altro blocco. E inoltre la probabilità di trovare il blocco successivo è massima dopo 90 giorni, per prevenire che somme consistenti e molto "anziane" possano dominare la blockchain. Questo processo mette in sicurezza la rete e produce gradualmente nuova valuta nel corso del tempo senza consumare una potenza computazionale significativa. Gli sviluppatori di Peercoin sostengono che questo renda più difficile attaccare la rete dato che cade il bisogno di piattaforme centralizzate di mining e inoltre acquistare più di metà delle monete è probabilmente più costoso che acquisire il 51% della potenza di hashing della proof-of-work.

### Selezione basata sulla velocità

Il concetto di PoS di Reddcoin basata sulla velocità rivendica di incoraggiare la movimentazione di moneta piuttosto che il suo accumulo.

### Selezione basata sul voto

Invece di utilizzare solamente il concetto di posta in gioco (stake), i creatori dei blocchi possono essere selezionati mediante votazione. BitShares utilizza un sistema che comprende 101 delegati e sceglie casualmente tra essi. Il voto della comunità aumenta l'incentivo dei creatori dei blocchi ad agire responsabilmente, ma al contempo apre alla prospettiva di scenari di sybil attack - come ad esempio nell'eventualità che un singolo utente impersoni i primi cinque delegati.

## Vantaggi e svantaggi

La proof-of-work si basa sul consumo di energia. Ciò significa che un bene tangibile esterno mette in sicurezza la rete. Di contro, ciò porta al consumo incrementale di energia. Come riportato da un'azienda di mining che gestisce una mining-farm di Bitcoin, servivano l'equivalente di 240 kWh per ogni Bitcoin nel 2014 (un ammontare pari a circa 60 litri di benzina). Invece le criptovalute basate sulla Proof of Stake possono essere migliaia di volte più efficienti. Questi costi di mining esercitano la funzione di calmierare il prezzo della valuta.
Un altro aspetto da tenere in considerazione è che gli incentivi tra proof-of-work e proof-of-stake sono radicalmente diversi. La Proof-of-Work implica che il creatore del blocco non sia necessariamente colui che possiede la valuta. L'incentivo è quello di massimizzare il profitto dell'hardware. Si discute del fatto che questo aumenti o diminuisca la sicurezza della rete. Nella Proof of Stake colui che possiede la moneta e colui che ne assicura la sicurezza sono la stessa persona. Nonostante ciò, molte criptovalute consentono o addirittura rendono obbligatorio conferire questa funzione ad altri nodi.

## Critiche

Alcuni autori sostengono che la proof of stake non sia un'opzione ideale per costruire un protocollo di consenso distribuito. Il problema più grande rimane quello del cosiddetto "nothing at stake" (nessuna posta in gioco). Significa che nel caso di una ramificazione della blockchain (o qualsiasi altro tipo di disaccordo nel consenso), una persona possa "votare" per entrambe le varianti, perché ha delle poste in gioco in ciascuna delle varianti. Non costa molto lavorare su diverse blockchain (non come nel sistema proof-of-work), e ciò dà la possibilità di provare a ingannare (per esempio, spendere la stessa cifra due volte in un'istanza di riorganizzazione della blockchain) "gratis".
Molti hanno provato a risolvere questi problemi:
* Peercoin utilizza dei checkpoint trasmessi centralmente firmati dalla chiave privata dello sviluppatore. Una riorganizzazione della blockchain non è possibile sotto il livello dell'ultimo checkpoint conosciuto. Il tradeoff è che lo sviluppatore è l'autorità centrale che controlla la blockchain.
* Il protocollo di Nxt consente solamente di riorganizzare gli ultimi 720 blocchi. Non permettere le riorganizzazioni della blockchain può causare al proprio client di seguire una ramificazione di 721 blocchi senza controllare se sia o meno la blockchain più lunga, prevenendo il consenso.
* Il protocollo suggerito da Ethereum - Slasher - consente agli utenti di "punire" un "imbroglione" che fa mining su più di una delle biforcazioni della blockchain. Questa proposta implica che un utente debba firmare due volte per creare una biforcazione e che si possa essere puniti se si crea una biforcazione senza avere nessuna posta in gioco.
Simulazioni statistiche hanno dimostrato come sia possibile (e persino profittevole) lavorare simultaneamente su più biforcazioni della blockchain. Ma i fautori della Proof of Stake credono che gli scenari di attacco più comuni siano impossibili o talmente difficili da predire che in realtà hanno validità solamente teorica.