Proof-of-stake

Da BitcoinWiki.
Questa è la versione approvata di questa pagina, oltre ad essere la più recente.

Il proof-of-stake è un metodo che mette in sicurezza una rete di criptovalute chiedendo agli utenti di dimostrare il possesso di una certa somma di valuta. Si differenza dai sistemi proof-of-work che invece ricorrono ad algoritmi di hash per convalidare le transazioni elettroniche. E’ comunemente impiegato come metodo aggiuntivo al proof-of-work all’interno del sistema Peercoin e in altre valute elettroniche.

Varianti per la selezione di un blocco[modifica]

Proof-of-stake must have a way of defining the next valid block in any blockchain. Selection by account balance would result in (undesirable) centralization, as the single richest member would have a permanent advantage. Instead, several different methods of selection have been devised.

Il proof-of-stake deve presentare un modo per stabilire la validità del bloc-co successivo all’interno di una blockchain. La selezione basata sul saldo del conto porterebbe ad una centralizzazione (poco auspicabile), dal mo-mento che il membro con la maggiore quantità di criptovaluta sarebbe costantemente avvantaggiato. Al contrario, sono stati messi a punto diversi metodi di selezione.

Selezione di blocco casuale[modifica]

I sistemi Nxt e BlackCoin utilizzano una selezione casuale per predire il generatore successivo, utilizzando una formula che cerca il valore di hash più basso in rapporto all’entità della somma. Dal momento che le cifre sono pubbliche, ciascun nodo può predire- con una certa accuratezza- quale account si aggiudicherà il diritto di forgiare un nuovo blocco.

Selezione basata sull’età[modifica]

Il sistema proof-of-stake di PeerCoin unisce la selezione casuale al concetto di “anzianità”, un numero che deriva dal prodotto del numero di monete per il numero di giorni in cui sono state possedute tali monete.

Le monete non spese per almeno 30 giorni competono per il blocco successivo. Le quantità di monete più vecchie e più grandi hanno una maggiore probabilità di firmare il blocco successivo. Tuttavia, quando una certa quantità di monete è utilizzata per firmare un blocco, tali monete devono ricominciare con “anzianità” zero e poi aspettare che passino almeno 30 giorni prima che possano firmare un nuovo blocco. Inoltre, la probabilità di trovare il blocco successivo raggiunge un valore massimo dopo 90 giorni, al fine di evitare che somme elevate e molto vecchie dominino la blockchain. Questo processo mette in sicurezza la rete e produce col tempo nuove monete in modo graduale senza consumare eccessivamente la potenza di calcolo. Lo sviluppatore del sistema Peercoin sostiene che diventa più difficile attaccare la rete dato che non c’è più bisogno di piattaforme centralizzate di mining- e acquistare più della metà di monete è probabilmente più costoso che acquisire il 51% della potenza di hashing della proof-of-work

Masternodes[modifica]

Un’altra forma di staking è l’attivazione di un masternode. Il termine masternode si applica a tutte le criptovalute che consentono l’uso decentralizzato dei server, che possono generare un profitto per il suo proprietario. Lo svantaggio principale di un masternode è spesso un entry point relativamente alto rispetto al solo staking. Per mettere in sicurezza la rete, coloro che intendono attivare un masternode devono acquistare un certo numero di monete come garanzia, qualunque sia il loro prezzo di mercato in quel momento.

Alcune monete, come Dash o PIVX, hanno un prezzo stabilito per un masternode, mentre altre valute come Divi offrono un sistema di masternode a più livelli, con compensi crescenti nei diversi livelli.

Vantaggi[modifica]

Le monete con protocollo Proof of Stake possono rivelarsi più efficienti da un punto di vista energetico rispetto a quelle con Proof of Work, che fa affidamento principalmente sul consumo di energia.

Anche gli incentivi per chi genera un blocco sono diversi. Con il protocollo Proof-of-Work può accadere che chi genera un blocco non possieda nessuna delle valute che sta minando. L’incentivo per il miner è solo quello di massimizzare i propri profitti. Non è chiaro se questa discrepanza abbassi o alzi i rischi per la sicurezza. Nel protocollo Proof-of-Stake, colui che “tutela” la sicurezza delle monete ne è anche il proprietario (anche se molte criptovalute consentono o addirittura obbligano il passaggio della funzione di staking ad altri nodi).

Critiche[modifica]

