Proof of Work: mining e adeguamento della difficoltà
Implementi un miner PoW e comprenda la ricerca del nonce e la difficoltà del target.
Proof of Work: mining e adeguamento della difficoltà è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.
Che cos'è la Proof of Work?
La Proof of Work (PoW) richiede al produttore di un blocco di eseguire un'attività computazionalmente costosa per aggiungere un blocco. Questo scoraggia lo spam e rende costosa la riscrittura della catena. Verificare la prova è semplice (un solo hash). Il lavoro richiede numerosi calcoli di hash.
La sfida del mining
PoW di Bitcoin: trovare un nonce tale che SHA256d(block_header) < target. Il target è un numero a 256 bit. Un target più piccolo richiede più zeri iniziali nell'output dell'hash, rendendo i nonce validi più rari e difficili da trovare.
Dimostrazione della PoW in Python
import hashlib def mine(data, difficulty): target = "0"*difficulty nonce = 0 while True: h = hashlib.sha256(f"{data}{nonce}".encode()).hexdigest() if h.startswith(target): return nonce, h nonce += 1 nonce, h = mine("block data", 4) print(nonce, h) # hash starts with "0000"
Target della difficoltà
Il campo "bits" dell'intestazione del blocco Bitcoin codifica il target corrente. Target = coefficient * 256^(exponent-3). Esempio: bits=0x1703a30c → target = 0x03a30c * 2^(8*(0x17-3)) = un numero a 256 bit per il quale sono necessari circa 72 bit iniziali a zero.
Aggiustamento della difficoltà
Bitcoin aggiusta la difficoltà ogni 2016 blocchi (circa 2 settimane). Aggiustamento del target: new_target = old_target * (actual_time / 2016 * 10 minutes). Se i blocchi sono stati creati con una media inferiore a 10 minuti, il target diminuisce (la difficoltà aumenta). Se sono stati creati più lentamente, il target aumenta (la difficoltà diminuisce). In questo modo si mantiene un tempo di circa 10 minuti per blocco.
Hash rate e sicurezza
L'hash rate della rete (H/s) misura la potenza complessiva di mining. Un hash rate maggiore corrisponde a una probabilità minore, per unità di tempo, di trovare casualmente un nonce valido. Per riscrivere k blocchi, un attaccante ha bisogno di oltre il 50% dell'hash rate della rete, mantenuto per un tempo proporzionale a k*10 minuti.
Attacco del 51%
Con oltre il 50% dell'hash rate, un attaccante può: (1) minare un fork segreto, (2) includere o escludere transazioni, (3) effettuare un double-spend pubblicando una catena più lunga dopo la conferma di un pagamento. Non può: rubare le coin altrui, creare coin dal nulla o annullare transazioni profondamente sepolte nella catena.
Mining con ASIC e centralizzazione
Il mining SHA256d di Bitcoin è dominato dagli ASIC (Application-Specific Integrated Circuits), chip ottimizzati per una singola funzione hash. Gli ASIC sono 10^6 volte più efficienti delle CPU. Questo concentra il mining nei grandi data center, aumentando i timori di centralizzazione.
PoW a elevato consumo di memoria
Ethereum utilizzava Ethash (ora deprecato), una PoW memory-hard che richiedeva un grande dataset DAG. Questa proprietà ostacola gli ASIC (la larghezza di banda della memoria è difficile da ottimizzare a basso costo). Monero usa RandomX (ottimizzato per CPU e resistente agli ASIC). Zcash usa Equihash (memory-hard).
Selfish mining
Strategia di selfish mining: trattenere un blocco trovato, minare un secondo blocco e poi rilasciarli entrambi simultaneamente. Se il rilascio è sincronizzato correttamente, i miner onesti sprecano lavoro sul blocco orfano. In media, per risultare redditizia richiede circa il 33% dell'hash rate, non il 51%.
Alternativa: Proof of Stake
La Proof of Stake (PoS, usata da Ethereum dopo il Merge) sostituisce il lavoro di hash con criptovaluta messa in staking. I validatori vengono scelti per proporre i blocchi in proporzione alla quantità messa in staking. La PoS usa il 99,95% di energia in meno rispetto alla PoW. Compromesso: diverse ipotesi di fiducia e diversa economia degli attacchi.
Verifica rapida
Che cosa cerca di mantenere l'aggiustamento della difficoltà di Bitcoin?
Riepilogo
La PoW richiede di trovare un nonce tale che SHA256d(header) < target. La difficoltà viene aggiustata ogni 2016 blocchi. Un hash rate del 51% consente attacchi double-spend. Gli ASIC dominano il mining di Bitcoin; le funzioni memory-hard ostacolano gli ASIC. Prossimo argomento: Bitcoin Script e firme UTXO.
Domande Frequenti
La lezione «Proof of Work: mining e adeguamento della difficoltà» è gratuita?
Sì — il testo completo di «Proof of Work: mining e adeguamento della difficoltà» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.
Cosa imparerò in «Proof of Work: mining e adeguamento della difficoltà»?
Implementi un miner PoW e comprenda la ricerca del nonce e la difficoltà del target. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cryptology Academy?
Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Proof of Work: mining e adeguamento della difficoltà»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?
Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Catene di hash e collegamento dei blocchi
- Alberi di Merkle: integrità delle transazioni su larga scala
- Proof of Work: mining e adeguamento della difficoltà
- Script di Bitcoin e verifica delle firme UTXO