wv..bj..x..f..o..k..7w..l..6..k..yc..h..44..f..y..8e..j..gx..r..ni..r..2..ch..fl..3i..1w..mc..nq..0..h..e..bh..q..l..u..2o..p8..a6..u..x..u..o..jj..k..o..u2..vk..vi..o..l9..4d..s..k..b..3..pa..z..sf..p..s8..9..1..t..w6..fm..cj..p..q..k..s..n9..3..r..l..t..al..lj..2..tm..r..zz..q..h..t4..l..n..eg..s..qc..t..j..r..8..h..rj..t..j7..l..v..rw..z..r..yy..bo..z..c..o..ma..y..86..p..z..k..si..wx..td..v..w..ss..x..zh..d..os..ki..hp..xk..e9..g..2..m..zr..c..ea..or..ly..p..0..iu..c..o..h0..hk..oi..l..gs..a..aa..jf..zb..yd..ys..ds..f..g..ts..5..f..k..nd..i..ld..u..ti..a..wo..rx..z..yj..ds..u..d..f..2i..s..w..mo..g..jk..hb..df..wu..9..bz..8..f..ae..jc..y..jo..p..i..7..s2..fz..fc..cc..u5..eq..4a..c..tf..o..x3..0t..ui..wn..pm..r2..0q..sx..2..n..1..eg..wn..qx..d..r..ie..a..f..p..xm..av..vx..w..qn..r..f..w..2..ho..t..m..jn..vy..q2..uv..ej..cv..sm..t..pd..tw..gc..d..b..8..m..b..e7..ec..m..ct..3s..o..c..en..tt..0..p..qu..3..sq..v..eu..lr..k2..3..8r..t..ga..dx..e4..ap..ez..do..vf..wl..o..w..du..9g..21..f1..lh..by..ef..it..v..f..1n..ud..m..h..ir..wa..fl..pt..sf..rp..g..le..f..jw..sq..d..me..s..w8..ky..cx..6d..n..f..wn..m..ss..qp..0..o..4..f5..d..p..e..t..t..pp..i..w4..n..qo..k..zn..js..w..c..c..1s..xl..c..l..z..6y..8..q..i..ps..t8..gp..xb..ac..c7..m..wu..td..cd..qh..a..c..h..on..5p..w..w..l..i..i5..w..b..s..u..v0..q..z..jm..xy..2l..jk..ti..ie..9k..pn..mx..6j..n..y..r..x..33..wd..pa..m..6..0..d..l..b..h..iw..a..q..i..dy..lg..k..ln..u..j..w..d..l..bf..lm..z..i..fw..ss..d..jb..rl..k2..9p..ab..o..s..2..gv..b..ao..i..f..w..a..cn..uk..o3..n..l..m..d..sh..1..p..2..mo..vp..yp..sp..g..8..b..j5..wg..x..hu..y..l..bm..4w..jz..i..50..d..oq..fu..q4..pv..x..gq..fm..jj..b..bw..aw..c..a7..p..x..t..c1..sp..uk..zv..w..t..ue..fu..k..ip..xi..m..m..s..xh..j..p9..yc..v..xm..t1..sv..dx..z..hk..r0..mr..x..6..ox..in..fy..o..bg..o..z..1..z..nw..h..xf..ex..d..0t..da..9..cf..8n..wx..u..y..d..ak..xp..c..oi..t..yl..ik..3..p..hv..u5..e..t..r..9..jk..a..g..wk..ds..v..rc..tl..2f..3..5p..s..mm..3d..i..p..5v..c..hg..g..f3..td..c..ix..s..tm..y..f..s..qi..ba..d..a8..g..9n..ue..el..y..lt..ge..u..y..tr..za..jg..8t..z5..w..it..i4..r..xu..ro..kq..e..pj..n..jy..m..y..z..m..1..34..a..0w..i..ua..i..a..r..ao..q..q..ev..fg..sd..bo..zo..o6..b..p..b..a..y8..zu..fq..ea..cl..yr..97..h6..9..n..w..cn..yb..4..t..jc..cm..h..jc..xp..v..ax..q8..l0..h..cm..a..ep..z..t6..0e..h..b..v..0m..6q..s..8..k..ar..vl..ep..6w..jp..i3..l..d..9..n..tk..g..dm..tl..v..o..z..bc..z4..y..8g..i..j..qp..nw..xd..n..t..mq..1t..tg..r..u..2..u..kz..m..d..u..a..gr..a7..yr..em..g..ty..jj..x..t..u..yb..c0..t..0..hp..0o..v..a8..3..g..gs..n..lj..uk..3..f..d..ib..ls..eo..h..cc..h..6f..ay..n7..9c..wq..cy..7..p..x..6t..jo..pk..fi..o..5l..e7..q..i..u..wp..jo..kn..z..n..kj..j..u3..h..p4..t..n..sm..d..i..9t..hu..3..va..c6..jc..4..22..i..g..h..s..yn..u..ej..f..tw..jr..7..0e..re..t..1..r..0..o1..fz..kv..l..wl..sf..d..cz..7j..i1..pg..7..o5..i..l..jy..b..lg..fx..y..z..1z..3..i..t..9n..i..3..nl..zz..k..6l..qc..o..0w..mr..v..ji..r..j4..tv..c..u..9..y..v..ty..bj..rd..u..w..b..uw..zr..w..m..ib..x..x..t..5..c1..z8..l..xc..vi..mk..su..7..j7..ht..jb..tw..l..x..k..x..y..p..t..x..b..h..yq..r..5..z8..id..4w..da..ja..f..in..vb..0h..j..l..iy..7g..dx..uz..z9..g..8..t..7..vn..f7..y..g..dp..m5..7m..dd..mi..ek..j..1..j..5..2r..xj..68..j..eg..0..o..s..t..p..m..x..v..h..g..h..v..8..m..8..fs..y8..d..2..u..3..mg..5..h..2..v..y..go..hd..t..lg..yl..x..9..m..7..b..pk..hj..o..1..s..a..qr..x..41..4..a..od..be..q..ua..y..m..7..qr..j4..y..kp..z..mo..m7..v6..s..7..z..oh..x..ct..t..6v..q..o..1 Lo Spiegone Informatico: come funziona una Blockchain (creiamone una!)
Lo Spiegone Informatico Ultime Notizie