Alcuni autori sostengono che la proof-of-stake non sia l’opzione adatta ad un protocollo di consenso distribuito. Un problema che si riscontra di solito è quello della “nothing at stake” (nessuna posta in gioco), ed implica che (nel caso di insuccesso del consenso) colui che genera i blocchi sia portato a votare per varianti multiple di blockchain, e ciò impedisce una qualsiasi risoluzione del problema del consenso. Poiché non costa molto lavorare su diverse blockchain (a differenza dei sistemi proof-of-work), ognuno può sfruttare il problema per provare a spendere due volte la stessa cifra (in una situazione di riorganizzazione della blockchain) “gratuitamente”. In molti hanno provato a risolvere questi problemi:

  • Ethereum ha suggerito il protocollo Slasher che consente agli utenti di “punire” chi imbroglia, ossia chi fa mining su più di una delle biforcazioni della blockchain. Tale proposta prevede la necessità di una doppia firma per dar vita ad una biforcazione, altrimenti si viene puniti se si crea una biforcazione senza avere nessuna posta in gioco. Ad ogni modo il protocollo Slasher non è mai stato adottato; gli sviluppatori di Ethereum sono giunti alla conclusione che la proof-of-stake non sia un protocollo “trascurabile”. Ethereum invece ha messo a punto un algoritmo proof-of-work denominato Ethash. E’ destinato ad essere sostituito da un diverso protocollo PoS denominato “Casper”.
  • Peercoin, nelle fasi iniziali, ha utilizzato dei checkpoints trasmessi a livello centrale (firmati dalla chiave privata dello sviluppatore). Non erano consentite riorganizzazioni della blockchain sotto il livello dell’ultimo checkpoint noto. I checkpoints sono adesso opt-in a partire dalla v0.6 e non vengono applicati ora che la rete ha raggiunto un livello adeguato di distribuzione.
  • Il protocollo di Nxt consente unicamente la riorganizzazione degli ultimi 720 blocchi. Tuttavia, questo riduce solo il problema: un cliente può seguire una ramificazione di 721 blocchi, a prescindere se si tratti o meno della blockchain più lunga, prevenendo il problema del consenso.
  • Fusione tra “Proof of Burn” e proof of stake. I blocchi proof of burn fungono da checkpoints, hanno compensi maggiori, non contengono transazioni, sono più sicuri, si ancorano tra loro e con la blockchain PoS, tuttavia hanno costi maggiori.
  • Fusione tra proof-of-work e proof-of-stake di Decred. Il protocollo proof-of-stake è visto come un’estensione che dipende dalla marcatura temporale della Proof-of-work, che si basa a sua volta sull’offerta “Proof of Activity”, che ha lo scopo di risolvere il problema del non avere nessuna posta in gioco, attraverso miner con protocollo proof-of-work che minano blocchi, e il protocollo proof-of.stake che funge da meccanismo di doppia autenticazione.

Simulazioni statistiche hanno dimostrato che è possibile lavorare simultaneamente su più blockchain, ed è anche redditizio. Ma i sostenitori del protocollo Proof of Stake ritengono che gli scenari di attacco descritti sono impossibili o troppo difficili da prevedere così da considerarli solo da un punto di vista teorico.

Processo di Mining[modifica]

1) Viene estratto (o "minato") il blocco che supera il difficulty target. Il difficulty target si aggiorna periodicamente così che arrivi 1 blocco PoW ogni 10 minuti.

2) La trasmissione del lavoro ha una frequenza di 10 hash consecutivi. Ciascun hash consecutivo si associa ad un output individuale non speso all’interno della blockchain. Si tratta essenzialmente di una lotteria che prevede due gruppi di 5 vincitori. I primi 5 hash prevedono firme obbligatorie, gli ultimi 5 hash firme facoltative.

3) Se le firme obbligatorie conducono a chiavi pubbliche attive [vedere il glossario], è possibile che il blocco sia valido. Altrimenti, il blocco considerato non valido deve essere eliminato.

4) Se un miner PoW trova un blocco potenzialmente valido, trasmette alla rete il seguente hash: {trasmissione del lavoro;hash(il suo blocco, il blocco valido precedente)}

5) Se la trasmissione del lavoro soddisfa il difficulty target e si associa a firmatari attivi, allora il blocco è trasmesso alla rete. In caso contrario, il messaggio viene classificato come spam.

6) I primi cinque firmatari selezionati firmano in sequenza l’hash e lo inoltrano come {trasmissione del lavoro; hash; sig 1; 2; sig 3; sig 4; sig 5}

