5 min read

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

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!

Accetto le privacy policy, per info leggi qui

Inoltre se ti iscrivi c'è un regalo per te: un report sui trend da seguire del 2023!

bitcoin
Bitcoin (BTC) $ 23,416.27
ethereum
Ethereum (ETH) $ 1,608.70
tether
Tether (USDT) $ 1.00
usd-coin
USD Coin (USDC) $ 1.00
bnb
BNB (BNB) $ 316.97
xrp
XRP (XRP) $ 0.413557
binance-usd
Binance USD (BUSD) $ 1.00
cardano
Cardano (ADA) $ 0.390798
dogecoin
Dogecoin (DOGE) $ 0.089820
matic-network
Polygon (MATIC) $ 1.17
okb
OKB (OKB) $ 39.55
solana
Solana (SOL) $ 24.30
staked-ether
Lido Staked Ether (STETH) $ 1,605.89
polkadot
Polkadot (DOT) $ 6.58
shiba-inu
Shiba Inu (SHIB) $ 0.000012
litecoin
Litecoin (LTC) $ 94.91
avalanche-2
Avalanche (AVAX) $ 20.61
tron
TRON (TRX) $ 0.063650
uniswap
Uniswap (UNI) $ 6.88
dai
Dai (DAI) $ 1.00
wrapped-bitcoin
Wrapped Bitcoin (WBTC) $ 23,339.25
cosmos
Cosmos Hub (ATOM) $ 13.52
the-open-network
Toncoin (TON) $ 2.49
chainlink
Chainlink (LINK) $ 7.36
leo-token
LEO Token (LEO) $ 3.66
monero
Monero (XMR) $ 183.19
ethereum-classic
Ethereum Classic (ETC) $ 22.30
aptos
Aptos (APT) $ 18.03
bitcoin-cash
Bitcoin Cash (BCH) $ 136.24
stellar
Stellar (XLM) $ 0.093609
apecoin
ApeCoin (APE) $ 6.10
quant-network
Quant (QNT) $ 150.95
near
NEAR Protocol (NEAR) $ 2.53
crypto-com-chain
Cronos (CRO) $ 0.082034
filecoin
Filecoin (FIL) $ 5.36
lido-dao
Lido DAO (LDO) $ 2.27
algorand
Algorand (ALGO) $ 0.260815
vechain
VeChain (VET) $ 0.024650
internet-computer
Internet Computer (ICP) $ 6.09
hedera-hashgraph
Hedera (HBAR) $ 0.068660
decentraland
Decentraland (MANA) $ 0.761900
axie-infinity
Axie Infinity (AXS) $ 11.74
aave
Aave (AAVE) $ 86.89
the-sandbox
The Sandbox (SAND) $ 0.775205
fantom
Fantom (FTM) $ 0.474481
eos
EOS (EOS) $ 1.10
flow
Flow (FLOW) $ 1.09
elrond-erd-2
MultiversX (EGLD) $ 44.97
theta-token
Theta Network (THETA) $ 1.10
tezos
Tezos (XTZ) $ 1.16