5 min read

Mining e PoW: come funzionano. Corso base ep. 3

Di Davide Grammatica

Nella terza puntata del corso base sulle crypto ci addentriamo nel mondo degli algoritmi di consenso distribuito. Stavolta parliamo del mining, che permette di rendere sicura la blockchain Bitcoin e di creare nuovi BTC.

Le basi del mining

Sì, sappiamo che con il mining si producono i Bitcoin. Ci sono dei computer, delle “macchine” che consumano energia per mantenere sicura la blockchain, ma esattamente questo processo come funziona? E come viene eseguito?

Lo scopriremo in questo terzo episodio del nostro corso base su Bitcoin, crypto, blockchain e dintorni, dove andiamo a indagare quelli che vengono chiamati “algoritmi di consenso”. Quegli algoritmi che permettono ai vari nodi che fanno parte di un network (da cui dipende la sicurezza della blockchain) di “andare d’accordo” su un’unica soluzione, e soprattutto di rimanere sempre integri, evitando che vengano attaccati e manomessi d’attori malevoli.

È importantissimo quindi studiarli, perché sono i fondamenti sui quali si basa il funzionamento e la sicurezza di Bitcoin e delle altre criptovalute. 

Il mining stesso può essere inteso in sé stesso come il più importante nonché longevo algoritmo di consenso distribuito, e colonna portante del mondo crypto, in quanto è ciò che gli permette di esistere, come fosse il suo cuore  pulsante. E soprattutto, è ciò che gli permette di essere sicuro, in relazione alla blockchain. Senza sicurezza, infatti, una criptovaluta non ha ragion d’essere.

Cercheremo quindi di capire che cos’è un algoritmo di consenso distribuito e a che cosa serve, per poi andare nello specifico esplorando il mondo del proof-of-work (PoW), che di fatto “è” il mining, e uno degli algoritmi di consenso distribuito esistenti nel mondo blockchain. 

L’indovinello dei generali bizantini e la blockchain

Iniziamo da un racconto che  risale a qualche secolo fa. Una sorta di indovinello da risolvere. Ci  sono un insieme di generali bizantini che si devono coordinare per sferrare un attacco a una  roccaforte. C’è un problema: ci possono essere tra questi generali alcuni traditori che non vogliono andare all’attacco.

Un attacco coordinato porterebbe alla vittoria, e se questi traditori iniziassero a instillare del dissenso tra i vari generali c’è il rischio che l’attacco vada a finire in un nulla di fatto. Abbiamo due categorie di attori: i generali che vogliono attaccare e vincere, e i traditori che invece vogliono scappare e salvarsi. 

Questi non sono tutti insieme, non si parlano tutti tra loro. Un traditore potrebbe quindi convincere altri generali della propria versione dei fatti, andando a sabotare l’attacco. Quindi, quale potrebbe essere un metodo per coordinare tutti insieme questi generali ad un obiettivo comune?

Questo è ciò che è passato alla storia come il “problema dei generali bizantini”. Nei sistemi  distribuiti, questo problema è più attuale che mai, in quanto si presenta una moltitudine di nodi da mettere d’accordo su un’unica soluzione. Ovvero la blockchain corretta, la sua versione “giusta” e immune da versioni fallaci che potrebbero comprometterla, andando a falsare le transazioni.

In un sistema centralizzato, mettere d’accordo tutti non è particolarmente difficile, perché c’è il  server centrale che svolge la funzione di “comandante” che impone la sua versione dei fatti.

L’obiettivo è quindi andare a coordinare tutti i nodi verso un’unica soluzione, e ciò è permesso proprio degli algoritmi di consenso distribuito. Tuttavia non è un procedimento banale, e ci sono alcune problematiche. 

La prima è come decidere chi ha ragione in caso di contenziosi. La seconda è riuscire a evitare che degli attori malevoli possano influenzare il processo di consenso. Qualunque esso sia, visto che esiste una varietà di meccanismi non indifferente, sebbene meno rilevanti del proof-of-work (PoW) e il proof-of-stake, ovvero il proof-of-authority, il proof-of-history (Solana) o il proof-of-capacity.

Il proof-of-work (PoW)

Il meccanismo PoW funziona (come si potrebbe intuire) grazie al “lavoro”, che è da intendersi come dimostrazione di un determinato consumo di energia, derivato a sua volta dallo sfruttamento di un tot di potenza di calcolo impegnato in una determinata versione della blockchain. 

Questo lavoro, di conseguenza, funge anche da validazione per ognuno dei nodi che competono nella blockchain, che fanno a gara per “risolvere” un determinato blocco di transazione. 

A questo punto resta da provare che il lavoro svolto per “chiudere” questo blocco sia stato fatto effettivamente, e senza andare ad aggirare il consenso distribuito. In caso contrario, infatti, ognuno potrebbe inventarsi da sé dei blocchi di transazione. 

Per capire come funziona il mining occorre in primo luogo comprendere come funziona l’hash, ovvero una funzione che prende un dato input e lo trasforma in un output (l’hash, appunto), in forma di stringa alfanumerica. Questa non è una striscia casuale, in quanto lo stesso input risulta sempre nello stesso output. In questo modo, non c’è nessun modo a partire dall’hash di risalire all’origine, ma se si conosce quest’ultima, allora si può anche verificare che sia corretto, testando in un secondo momento l’output. 