7) Una volta completata la sequenza di firme obbligatorie, l’ultimo firmatario pubblica il blocco PoW insieme al proprio blocco PoS.

8) Gli ultimi cinque hash prevedono firme volontarie. Queste firme volontarie possono essere inserite all’interno di un qualsiasi blocco entro i prossimi 6 blocchi come txns (transazioni) speciali. Queste txns non prevedono commissioni.

9) Tornare al punto 1

Nota: si tratta di un processo simultaneo pertanto nella rete possono circolare più hash di un blocco nel tentativo di raccogliere le cinque firme e generare una coppia di blocchi PoW/PoS. Se il tentativo fallisce, la coppia di blocchi resta orfana.

La scarsa fattibilità di vettori di attacchi standard[modifica]

1) Double Spend

La Double Spend si basa sulla riservatezza. Per poter minare blocchi in modalità riservata un miner PoW deve selezionare le sue 5 chiavi pubbliche della lotteria. Se il miner PoW possiede una quota di 0<s<1 di tutte le monete, la probabilità di riuscita, ossia che un blocco che superi il difficulty target andrà a selezionare le monete del miner è di (1/s)^5. Per s=0.01, 1 su 10 miliardi di blocchi soddisferà questi criteri. Anche per hash rate aggregati estremamente piccoli, non è praticabile minare in modalità privata ad un tasso di 10 miliardi di volte più veloce di tutti gli altri miners messi insieme. Per s=0.5, chi conduce l’attacco avrà successo se controlla il 51% del tasso di hash aggregato.

2) Denial of Service

Chi porta avanti l’attacco e mina in modalità pubblica potrebbe semplicemente produrre blocchi PoW vuoti. Tuttavia, non riuscirebbe a bloccare il servizio. Il 50% di tutti blocchi è minato in modo casuale via PoS. Chi conduce l’attacco non può obbligare i miner PoS a produrre blocchi vuoti. Di conseguenza non può bloccare il servizio a prescindere dalla quantità di hash rate che controlla.

Valutazione a lungo termine della Blockchain[modifica]

1) Il paragone di due lunghe blockchain si basa sulla semplice somma della difficoltà del blocco, proprio come nel sistema Bitcoin.

2) Un elemento critico della PoS è che non c’è motivo per non firmare le blockchain che si attaccano. Tuttavia, in una lunga blockchain riservata, molti stakeholders (portatori di interesse) avranno firme morte. Questi stakeholders inattivi non potranno firmare la catena principale, ma solo quella che si va ad attaccare. Saranno fortemente invogliati a fare in modo che la catena principale esca vittoriosa perché la catena che si attacca imporrà loro costi aggiuntivi.

Incentivi per mantenere attivi i nodi pieni[modifica]

Questo sistema introduce incentivi rilevanti per mantenere attivi i nodi pieni (full nodes). In molti sostengono che la mancanza di un incentivo a sostegno di un full node sia un problema del sistema Bitcoin.

1) Un flusso stabile di txns genererà dei profitti anche se tutte le chiavi pubbliche restano attive. Le chiavi attive devono sostenere i full nodes. Altrimenti potrebbero non fornire le firme volontarie che dimostrano la loro attività. In questo caso bastano anche incentivi irrisori. Se quasi tutte le chiavi si associano a nodi attivi, allora non è necessario incoraggiare un’ulteriore partecipazione.

2) Alcune chiavi pubbliche possono decidere di diventare inattive. Questa decisione comporta dei costi per loro. Assisteranno ad una perdita del 5% del proprio saldo per ogni anno in cui restano inattive.

3) Le chiavi pubbliche attive beneficiano costantemente delle entrate provenienti dalle chiavi pubbliche non attive. Questa situazione comporta che gli incentivi a restare attivi aumentano significativamente quando cala la partecipazione. Si supponga che il 50% della chiavi pubbliche mantenga attivi i full nodes, a questo 50% spetterà il 2.5% delle monete per anno. Questo equivale ad un rendimento annuo del 2.0%. Al contrario, l’inattività, generà un rendimento annuo di -5.0% come chiarito nel punto 2. Tale soluzione porta ad un livello di incentivo e un tasso di partecipazione accettabile. Si supponga che non vada in questo modo, e che solo il 10% delle chiavi pubbliche mantenga attivi i full nodes. Allora a questo 10% spetterà il 4.5% delle monete circolanti per anno. Questo comporta un rendimento annuo per la partecipazione pari al 45%. E’ un incentivo significativo e sicuramente più che sufficiente, anche se può essere costoso mantenere attivi i nodi. Se partecipano solo l’1% delle monete, allora il 4.95% di tutte le monete circolanti sarà distribuito all’ 1% ogni anno. Questo equivale ad un rendimento settimanale per la partecipazione del 3%, ai livelli di una truffa basata sullo schema ponzi. Se questi incentivi sono giudicati insufficienti per sostenere una solida rete di full nodes (ipotesi assai remota), allora le imposte sulle monete morte andrebbero alzate ad oltre il 5% annuo.

