3 Maggio 2021 18:16

In che modo una catena di blocchi impedisce la doppia spesa di Bitcoin?

Una delle principali preoccupazioni di qualsiasi sviluppatore di criptovalute è il problema della doppia spesa. Questo si riferisce all’incidenza di un individuo che spende un saldo di quella criptovaluta più di una volta, creando effettivamente una disparità tra il record di spesa e la quantità di quella criptovaluta disponibile, nonché il modo in cui viene distribuita.

La questione della doppia spesa è un problema che il contante non ha; se paghi un panino con un conto di $ 10, consegnandolo al produttore del panino, non puoi voltarti e spendere gli stessi $ 10 altrove. Una transazione che utilizza una valuta digitale come il bitcoin, tuttavia, avviene interamente in modo digitale. Ciò significa che è possibile copiare i dettagli della transazione e ritrasmetterli in modo che lo stesso BTC possa essere speso più volte da un singolo proprietario. Di seguito, esamineremo in che modo gli sviluppatori di criptovaluta si sono assicurati che la doppia spesa non possa avvenire.

Punti chiave

  • Un problema tecnico che sorge con la nozione di valuta digitale è la capacità di qualcuno di duplicare il denaro digitale e spenderlo simultaneamente in due o più posti.
  • Questo problema di “doppia spesa” viene evitato nelle criptovalute basate su blockchain come Bitcoin utilizzando un meccanismo di consenso noto come proof-of-work (PoW).
  • Questo PoW viene eseguito da una rete decentralizzata di “minatori” che non solo assicurano la fedeltà delle transazioni passate sul registro della blockchain, ma rilevano e prevengono anche la doppia spesa.

Capire la Blockchain

La blockchain che sta alla base di una valuta digitale come il bitcoin non è in grado di impedire da sola la doppia spesa. Piuttosto, tutte le diverse transazioni che coinvolgono la criptovaluta rilevante vengono pubblicate sulla blockchain, dove vengono verificate separatamente e protette da un processo di conferma. Nel caso di bitcoin e molte altre criptovalute, le transazioni confermate in questo modo diventano irreversibili; sono pubblicati pubblicamente e mantenuti per sempre.

Bitcoin è stata la prima grande valuta digitale a risolvere il problema della doppia spesa. Lo ha fatto implementando questo meccanismo di conferma e mantenendo un sistema di registro comune e universale. In questo modo, la blockchain di bitcoin conserva i record delle transazioni con data e ora che risalgono alla fondazione della criptovaluta nel 2009.

In termini di Bitcoin, un ” blocco ” è un file di dati registrati in modo permanente. Tutte le transazioni recenti sono scritte in blocchi, proprio come un libro mastro delle transazioni azionarie in una borsa valori. Le informazioni dai blocchi vengono aggiunte al libro mastro ogni pochi minuti; tutti i nodi della rete mantengono una copia del registro blockchain. Gli utenti possono navigare nella blockchain per bitcoin e rivedere le transazioni solo in termini di quantità. I dettagli sulle identità dell’acquirente e del venditore in qualsiasi transazione sono protetti da una crittografia di alto livello, che protegge anche il libro mastro da manomissioni da parte di fonti esterne. Quando il registro blockchain viene aggiornato, lo sono anche tutti i portafogli bitcoin.

Affrontare la doppia spesa

Immagina di avere 1 BTC e cerchi di spenderlo due volte in due transazioni separate. Puoi provare a farlo inviando lo stesso BTC a due indirizzi di portafoglio bitcoin separati. Entrambe queste transazioni andranno quindi nel pool di transazioni non confermate. La prima transazione verrebbe approvata tramite il meccanismo di conferma e quindi verificata nel blocco successivo. Tuttavia, la seconda transazione verrebbe riconosciuta come non valida dal processo di conferma e non verrebbe verificata. Se entrambe le transazioni vengono estratte dal pool per la conferma contemporaneamente, la transazione con il maggior numero di conferme verrà inclusa nella blockchain, mentre l’altra verrà scartata.