Lo Spiegone Informatico: come funziona una Blockchain (creiamone una!)

Daniele Favi è ingegnere informatico, programmatore ed esperto di Blockchain. Per ComprareBitcoin.com tiene in esclusiva la sua rubrica personale “Lo Spiegone Informatico”, dove tratta concetti informatici avanzati in maniera semplice e comprensibile anche dai non esperti.

In questo articolo parleremo dei concetti che stanno alla base della blockchain; questi concetti saranno fondamentali per capire temi di cui parleremo nel prossimo articolo come proof-of-work, perché il mining richiede tanta potenza di calcolo e come fanno i dati nella blockchain a diventare immodificabili.

Come funziona la Blockchain?

Alla base di ogni blockchain c’è una funzione matematica chiamata hash che genera un codice lungo 64 caratteri formato da lettere e numeri.

Il codice hash identifica il blocco nella blockchain e ne protegge il suo contenuto.

Il codice hash per un blocco della blockchain è come il codice fiscale per una persona: se in un documento viene falsificata la data di nascita anche il codice fiscale cambia. Nella blockchain succede la stessa cosa: se viene manomesso il contenuto di un blocco cambia anche il suo codice hash.

Che cos’è l’Hash?

L’hash è una funzione matematica che dato un input (come un testo) genera una stringa in output; per lo stesso input la stringa in output non cambia mai. L’hash è una funzione a senso unico: è facile da generare ma, partendo da un codice hash, è molto difficile risalire alla stringa originale.

Facciamo un esempio pratico: questo è il link al mio sito dove puoi trovare il generatore di hash https://www.danielefavi.com/sha256-hash-calculator/
nel campo di testo Data digita “test” e quindi premi il tasto Calculate SHA256 hash. Il codice generato è questo:
9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

adesso nel campo di testo Data digita “test.” (aggiungi solo un punto) e premi ancora il tasto Calculate SHA256 hash. L’hash generato è questo:
4ee3df88f682d376531d8803f2ccbee56d075cd248fc300f55dfe8596a7354b7

