Blockchain spiegato

blockchain-101

Una blockchain è un registro pubblico e distribuito di tutte le transazioni che avranno luogo su quella blockchain. Sebbene Bitcoin sembri essere sinonimo di blockchain, la tecnologia blockchain non è solo Bitcoin. Bitcoin è l’implementazione più grande e più conosciuta della tecnologia, ma alcune delle altre grandi implementazioni open source lo sono Ethereum e Litecoin.

Molto semplicemente, la blockchain è un software che gira su milioni di computer. Questi computer (o nodi) comunicano tra loro per garantire che i dati rimangano sincronizzati.

Ma come funziona e perché è stato inventato?

Il problema della doppia spesa

Una delle responsabilità primarie di un’autorità centrale e fidata in una transazione finanziaria, come una banca, è prevenire ciò che è noto come “doppia spesa“problema. Le banche fungono da intermediari di fiducia per garantire che il denaro non venga speso digitalmente due volte. Le banche assicurano che questo scambio di denaro avvenga entro un transazione.

Una transazione, per definizione, è atomica, cioè o avviene o non avviene, non c’è uno stato intermedio. Anche le transazioni sono sequenziali. Ciò significa che una transazione segue e/o precede sempre un’altra transazione. Le transazioni non avvengono contemporaneamente.

Ad esempio, diciamo che Hannah ha $ 10 e deve pagare Alice $ 3 e Liam $ 5. La conclusione logica e di successo di queste transazioni comporterebbe per Hannah con $ 2, Alice con $ 3 e Liam con $ 5. Hannah non può inviare lo stesso denaro ad Alice e Liam nello stesso momento. Se lo facesse, Hannah finirebbe con $ 5, Alice i suoi $ 3 e Liam i suoi $ 5. Hannah avrebbe magicamente creato 3 dollari in più. Avrebbe speso i suoi soldi due volte.

Senza un’autorità centrale fidata come una banca che tenga i registri di ciascuna di queste transazioni, il sistema finanziario crollerebbe rapidamente.

Pertanto, sebbene l’idea di un libro mastro decentralizzato e di una valuta digitale sia in circolazione dagli anni ’90, il problema della doppia spesa è stato un enorme ostacolo per la sua attuazione pratica.

Come risolve il problema Bitcoin/Blockchain

Nel 2009, Satoshi Nakamoto, un individuo ancora da identificare, ha pubblicato a carta bianca in cui affermava di aver risolto il problema della doppia spesa senza che un’agenzia centrale facesse da arbitro, tramite crittografia digitale, teoria dei giochi e informatica.

Nick Szabo aveva presentato Bitgold nel 2005. Bitcoin è così simile a Bitgold e condivide così tanti dei suoi concetti che alcune persone sospettano che Szabo sia Satoshi Nakamoto.

Crittografia a chiave pubblica

Per capire come funziona la tecnologia blockchain, è necessario comprendere la crittografia a chiave pubblica. I dettagli tecnici completi di questo argomento esulano dallo scopo di questo articolo. Maggiori dettagli sono disponibili qui.

Ad un livello molto alto, la crittografia a chiave pubblica si basa su due chiavi: una chiave pubblica e una chiave privata. Queste due chiavi sono collegate ma separate come di seguito:

  • Solo la chiave pubblica può decifrare i dati che sono stati crittografati dalla chiave privata corrispondente
  • La chiave pubblica può verificare i dati firmati dalla chiave privata corrispondente

La chiave pubblica può essere condivisa in sicurezza con altri, quindi “pubblica”. La chiave privata deve essere tenuta segreta per motivi di sicurezza. La chiave pubblica può essere derivata dalla chiave privata ma non viceversa.

Ad esempio, supponiamo che Bob voglia trasmettere un messaggio segreto ad Alice. Bob dovrà conoscere la chiave pubblica di Alice per crittografare il messaggio prima di inviarglielo. Poiché la chiave pubblica non è un segreto, Alice è libera di inviarla a Bob. Quando Alice riceve il messaggio crittografato, può decrittografarlo utilizzando la sua chiave privata. Chiunque nel mezzo che intercetta il messaggio non può decifrarlo senza la chiave privata di Alice.

Per riferimento, ecco come appare una chiave pubblica:

305C300D06092A864886F70D01010105 00034B003048024100A251C92CCA3E7B 6599146DDB10044807B3AA1EFA8BE627 4D329765E0CC5A0EA03CA8F010524A89 2484A7C96498660A20DBD3F37001E95B2CB010

Un messaggio crittografato potrebbe assomigliare a questo:

—–BEGIN PGP MESSAGE —– hIwCMavvb4t6z90BA / 42UOAdWvnzfhRG2xXyYe203CISLsn2O39vM / y640hNbSl7 U29aNGZFfLMRGn7eLZG43SWwBz4cHjphG6iAzeLftRgHkLggxXA9VpGki5PyNID9 B0rk4TpRVE3qzgTbdio69aMlK6BdAQ4zWkyxSCi0oR3Vpnh + VVZyOVyaX8etlYRM AvUTsuDYCkr1AQH + OlA4ntqhxoPP / SJpKm5ugMLYiiij8ak8V90a8IYMkYB0CzMr liOJ6ZZxQm1x8orgjL / 6Bm5EoSvN4eCCeA / xXKYAAAHXLhG47kVhJkjlPrI / U / sr 2aQEm6r + aU1s0ziU1LxF2c5DAW6cD5b4xH + EbvYrnQQJClNMh9y03SjviXvnqFDC O4M70u3iLC50 + em4PouqM1DZdoW8O5pb = vhFx —– END PGP MESSAGE—–