Sebbene questo affronti efficacemente la questione della doppia spesa, non è privo di problemi. Ad esempio, il destinatario previsto della seconda transazione (fallita) non avrebbe preso parte alla transazione stessa fallendo, eppure quella persona non avrebbe ricevuto il bitcoin che aveva previsto. Molti commercianti attendono almeno 6 conferme di una transazione (il che significa che sei blocchi successivi di transazioni sono stati aggiunti alla blockchain dopo la transazione in questione). A questo punto, il commerciante può tranquillamente presumere che la transazione sia valida.

Rimangono altre vulnerabilità in questo sistema che potrebbero consentire il verificarsi di attacchi a doppia spesa. Ad esempio, se un utente malintenzionato è in qualche modo in grado di controllare almeno il 51% della potenza della rete, può impegnare una doppia spesa. Se un utente malintenzionato fosse in qualche modo in grado di ottenere il controllo di questa grande potenza di calcolo, potrebbe invertire le transazioni e creare una blockchain privata separata. Tuttavia, la rapida crescita del bitcoin ha praticamente assicurato che questo tipo di attacco è impossibile.

Spiegazione della prova di lavoro e del “mining”

Ora andiamo un po ‘più sul tecnico. Il modo in cui gli utenti rilevano manomissioni come un tentativo di doppia spesa in pratica è attraverso gli  hash, lunghe stringhe di numeri che servono come prova di lavoro (PoW). Metti un dato insieme di dati attraverso una funzione hash (bitcoin usa SHA-256) e genererà sempre e solo un hash. A causa dell ‘”effetto valanga”, tuttavia, anche una piccola modifica a qualsiasi parte dei dati originali risulterà in un hash totalmente irriconoscibile. Qualunque sia la dimensione del set di dati originale, l’hash generato da una data funzione avrà la stessa lunghezza. L’hash è una funzione unidirezionale: non può essere utilizzato per ottenere i dati originali, ma solo per verificare che i dati che hanno generato l’hash corrispondano ai dati originali.

Generare un qualsiasi hash per un insieme di transazioni bitcoin sarebbe banale per un computer moderno, quindi per trasformare il processo in “lavoro”, la rete bitcoin imposta un certo livello di “difficoltà”. Questa impostazione viene regolata in modo che un nuovo blocco venga ” estratto ” – aggiunto alla blockchain generando un hash valido – circa ogni 10 minuti. L’impostazione della difficoltà si ottiene stabilendo un  “obiettivo” per l’hash : più basso è l’obiettivo, più piccolo è l’insieme di hash validi e più difficile è generarne uno. In pratica, questo significa un hash che inizia con una lunga stringa di zeri: l’hash per il blocco # 429818, ad esempio, è 000000000000000004dd3426129639082239efd583b5273b1bd75e8d78ff2e8d. Quel blocco contiene 2.012 transazioni che coinvolgono poco più di 1.000 bitcoin, così come l’intestazione del blocco precedente. Se un utente ha modificato l’importo di una transazione di 0.0001 bitcoin, l’hash risultante sarebbe irriconoscibile e la rete rifiuterebbe la frode.

Poiché un determinato set di dati può generare solo un hash, come fanno i minatori ad assicurarsi di generare un hash al di sotto del target? Modificano l’input aggiungendo un numero intero, chiamato  nonce  (“numero usato una volta”). Una volta trovato un hash valido, viene trasmesso alla rete e il blocco viene aggiunto alla blockchain.

L’estrazione mineraria è un processo competitivo, ma è più una lotteria che una corsa. In media, qualcuno genererà una prova di lavoro accettabile ogni dieci minuti, ma nessuno lo sa chi sarà. I minatori si uniscono per aumentare le loro possibilità di blocchi minerari, il che genera commissioni di transazione e, per un tempo limitato, una ricompensa di bitcoin di nuova creazione.

La prova del lavoro rende estremamente difficile alterare qualsiasi aspetto della blockchain, poiché tale alterazione richiederebbe il re-mining di tutti i blocchi successivi. Rende inoltre difficile per un utente o un pool di utenti monopolizzare la potenza di calcolo della rete, poiché i macchinari e la potenza necessari per completare le funzioni hash sono costosi.