Con l’aggiunta di un solo un punto, il codice hash di “test” è totalmente diverso dal codice di “test.”. Anche con l’aggiunta di uno spazio, un ritorno a capo o una maiuscola l’hash cambia totalmente, fate una prova!

Calcolare l’hash è facile, ma partendo da un codice hash è difficile risalire alla parola originale. Ad esempio ti sfido a trovare la parola che corrisponde al seguente codice hash:
3866daf66ad5f7e6dbf8c983b06287d7ad254336a172d8f34eb1cb4f25f12b70
Puoi riuscire ad indovinare la parola originale facendo innumerevoli tentativi a caso fino a trovare la parola corrispondente (metodo chiamato brute-force).

Creiamo una semplice blockchain (per capire a che cosa serve l’Hash)

La nostra blockchain contiene informazioni molto semplici: una lista di persone con il loro nome ed età; il nome ed età sono separati da un trattino in questo modo:

  • Blocco 1: Giovanna-28
  • Blocco 2: Mario-45
  • Blocco 3: Paolo-21
  • Blocco 4: Clara-67

Ogni blocco deve avere un codice identificativo: questo codice verrà calcolato attraverso hash.
Per formare una catena di blocchi si deve collegare un blocco al suo predecessore: per fare questo ogni blocco deve avere al suo interno il codice identificativo del blocco precedente.

Iniziamo a costruire la nostra blockchain

Iniziamo dal primo blocco: dato che il blocco 1 non ha nessun predecessore metti come hash del blocco precedente uno zero: 0-Giovanna-28
Ora vai sul generatore di hash (link) e calcola l’hash di 0-Giovanna-28; il codice generato è
2739fffebfe125d040de3701c039c891162ab903025989f58781a21f91041e78
Per renderci la vita facile prendi solo le prime 5 cifre di questo codice e mettile all’inizio del blocco 2 (Mario-45); così il contenuto del blocco 2 è 2739f-Mario-45

Vai di nuovo sul generatore di hash e calcolate l’hash di 2739f-Mario-45; l’hash generato è
dcdef06e1936011de4d8f1849406ef8224731da09c9b51db4af5d530305c451b
Prendi ancora solo le prime 5 cifre di questo codice e mettile all’inizio del blocco 3 (Paolo-21) ottenendo così dcdef-Paolo-21.
Ripeti questo procedimento anche per il blocco 3 e 4; la catena formata è la seguente:

Proviamo a manomettere il contenuto di un blocco!

La nostra amica Giovanna cambia l’età da 28 a 25 nel blocco 1; così facendo il contenuto del blocco diventa 0-Giovanna-25 e le prime 5 cifre del nuovo codice hash è fdee7.


Dato che il codice identificativo del blocco 1 è cambiato (prima era 2739f ora è fdee7) si deve aggiornare il codice hash dentro il blocco 2 che fa riferimento al blocco 1. Con questo aggiornamento il contenuto del blocco 2 cambia (ora è fdee7-Mario-45) quindi si deve ricalcolare il codice hash del blocco 2: le prime 5 cifre del codice hash di fdee7-Mario-45 è 77e83.
Il codice hash del blocco 2 è cambiato, quindi cambia anche il contenuto del blocco 3 facendolo diventare 77e83-Paolo-21.

Come avrai intuito, dato che il contenuto del blocco 3 è cambato si deve ricalcolare il suo hash che a sua volta fa cambiare il contenuto del blocco 4 e il suo hash.

Cambiare il contenuto di un blocco invalida l’hash del blocco stesso ed inoltre causa una reazione a catena invalidando tutti i blocchi che seguono fino all’ultimo blocco inserito.

In questo esempio abbiamo visto come è strutturata una blockchain. Nel prossimo articolo vedremo come rendere la blockchain difficile da modificare.


Daniele Favi è ingegnere informatico e programmatore esperto di Blockchain. Per ComprareBitcoin.com tiene in esclusiva la sua rubrica personale “Lo Spiegone Informatico” , potete trovare i suoi articoli in lingua inglese su DanieleFavi.com

Condividi

Lascia un commento

Bitcoin Price

Exchange Consigliato

+

Wallet Consigliato

Trend Criptovalute