Funzioni hash – SHA-256

La crittografia garantisce che i messaggi tra due parti siano sicuri e affidabili. Tuttavia, il destinatario deve anche verificare che il messaggio che ha ricevuto non sia stato manomesso. Per fare ciò, ogni messaggio trasmesso è firmato digitalmente utilizzando il suo valore hash.

Un hash è come una firma digitale di un messaggio. Numerosi algoritmi, noti come funzioni hash, sono stati sviluppati per generare un hash, come MD5 e SHA-1, ma quello più comunemente usato ora si chiama SHA-256. I dettagli dell’hashing e la matematica coinvolti nelle varie funzioni di hash non sono necessari per la comprensione della blockchain.

Una funzione hash è una funzione unidirezionale. Ciò significa che l’hash di un messaggio è sempre lo stesso quando si utilizza la stessa funzione. Tuttavia, il messaggio non può essere decifrato dall’hash.

SHA-256 produce sempre un valore hash a 256 bit. Per esempio:

[id tabella=1 /]

Come puoi vedere, una singola modifica ai dati (L maiuscola in questo caso) cambia completamente l’hash.

L’input dei dati alla funzione hash può essere semplice come una singola parola, oppure potrebbe essere l’intero dizionario e produrrà sempre un valore hash a 256 bit simile a quelli sopra.

Cosa sono le catene?

Come accennato in precedenza, qualsiasi set di dati può essere passato attraverso una funzione hash per generare l’hash corrispondente. In una blockchain, questo set di dati sono le transazioni che avvengono su di esso. Ogni transazione in una blockchain è firmata digitalmente utilizzando il suo hash, attualmente utilizzando la funzione SHA-256. Tutte le transazioni successive includeranno la firma digitale della transazione precedente. Questo forma a catena di transazioni in modo tale che se si dovesse modificare qualsiasi transazione nella catena, cambierà il valore hash di tutte le transazioni successive. Ciò semplifica l’identificazione di qualsiasi catena in cui una transazione precedente è stata modificata semplicemente confrontando i valori hash.

Esempio: supponiamo che Bob debba trasferire $ 10 ad Alice e altri $ 5 a Charlie. Poiché le transazioni sono atomiche, il trasferimento di $ 10 da parte di Bob ad Alice avverrà per primo. Questa transazione sarà firmata digitalmente utilizzando il suo hash SHA-256. Anche la prossima transazione di Bob che trasferisce $ 5 a Charlie sarà firmata digitalmente, ma questa volta includerà anche l’hash della transazione precedente.

[id tabella=2/]

Naturalmente, le transazioni su una blockchain non saranno così, ma questo ne dà una rappresentazione generale.

Che cos’è l’estrazione mineraria?

Come accennato in precedenza, la blockchain è una rete di nodi che eseguono lo stesso software che comunicano tra loro per garantire che i dati siano sincronizzati. Alcuni di questi sono nodi specializzati chiamati minatori.

Lo scopo dei minatori è verificare le transazioni che vengono eseguite sulla blockchain. Quando un numero di catene di transazioni è stato verificato, vengono combinate per formare un bloccare di transazioni.

Come ricompensa per aver verificato correttamente e onestamente le transazioni, ai minatori viene assegnata la criptovaluta della blockchain corrispondente. Quindi, ad esempio, i minatori sulla blockchain di Bitcoin saranno premiati con Bitcoin. Questo importo è fisso ma può variare di volta in volta.

I minatori devono mostrare il loro prova di lavoro per guadagnare la loro ricompensa. Il lavoro da eseguire consiste essenzialmente nel trovare un campo a 32 bit che, se sottoposto a hash con il valore hash della catena di transazioni, genera un altro valore hash con un determinato numero di zeri iniziali. Questo campo è chiamato nonce. Il numero di zeri iniziali da generare è impostato dalla difficoltà che cambia dopo che è stato estratto un determinato numero di blocchi. Maggiore è il numero di zeri iniziali, più difficile diventa trovare il nonce. 

Ad esempio, il nonce del blocco Bitcoin #493257 si è scoperto che 1488602745 che quando è stato sottoposto a hash con le transazioni in quel blocco ha generato l’hash per il blocco di 00000000000000000034bd56aea0c6db865e8dff1fe5d2023170b568ad5e0968. Si prega di notare gli zeri iniziali nel valore hash del blocco.

È altamente impossibile derivare un nonce usando una formula. L’unico modo per trovare il nonce è attraverso congetture. Ciò significa che i minatori devono spendere la propria potenza di calcolo per eseguire un numero potenzialmente elevato di valori a 32 bit prima di imbattersi essenzialmente in quello che soddisfa i requisiti per gli zeri iniziali. Il fatto che abbiano trovato il nonce dimostra che hanno fatto il lavoro per trovarlo.

Mettere insieme la blockchain

La crittografia a chiave pubblica garantisce la sicurezza delle transazioni tra due account.

Le funzioni hash assicurano che le transazioni siano valide, atomiche e virtualmente impossibili da modificare.

L’estrazione mineraria tramite la prova del lavoro garantisce che le transazioni siano confermate e verificate da una terza parte.

Tutti questi metodi che lavorano insieme rendono il registro distribuito, e quindi un’applicazione come la valuta digitale, possibile sulla blockchain.