4) Molte persone non disporranno di monete a sufficienza per giustificare l’apertura del proprio nodo. Alcuni soggetti si rivolgeranno probabilmente a servizi bancari online che custodiscano le loro chiavi di spesa limitate (spend key). Il servizio può restituire interessi agli utenti in cambio della gestione delle loro chiavi.

5) Altri soggetti potrebbero preferire la privacy legata alla mancata partecipazione. Questi soggetti sono comunque ben accetti se intendono utilizzare la rete, ma devono pagare un’imposta sul patrimonio pari al 5% annuo per bilanciare i rischi per la sicurezza legati al loro modo di agire.

Chi guadagna e chi perde dalle commissione su ogni TXN[modifica]

L’importo totale delle commissioni di stazionamento raccolte ogni anno varia tra lo 0% e il 5% degli aggregati monetari totali.

La tassa più onerosa all’interno del sistema è quella versata ai miners PoW. Questa commissione impone una commissione di stazionamento tra lo 0% e lo 0.1% per anno a tutti gli utenti del sistema. In aggiunta alla tassa di stazionamento, i miners PoW ricevono una quota del 2% di qualsiasi tassa non obbligatoria pagata per accedere ad uno spazio di blocco limitato. Tutti coloro che possiedono monete sono quelli che ci perdono a causa delle commissioni dei miner PoW. Per ridurre al minimo i costi per chi possiede monete, si cerca di abbassare il più possibile le commissioni PoW. Dal momento che un elevato hash rate riveste un ruolo irrilevante nell’ambito della sicurezza, non è necessario stabilire un compenso maggiore per i miners PoW.

Un’altra forma di tassa di stazionamento è il trasferimento dei guadagni da una chiave privata all’altra. Alcune chiavi sono beneficiarie nette di questi trasferimenti, mentre altre no. Nel complesso, queste tasse non avvantaggiano né danneggiano coloro che possiedono monete. I loro effetti si annullano. Tuttavia, individualmente, queste tasse tendono a creare dei beneficiari e dei perdenti. Gli utenti attivi che fanno circolare moneta con una certa rarità ottengono un guadagno dal sistema. Anche un utente attivo che fa circolare moneta con una frequenza media otterrà un guadagno dal sistema, ma si tratta di un guadagno minimo. Un utente attivo che mette in circolo moneta con una certa frequenza probabilmente non ottiene alcun guadagno dal sistema. Gli utenti inattivi sicuramente non guadagneranno nulla dal sistema. Questa perdita funge da deterrente per coloro che non mantengono attivo un nodo.

Usage in Peercoin[modifica]

Il sistema proof-of-stake di Peercoin si basa sul concetto di “anzianità di moneta”, una misura ottenuta moltiplicando l’ammontare di valuta posseduta per il numero di giorni in cui è stata posseduta. Quando si genera un blocco proof-of-stake, l’utente invia una parte della cifra a se stesso, andando a consumare la propria anzianità di moneta in cambio di un compenso prestabilito. Questa transazione che conia monete ha più possibilità di successo a lungo termine finché non viene individuato un blocco valido, generando un nuovo blocco nella blockchain e un compenso per l’utente verificato. Questo processo mette in sicurezza la rete e produce gradualmente nuove monete nel tempo senza consumare eccessivamente la potenza di calcolo.

Nel sistema Peercoin sono usati sia i blocchi proof-of-work che quelli proof-of-stake, anche se la blockchain principale viene determinata in base all’anzianità di moneta consumata dal totale più elevato (dalla generazione proof-of-stake), piuttosto che in base dalla difficulty complessiva della catena (stabilita dai blocchi proof-of-work, come nel sistema Bitcoin). Lo sviluppatore di Peercoin sostiene che questo sistema renda più difficili i tentativi di attacchi malevoli alla rete.

Vedere anche su BitcoinWiki[modifica]

Bibliografia[modifica]