il fatto che si sia sentito il bisogno di introdurre Cross Check Point sulla blockchain di bitcoin è precisamente l'ammissione di come quella di Datacoin non sia minimamente affidabile, in quanto senza questo accorgimento la storia dei blocchi potrebbe essere riscritta senza sforzo.
Bene, penso che questa frase risolva tutta la questione.
Quindi, poichè ci sono i Cross Check Point, la blockchain di Datacoin diventa immutabile con tutto quello che c'è scritto dentro.
Ma a questo punto penso che valga la pena di capire come avvenga un attacco al 51%.
Questo tipo di attacco si verifica quando un minatore scorretto detiene più del 50% della potenza di hashing di una rete di criptovalute, e sfrutta questa potenza di calcolo per effetuare un double spending.
Cos'e' un double spending?
Significa spendere due volte gli stessi soldi. In pratica io do 1 bitcoin a Tizio, poi senza dire niente a nessuno, do lo stesso bitcoin a Caio e ho speso 2 bitcoin quando ne ho uno solo.
Gli esperti mi perdoneranno l'approssimazione, ma sto cercando di renderla più semplice possibile.
Ora come può avvenire questo double spending?
Avviene in queto modo:
- io (minatore con una potenza di hashing spropositata) spendo il mio bitcoin sulla blockchain
- poi mi metto a minare una blockchain privata (non collegata alla blockchain vera). Questa blockchain privata fino a un certo punto è uguale in tutto e per tutto alla blockchain vera. Poi però non includo la transazione con cui io ho speso il mio bitcoin.
- Perciò da quel punto in poi la mia blockchain privata sarà diversa dalla blockchain pubblica. Praticamente, la mia blockchain diventa un fork privato di quella pubblica. E' per questo che nel mio post precedente parlavo del fork di Bitcoin del 1 Agosto 2017. Solo che quello è un fork avvenuto a causa del cambiamento del software, questo avviene perchè a un certo punto io scollego la copia privata della mia blockchain da quella pubblica e me la metto a minare per fatti miei. Quello che volevo dire era che cosi come il fork del 1 Agosto 2017 non ha distrutto la storia della blockchain prima di quella data, allo stesso modo il fatto che io mi metta a minare da solo la mia blockchain privata (dove posseggo ancora quel bitcoin) non distrugge di per se la blockchain pubblica (dove quel bitcoin già l'ho speso)
- a questo punto io (malfattore) continuo a minare la mia blockchain privata fin quando, grazie alla mia enorme potenza di hashing, non riesco a minare più blocchi di tutti gli altri messi insieme.
- ora rilascio la mia blockchain privata. A questo punto la blockchain pubblica si trova forkata in due rami. Una diramazione è la blockchain pubblica legittima (dove io non ho più il mio bitcoin) ed un'altra è quella fasulla fatta da me (dove ho ancora il mio bitcoin)
- poichè il mio ramo fasullo è più lungo (grazie alla mia potenza di calcolo) il protocollo lascia cadere il ramo legittimo ed io ho di nuovo il mio bitcoin
- tutte le transazioni della blockchain originale diventano orfane e tutti i soldi trasferiti ritornano ai rispettivi indirizzi di partenza prima del fork
- se nelle transazioni della blockchain originale c'erano memorizzati dei Proof Of Existence, anche questi vengono cancellati insieme alle transazioni
Ora il mio punto è: si, ma cosa significa cancellare le transazioni?
Cosa significa cancellare un file?
Siete veramente sicuri di poter cancellare un dato?
Beh, certamente se create un file sul vostro hard disk e subito dopo lo cancellate, allora ok, avete cancellato quel dato.
Già se mettete una foto su Facebook, diventa impossibile cancellarla. Perchè voi potete cancellare la foto dalla vostra pagina facebook, ma non saprete mai se poi Facebook la cancella veramente dai suoi server.
E non saprete mai se qualche vostro amico l'ha scaricata sul cellulare.
Io vi dico che non c'è niente di più difficile che cancellare un dato informatico, una volta creato.
E adesso torniamo alla nostra blockchain taroccata. E' vero, tutte le transazioni con dentro tutti i ByteStampProof non ci sono più. Sparite.
Io avevo una bella transazione con dentro la prova che avevo pagato l'F24 nei termini e.. puff.. sparita. Al suo posto trovo solo questa nuova blockchain.
Ma una attimo. La blockchain è un database replicato su un sacco di macchine. Tutti i nodi che partecipano al protocollo hanno una copia completa della blockchain. Questo è tanto più vero per Datacoin dove il mining con CPU è ancora profittevole. Chiunque con il suo PC di casa può minare Datacoin.
Vuoi vedere che qualcuno si è conservato la copia della vecchia blockchain?
Beh, certo, qualcuno ce l'ha. Forse più di uno.
Ed eccola li, la vecchia blockchain che rivive, con tutti i blocchi che erano stati dichiarati orfani.
Anzi, si può anche non arrivare a questo. Perchè tutti i blocchi orfani di una blockchain sono comunque conservati nei rispettivi file blkxxxx.dat di ogni nodo.
A questo punto abbiamo due versioni della stessa blockchain, o una versione e blocchi orfani, fate voi.
Qual è quella giusta?
Il protocollo Bitcoin già ha stabilito: la catena più lunga è quella valida.
Ma qui non dobbiamo spendere criptovaluta, dobbiamo dimostrare che io ho pagato l'F24 nei termini, ricordate?
A questo punto mi accorgo che poichè le due blockchain sono diverse, anche gli hash dei blocchi cambiano.
Infatti la blockchain (catena di blocchi) è cosi detta perchè ogni blocco dipende dal precedente, e l'hash di un blocco è calcolato con una funzione che tiene conto del blocco precedente. Quindi io non posso prendere un blocco in mezzo e cambiarlo senza modificare anche tutti gli altri.
Poichè nella nuova blockchain io posseggo ancora il mio bitcoin, allora questa ha i blocchi diversi da quella originale, ma quindi l'hash di ogni blocco cambia.
Poichè gli hash dei blocchi sono memorizzati anche nella blockchain di Bitcoin, allora quella tra le due blockchain che ha gli hash dei blocchi corrispondenti con quelli memorizzati nella blockchain di Bitcoin è la blockchain legittima, anche se l'altra ha una catena di blocchi più lunga.
Infatti io ho memorizzato all'interno di Datacoin l'impronta informatica (ByteStampMD5) di quel famoso F24.
Dopodichè l'hash del blocco contenente questa impronta informatica è stato calcolato tenendo conto di essa. Infatti ovviamente il blocco avrebbe un altro hash se quell'impronta informatica non ci fosse dentro.
Poi l'hash di questo blocco e' stato registrato nella blockchain di Bitcoin in una certa data e ora. Questo dimostra che comunque sia a quella data e ora io quell'F24 dovevo averlo prodotto.
Ovviamente poi il procedimento è reiterabile per l'hash di un blocco successivo che cosi va a validare più blocchi precedenti con i documenti in essi contenuti.
Grazie a tutti per l'attenzione.