La funzione si definisce, proprio per questo motivo, “asimmetrica”, perché dall’output non si può risalire all’input. In questo senso, l’unico modo per risalire all’input dall’output è provare infiniti input, finché questo non viene “azzeccato”. Questi passaggi sono fondamentali per comprendere la funzione di hashing, alla base del mining. In parole semplici, si prende un dato, lo si da in pasto alla funzione, e si ottiene un output, da cui è impossibile risalire all’origine se non per infiniti tentativi. 

Il ruolo del miner

Il PoW, in sostanza, chiede tramite questo meccanismo ai miner di risolvere un complesso calcolo probabilistico, e il primo a riuscirci, validando il blocco in questione, ottiene anche la sua ricompensa. Per risolvere il calcolo, i miner di successo utilizzano speciali computer chiamati ASIC, che non fanno altro che provare in continuazione delle combinazioni di numeri e lettere (crittografia SHA-256) fino al momento in cui non viene risolto il problema proposto. 

Tutto ciò, se non fosse ancora chiaro, serve appunto per impedire manomissioni del network, e poiché la validazione comporta spese ingenti in macchinari ed energia elettrica, non sarebbe conveniente agire in modo malevolo, (si perderebbero solo dei soldi). Maggiore è la potenza di calcolo a disposizione, quindi, superiori saranno le possibilità di battere sul tempo tutti gli altri miner. Alla validazione del blocco, il vincitore riceve una certa quantità di Bitcoin come ricompensa, e la soluzione viene distribuita agli altri nodi. È qui che il sistema chiude il cerchio e ha senso: l’incentivo economico spinge a partecipare, e l’emissione di un nuovo blocco crea nuovi BTC, azione nota con il termine “mining” proprio perché, di fatto, si “estraggono” nuovi esemplari della moneta. Oggi, il 90% di questa criptovaluta è già in circolazione. Ogni quattro anni, il fenomeno chiamato halving dimezza l’emissione, e gli ultimi Bitcoin verranno minati nel 2140. 

In sintesi, il proof-of-work richiede come “stake” la potenza computazionale e, di conseguenza, anche un certo dispendio energetico. Chi sostiene questa spesa ha tutto l’interesse a fare le cose per bene e, grazie alla sua costruzione, garantisce che nessuna transazione errata possa farla franca. E alla validazione del blocco, nuovi Bitcoin (o altre crypto) vengono emessi.


X

Vuoi essere sempre sul pezzo?

Iscriviti alla newsletter. Niente spam, promesso!

Se ti iscrivi c'è un regalo per te: una guida completa per i prossimi airdrop!

bitcoin
Bitcoin (BTC) $ 27,584.39
ethereum
Ethereum (ETH) $ 1,665.47
tether
Tether (USDT) $ 1.00
bnb
BNB (BNB) $ 215.16
xrp
XRP (XRP) $ 0.508878
usd-coin
USDC (USDC) $ 0.999996
staked-ether
Lido Staked Ether (STETH) $ 1,666.84
solana
Solana (SOL) $ 24.06
cardano
Cardano (ADA) $ 0.262828
dogecoin
Dogecoin (DOGE) $ 0.062081
tron
TRON (TRX) $ 0.087916
the-open-network
Toncoin (TON) $ 2.05
polkadot
Polkadot (DOT) $ 4.13
matic-network
Polygon (MATIC) $ 0.559659
litecoin
Litecoin (LTC) $ 66.50
bitcoin-cash
Bitcoin Cash (BCH) $ 241.48
wrapped-bitcoin
Wrapped Bitcoin (WBTC) $ 27,632.40
shiba-inu
Shiba Inu (SHIB) $ 0.000007
chainlink
Chainlink (LINK) $ 7.66
dai
Dai (DAI) $ 0.999288
leo-token
LEO Token (LEO) $ 3.71
true-usd
TrueUSD (TUSD) $ 0.997531
uniswap
Uniswap (UNI) $ 4.50
avalanche-2
Avalanche (AVAX) $ 9.34
stellar
Stellar (XLM) $ 0.111264
monero
Monero (XMR) $ 147.47
okb
OKB (OKB) $ 43.03
ethereum-classic
Ethereum Classic (ETC) $ 16.42
binance-usd
BUSD (BUSD) $ 1.00
cosmos
Cosmos Hub (ATOM) $ 7.22
hedera-hashgraph
Hedera (HBAR) $ 0.050181
filecoin
Filecoin (FIL) $ 3.35
lido-dao
Lido DAO (LDO) $ 1.57
internet-computer
Internet Computer (ICP) $ 3.12
mantle
Mantle (MNT) $ 0.411923
crypto-com-chain
Cronos (CRO) $ 0.050554
maker
Maker (MKR) $ 1,462.66
quant-network
Quant (QNT) $ 89.26
aptos
Aptos (APT) $ 5.40
vechain
VeChain (VET) $ 0.017227
arbitrum
Arbitrum (ARB) $ 0.927041
optimism
Optimism (OP) $ 1.37
near
NEAR Protocol (NEAR) $ 1.12
kaspa
Kaspa (KAS) $ 0.050727
aave
Aave (AAVE) $ 69.63
rocket-pool-eth
Rocket Pool ETH (RETH) $ 1,811.59
the-graph
The Graph (GRT) $ 0.089096
algorand
Algorand (ALGO) $ 0.102694
bitcoin-sv
Bitcoin SV (BSV) $ 40.45
whitebit
WhiteBIT Coin (WBT) $ 5.16