(Guest post di Massimo Musumeci, Massimo ci accompagnerà nella sezione dedicata a Bitcoin)
Spesso ci si confonde riguardo la proof of work eppure questa è una delle caratteristiche del protocollo che ne costituisce il più importante elemento di sicurezza e conferisce quindi a Bitcoin le sue invidiabili caratteristiche relative al valore che tutti gli attribuiscono.
POW
La proof of work è costituita da un dato (piece of information) estremamente dispendioso da ottenere ma molto facile da verificare, che il miner deve produrre per validare il proprio blocco candidato.
La procedura per la proof of work viene eseguita su un blocco candidato il quale raccoglie tutte le transazioni che il nodo ha nella sua propria mempool. Tali transazioni sono verificate indipendentemente da ciascun nodo, ma non confermate, cioè non fanno ancora parte della blockchain, perchè non sono ancora state minate ovvero inserite appunto in un blocco valido.
Quando il miner fa l’hash del blockheader, sta in realtà effettivamente considerando tutte le transazioni presenti nel blocco, in quanto la merkle root del candidate block riassume tutte le transazioni che sono state inserite nel blocco, essendo il valore di “digest” della merkle tree. La merkle tree non è altro che una struttura ad albero di hash delle transazioni che riassume via via tutte le transazioni che ha considerato, fino ad arrivare alla cima, ovvero un unico hash complessivo che è l'”impronta” di tutte le transazioni.
La procedura di validazione
Quindi il POW si ottiene con un procedimento con il quale il miner crea l’hash del blockheader, in modo ripetuto, finchè non riesce a trovare un valore di tale hash che sia inferiore ad un valore prestabilito dal protocollo (target) che può variare tramite un autoaggiustamento ogni 2016 blocchi. In questo caso si parla di procedimento di “aggiustamento della difficulty” che reagisce automaticamente alla hashrate disponibile nella rete calibrando conseguentemente la difficulty e facendo cosi in modo che la rete Bitcoin produca 1 blocco ogni circa 10 minuti, non meno e non di più.
I requisiti di validità del candidate block si ottengono con
Per potere soddisfare questo valore, il miner, effettua tantissimi tentativi cambiando alcuni parametri dell’header, tra cui il nonce e l’extra nonce.
Il reward al miner
Tra le transazioni presenti nel blocco la prima è la coinbase transaction che conferisce a sè stesso il reward per avere minato il blocco secondo il valore stabilito dalle regole del protocollo.
Le fee delle transazioni inserite fanno pure parte della ricompensa del miner. Per questo motivo il miner è incentivato ad aggiungere il più possibile di transazioni partendo da quelle con fee più elevata. Tuttavia blocchi con pochissime tx sono comunque ammessi.
Una volta fatto questo il blocco è propagato alla rete e tutti gli altri nodi verificano il rispetto del protocollo e quindi verificano il blocco. Se il blocco è verificato allora diventa il TIP, ovvero il blocco piu alto.
Qualora il blocco avesse un reward difforme, ovvero non compatibile con il valore corrente ammesso dal protocollo, ecco che sarebbe scartato dagli altri nodi e il miner non avrebbe nessuna ricompensa. Questo evento fa parte del meccanismo di vantaggio/punizione del sistema economico di incentivi di Bitcoin.
Spero di essere stato d’aiuto a comprendere come funziona il meccanismo alla base della validazione delle transazioni della rete Bitcoin. Qualora abbiate domande, potete inserire un commento e contattarmi, rimarrò a disposizione.