Proof of Work (PoW)
Ethereum, come Bitcoin, attualmente utilizza un protocollo di consenso detto Proof of Work (PoW) che consente ai nodi della rete Ethereum di concordare sullo stato di tutte le informazioni registrate sulla blockchain Ethereum e impedisce alcuni tipi di attacchi economici.
Prerequisiti
Per comprendere meglio questa pagina, consigliamo di leggere prima transazioni e blocchi.
Cos'Γ¨ la Proof of Work (PoW)?
La Proof of Work (PoW) Γ¨ il meccanismo che consente di raggiungere il consenso nella rete decentralizzata Ethereum o di concordare su alcuni aspetti come il saldo degli account e l'ordine delle transazioni. Questo impedisce che gli utenti spendano due volte le loro monete e assicura che la catena Ethereum sia incredibilmente difficile da attaccare o sovrascrivere.
Proof of Work e mining
La Proof of Work Γ¨ l'algoritmo sottostante che imposta la difficoltΓ e le regole per il lavoro che i miner devono svolgere. Il mining Γ¨ il "lavoro" da svolgere. Si tratta dell'atto di aggiungere blocchi validi alla catena. Questo Γ¨ importante perchΓ© la lunghezza della catena aiuta la rete a identificare la catena Ethereum valida e a capire lo stato attuale di Ethereum. PiΓΉ "lavoro" viene svolto, piΓΉ Γ¨ lunga la catena, piΓΉ elevato Γ¨ il numero di blocchi e piΓΉ alta Γ¨ la certezza che la rete si trovi allo stato delle cose attuale.
Maggiori informazioni sul mining
Come funziona la Proof of Work di Ethereum?
Le transazioni di Ethereum vengono elaborate sono in blocchi. Ogni blocco ha:
- difficoltΓ del blocco, ad esempio: 3.324.092.183.262.715
- un mixHash, ad esempio:
0x44bca881b07a6a09f83b130798072441705d9a665c5ac8bdf2f39a3cdf3bee29
- nonce, ad esempio:
0xd3ee432b4fb3d26b
Questi dati del blocco sono correlati direttamente alla PoW.
Il lavoro nella Proof of Work
Il protocollo di Proof of Work, detto Ethash, richiede che i miner competano tramite processi di tentativo ed errore per trovare il nonce di un blocco. Solo i blocchi con un nonce valido possono essere aggiunti alla catena.
Quando compete per creare un blocco, un miner inserisce ripetutamente un set di dati, che si puΓ² ottenere solo tramite il download e l'esecuzione dell'intera catena (che Γ¨ quello che fa il miner), attraverso una funzione matematica. Lo scopo Γ¨ quello di generare un mixHash che si trovi sotto il nonce target, come dettato dalla difficoltΓ del blocco. Il miglior modo per farlo Γ¨ tramite un processo di continui tentativi ed errori.
La difficoltΓ determina il target per l'hash. PiΓΉ basso Γ¨ il target, piΓΉ piccolo Γ¨ il set di hash validi. Una volta generato, Γ¨ incredibilmente facile per gli altri miner e client verificarne la bontΓ . Anche se dovesse cambiare solo una transazione, l'hash verrebbe completamente stravolto, segnalando una frode.
L'hashing rende le frodi facili da individuare. Ma la PoW Γ¨ anche un grande deterrente contro gli attacchi alla catena.
Proof of Work e sicurezza
I miner sono incentivati a fare questo lavoro sulla catena principale di Ethereum. L'incentivo a iniziare una catena propria Γ¨ molto ridotto per i miner, perchΓ© minerebbe il sistema. Le blockchain fanno affidamento sul fatto di avere un solo stato di riferimento, che Γ¨ considerato l'unica fonte di veritΓ . E gli utenti sceglieranno sempre la catena piΓΉ lunga o piΓΉ "pesante".
L'obiettivo della PoW Γ¨ di estendere la catena. La catena piΓΉ lunga Γ¨ quella piΓΉ credibile in termini di validitΓ , perchΓ© Γ¨ quella che racchiude in sΓ© la maggior parte del lavoro computazionale eseguito. Nel sistema PoW di Ethereum Γ¨ praticamente impossibile creare nuovi blocchi che cancellino transazioni o che ne creino di false, o mantenere una seconda catena. Questo perchΓ© un miner malevolo dovrebbe sempre risolvere il nonce del blocco piΓΉ velocemente di chiunque altro.
Per creare costantemente blocchi malevoli ma validi, bisognerebbe avere piΓΉ del 51% della potenza di mining della rete, per poter battere tutti gli altri. Servirebbe davvero un'enorme potenza di calcolo per essere in grado di affrontare questa quantitΓ di "lavoro". E il costo dell'energia utilizzata potrebbe anche superare i guadagni ottenibili con un attacco.
L'economia della Proof of Work
La PoW Γ¨ anche responsabile del rilascio di nuova valuta nel sistema e dell'incentivazione dei miner a fare il proprio lavoro.
I miner che creano correttamente un blocco sono ricompensati con 2 ETH freschi di conio e con tutte le commissioni sulle transazioni all'interno del blocco. Un miner puΓ² ottenere anche 1,75 ETH per un blocco zio (uncle block), che Γ¨ un blocco valido, creato contemporaneamente al blocco corretto di un altro miner. Questa condizione in genere si verifica a causa della latenza della rete.
FinalitΓ
Nelle reti distribuite, una transazione ha la sua finalitΓ quando Γ¨ parte di un blocco che non puΓ² cambiare.
Dato che i miner lavorano in modo decentralizzato, Γ¨ possibile che avvenga il mining di due blocchi validi nello stesso momento. In questo caso, si crea una diramazione temporanea. Alla fine verrΓ accettata una sola catena, che sarΓ quella piΓΉ lunga che verrΓ creata quando verranno eseguiti il mining e l'aggiunta di un blocco successivo.
Per complicare ulteriormente le cose, le transazioni che erano state rifiutate sulla diramazione temporanea potrebbero essere state aggiunte alla catena accettata. Questo significa che la catena potrebbe essere annullata. Quindi la finalitΓ si riferisce al tempo per cui Γ¨ necessario attendere prima di considerare una transazione irreversibile. Per Ethereum il tempo consigliato Γ¨ di 6 blocchi oppure poco piΓΉ di un minuto. Dopo questo periodo di tempo si puΓ² dire con ragionevole certezza che la transazione Γ¨ andata a buon fine. Ovviamente Γ¨ possibile attendere di piΓΉ per avere una maggiore certezza.
Questa Γ¨ una cosa da tenere a mente quando si progettano dapp, perchΓ© dare informazioni sbagliate agli utenti in merito alle transazioni potrebbe tradursi in una scarsa esperienza utente. Specialmente se il valore della transazione Γ¨ elevato.
Ricorda che il periodo di tempo non include l'attesa che intercorre prima che la transazione venga prelevata da un miner.
Pro e contro
Pro | Contro |
---|---|
La PoW Γ¨ neutrale. Non servono ETH per iniziare e le ricompense per i blocchi consentono di passare da 0 ETH a un saldo positivo. Con la proof of stake servono ETH per iniziare. | La PoW consuma molta energia, e questo va a scapito dell'ambiente. |
La PoW Γ¨ un meccanismo di consenso testato e ben collaudato che mantiene Bitcoin ed Ethereum sicure e decentralizzate da molti anni. | Chi desidera occuparsi di mining deve avere apparecchiature specializzate, con un conseguente notevole investimento iniziale. |
Rispetto alla Proof of Stake è relativamente facile da implementare. | A causa della crescente richiesta di potenza di calcolo, alcuni i gruppi di mining potrebbero potenzialmente dominare l'attività di mining, portando così alla centralizzazione e a rischi di sicurezza. |
Confronto con la Proof of Stake
A un alto livello, la Proof of Stake ha lo stesso obiettivo della Proof of Work: permettere a una rete decentralizzata di raggiungere il consenso in totale sicurezza. Ma ci sono alcune differenze nei processi e nel personale:
- La PoS scambia l'importanza della potenza di calcolo con gli ETH in staking
- La PoS sostituisce i miner con i validatori. I validatori fanno staking con i loro ETH per avere la possibilitΓ di creare nuovi blocchi.
- I validatori non competono per creare blocchi, sono invece scelti casualmente da un algoritmo.
- La finalitΓ Γ¨ piΓΉ chiara: in alcuni checkpoint, se i 2/3 dei validatori concordano sullo stato del blocco, questo Γ¨ considerato definitivo. I validatori devono scommettere il loro intero stake su questo, per cui se dovessero provare a cospirare in seguito, perderebbero il loro intero stake.
Maggiori informazioni sulla Proof of Stake
Letture consigliate
Argomenti correlati
Aiutaci con questa pagina
Se conosci l'argomento e vuoi contribuire, modifica questa pagina e condividi un po' del tuo sapere.
Il tuo nome verrΓ aggiunto ai crediti e aiuterai la community di Ethereum!
Usa questo flessibile modello di documentazione
Domande? Chiedicelo nel canale #content sul nostro server Discord
Modifica pagina