Domanda Evitare la modifica della Proof of Works di una eventuale blockchain

theDust1n

Utente Bronze
11 Febbraio 2020
39
16
7
31
Ultima modifica:
Ciao a tutti. Per comprendere meglio il funzionamento delle criptovalute e della blockchain, mondo di cui sono nuovo quindi abbiate pazienza con eventuali errori XD, ho provato a scriverne una in Java, dopo essermi informato leggendo e vedendone delle spiegazioni online, sul funzionamento di questa. Ho tentato di simulare i dati che caratterizzano le criptovalute, inserendo nel calcolo dell'hash (SHA256) l'orario, l'importo, l'hash del mittente, quello del ricevente e l'hash del blocco precedente, di una ipotetica transazione.
Tutto funzionava, se provavo a manometterla si "corrompeva", se generavo anche fino a 100.000 blocchi senza modificarne alcuno, venivano tutti convalidati con successo.
Poi venne il momento di aggiungere una proof of works (argomento che purtroppo non mi è ancora totalmente chiaro, ma che sto approfondendo) per simulare un ipotetico "mining" (detto in parole povere).
E qui mi sono chiesto, ma cosa impedisce ad un'utente di modificare il tempo della proof of works all'interno del codice sorgente dei Bitcoin e di altre criptovalute? Come si impedisce ciò?
 
L'algoritmo di Proof of Work è un algoritmo di fiducia distribuito, questo significa che tu puoi "corrompere" solamente alcuni nodi ma i programmi generali che girano sulle macchine in cui sono collegate a Bitcoin sono comunque in uno stato corretto. Quindi, per maggioranza, non potrai mai prendere te una decisione andando a corrompere la maggioranza, questo perchè è fisicamente impossibile (stiamo parlando di moltissimi nodi, in una blockchain con pochi nodi e con le giuste conoscenze è fattibile e, man mano che aumenta il numero di nodi, diventa sempre più impossibile).

Ti ricordo che il Proof of Work viene generalmente utilizzato per due obiettivi:
1. Validare un nuovo blocco: Vedilo come un ragazzo che scopre dell'oro e tutti gli altri si accertano che sia realmente oro, se è carbone viene rifiutato altrimenti il ragazzo diventa ricco perchè è stata confermata dalla maggioranza che sia oro)
2. Per convalidare le transazioni: Vedila come se ci sia un ragazzo che da dei soldi ad un altra persona e ci sono dei "testimoni" che confermano che il pagamento è stato effettuato.

A larghe linee si può sintetizzare la risposta alla tua domanda:
Come si impedisce ciò?
Scalabilità di una rete distribuita (Distributed Ledger in cui si basano tutte le blockchain)

Poi ovviamente anche la PoW ha dei difetti, ma dipende anche dal tipo di funzione PoW che vuoi adottare, le blockchain (quasi tutte se non tutte) utilizzano funzioni di sequenze di hash
 
  • Mi piace
Reazioni: theDust1n
L'algoritmo di Proof of Work è un algoritmo di fiducia distribuito, questo significa che tu puoi "corrompere" solamente alcuni nodi ma i programmi generali che girano sulle macchine in cui sono collegate a Bitcoin sono comunque in uno stato corretto. Quindi, per maggioranza, non potrai mai prendere te una decisione andando a corrompere la maggioranza, questo perchè è fisicamente impossibile (stiamo parlando di moltissimi nodi, in una blockchain con pochi nodi e con le giuste conoscenze è fattibile e, man mano che aumenta il numero di nodi, diventa sempre più impossibile).

Ti ricordo che il Proof of Work viene generalmente utilizzato per due obiettivi:
1. Validare un nuovo blocco: Vedilo come un ragazzo che scopre dell'oro e tutti gli altri si accertano che sia realmente oro, se è carbone viene rifiutato altrimenti il ragazzo diventa ricco perchè è stata confermata dalla maggioranza che sia oro)
2. Per convalidare le transazioni: Vedila come se ci sia un ragazzo che da dei soldi ad un altra persona e ci sono dei "testimoni" che confermano che il pagamento è stato effettuato.

A larghe linee si può sintetizzare la risposta alla tua domanda:
Come si impedisce ciò?
Scalabilità di una rete distribuita (Distributed Ledger in cui si basano tutte le blockchain)

Poi ovviamente anche la PoW ha dei difetti, ma dipende anche dal tipo di funzione PoW che vuoi adottare, le blockchain (quasi tutte se non tutte) utilizzano funzioni di sequenze di hash
Grazie della risposta, molto chiara :D
Solo una cosa non ho ben capito. Quando dici scalabilità, intendi il consenso "distribuito" dei vari nodi?