Proof of Work – come funziona

Quando parliamo di mining, facciamo riferimento ad un puzzle crittografico molto difficile da risolvere. Ma cos’è questo puzzle alla fine dei conti?

Questo ha a che fare con la prova di lavoro ( proof of work) che il miner deve compiere per poter risolvere il puzzle.

La proof of work sono di fatto dei dati che richiedono molta potenza computazionale per essere elaborati ma possono poi essere verificati velocemente. Grazie a questo i dati presenti nella blockchain sono immutabili.

Perchè i miner ci mettono così tanta enfasi ?

La proof of work è un meccanismo per creare un consenso valido d globale: dal momento in cui tutti i nodi hanno la stessa copia della blockchain, tutti i nodi devono trovarsi d’accordo sulle condizioni che garantiscono la veridicità dei dati. In altre parole: se il contenuto in un blocco è facilmente modificabile, allora chiunque potrebbe alterarlo, mentre se ogni blocco è minato con un complesso calcolo matematico, è molto più difficile per chiunque modificare quel blocco o in generale la blockchain. O meglio, ci vorrebbe un notevole dispendio di risorse.

Vediamo più nel dettaglio la proof of work

Creiamo un elenco di blocchi, dove gli stessi sono collegati li uni aglj altri tramite un codice di identificazione. Ogni blocco contiene i seguenti dati:

    • identificazione del codice del precedente blocco  (PREV)
    • nome di chi invia (SENDER)
    • nome di chi riceve (RECEIVER)
    • Quantita di bitcoin o parti di esso (AMOUNT)

Per complicare le cose, facciamo che ogni codice d’identificazione deve iniziare con 0000 (quattro zeri). Per far questo aggiungiamo un campo dato chiamato NONCE.

Facciamo un esempio

Il primo blocco avrà i seguenti dati (nota che essendo il primo blocco ha codice del precedente blocco uguale a 0 proprio perchè è il primo):

PREV:0
SENDER:john
RECEIVER:jenny
AMOUNT:100
NONCE:1

Adesso copiamo questo blocco di testo ed incolliamolo in uncalcolatore hash come questo e facciamo click su Calculate SHA-256 Hash (fai attenzione agli spazi). L’ hash verrá come segue:
07b01b0f4672f2bc58ef11132df4bc74a4e0dc9f2e07ee5d9a0428d3836bc6cb

Come puoi vedere peró l’hash inziia con b273 e non con 0000 come voluto;  dobbiamo quindi provare a cambiare il campo NONCE e ripetere il calcolo ( cambiando il valore di NONCE da 1 2 cambierá anche il codice hash).

Il nuovo testo del blocco sarà di questo tipo:

PREV:0
SENDER:john
RECEIVER:jenny
AMOUNT:100
NONCE:2

Lanciando il calcolo dell’hask, come in precedenza, avremo quindi:
263172553403d3182866ed4d2e7b588a6932e58d0acaa1fa92958a1f70dfabc5

Anche in questo cask il codice non iniza per 0000! Questo giochino si dovrà ripetere finquando non si troverà il codice hash che inizia per esattamente 0000.

Per semplicità, prima che stai e riprovi tu fin quando diventi matto, ti dó la soluzione: dovrai ripetere lo stesso processo 22683 volte!

Il testo esatto sarà quindi:

PREV:0
SENDER:john
RECEIVER:jenny
AMOUNT:100
NONCE:22683

Hash code: 00000d7d33ebf71c24c15119c925acf9d9d45f8f9972034e2c8b1aabe29163a7

Non si puó fare il processo inverso: ovvero decodificare dall’hash che inzia per 0000 quale sarebbe il valore del NONCE ricercato. È a senso unico. Non si puó fare diversamente da quanto abbiamo appena visto. Provare e riprovare. L’unico modo e cercare di fare più interrogazioni sequenziali ( o a caso).

Ora creiamo una blockchain a partire dal primo blocco che abbiamo creato,sarà di questo tipo:

Se volessi manomettere il primo blocco, altereresti la blockchain ma per ogni blocco successivo dovresti comunque trovare l’hash che inizi per 0000 ancora!

Ecco perchè, quando dopo che vengono creati (minati) un pó di blocchi dopo quello in questione, il blocco stesso diventa molto più sicuro.

Per prassi si tende a fidarsi della verità di un blocco sulla blockchain di bitcoin e definirlo SICURO quando sono stato minati dopo di quello almeno 2/3 blocchi. Questo perchè bisogna tenere in considerazikne fhe la difficoltà di calcolo cresce di volta in volta ed è molto più complicato del nostro semplice esempio.

Rissumendo: per falsificare un blocco e far sì che tutta la rete creda nel tuo blocco fake, allora dovrai tenedenzialmente avete una capacità superiore alla metà di calcolo presente , quindi il classico 50% + 1 ( o detto anche per semplicità 51%) per poter creare più velocemente i blocchi degli altri e rendere approvato di fatto il blocco fake che hai creato. Ecco perchè dovresti avere la potenza per creare 2/3 blocchi di fila (e quindi risolvere il puzzle crittografico) perchè la rete ritenga vero e valido il blocco fake.

È molto molto mooooolto difficile poterlo realizzare. Ma non impossibile – come la maggior parte delle cose in informatica.

La grande sfida del consenso della proof of work è il consumo di energia dispendioso per poter mantenere un sistema sicuro e decentralizzato.

Per dire il vero, si stanno studiando soluzioni per incanalate e sfruttare il calore generato dalle macchine di mining ( schede video) e poter riscaldare interi centri commerciali.

L’incentivo sarà sempre la motivazione di scelta. E questo assunto mai nessuno lo potrà cambiare

Proof of Burn- PoB che cos’è ?

Cos’è la Proof of Burn (PoB)?

Dopo aver capito la proof of work, vediamo ora il metodo di meccanismo di consenso dietro al Slimcoin: Proof of burn.

 

Perchè prima di tutto è necessario un metodo di consenso?

Infatti prima di capire questa proof of Burn, cerchiamo di capire il ragionamento dietro il metodo di consenso dele criptomonete.

La base di partenza: la blockchain è quel libro mastro su cui vengono scritte ed approvate tutte le transazioni mai effettuate.

Tutti i nodi della rete – ovvero tutti i partecipanti che hanno una copia della blockchain aggiornata -salvano costantemente il suo aggiornamento, tramite degli appositi client software su hark disk.

È chiamata blockchain perchè le transazioni sono raggruppati a gruppi di blocchi . Un blocco é tale quando tutta la rete ( quindi tutti i nodi) approvanp la veridicità della stesso.

Ma in che modo i nodi tra di loro decidono questo? Chi dice cosa è giusto o sbagliato? Quale transazione sia valida o meno? Siccome non c’è un’autorità centrale che ne verifica ed autentica lo stato, come viene fatto? Ecco quindi il concetto di consenso della rete in modo collaborativo.

La tecnologia blockchain ha già al suo interno metodi che prevengono il crearsi di  monete al di fuori dell’algoritmo prestabilito. Ma ci potrebbero essere nodi disonesti che cercano in qualche modo di usare due volte la stessa moneta – si tratta del concetto del double spending. Per esempio, si potrebbe comorare un oggetto online ed immediatamente provate andhe a pagare con la stessa moneta qualcos’altro. In questo caso quindi uno dei due venditori non riceverá nulla.

Al  fine di prevenire questo meccanismo truffaldino, i nodi devono accettare di decidere quali sono le transazilni valide e quali no.

Di primo acchitto, potremmo lasciare alla maggioranza dei nodi decidere cosa sia giusto o sbagliato – ma chi detiene più nodi puó influenzare il resto della rete con approvazioni false quindi non è stata la soluzione vincente.

Proof of work: Il meccanismo di consenso di Bitcoin

Quindi abbiamo capito di aver bisogno di un meccanismo di voto che non sia manipolabile solamente dalla creazione di più nodi.So we need a vote mechanism that is not manipulable by creating more nodes.

In Bitcoin ed altre monete si usa la Proof of work

Il processo: il miner entra in concorrenza con gli altri per competere a risolvere un enigma criptografico. Al primo che lo riesce a risolvere, puó scrivere direttamente sul blocco e riceve una ricompensa. Ecco il mining.

Se quindi vuoi fottere il sistema deve avere una potenza di calcolo talmente importante da scrivere più blocchi in sequenza ed includere all’interno di essi la transazione falsa.
Questo è assai improbabile che venga realizzato perchè la competizione ed il calcolo computazionale della concorrenza è altissimo e dovresti avere il 51% della forza dell’intera rete attiale.

Proof of burn: Proof of work senza consumo di energia

La cosa importante da capire: è richiesto non solo un investimento hardware per minare ( mining) ma anche molta elettricità per far funzionare le macchine. Ecco quindi che chi volesse compromettere la rete dovrebbe investire tantissimo in entrambi i campi per poter risolvere l’algoritmo precedente più volte di fila.

Più si investe, più si ha la possibilità di risolvere il puzzle ovviamente.

Ma l’incentivo cresce di giorno in giorno data anche la scarsità di bitcoin ed l’halving che ne dimezza la ricompensa ogni 4 anni ed ecco protetto da solo il consenso.

Si potrebbe ottenere tutto questo senza utilizzare così tanta corrente?

Possiamo indurre a distruggere o bruciare ( burn) per lasciare l’opportunità a qualcuno (miner) di scrivere sul blocco. Questo è il proincipio dietro alla Proof of Burn. Detto anche minting, o stampaggio perchè di fatto non si è fatto nessun lavoro. Ma quello che è importante è il costo del lavoro.

L’inventore, Iain Stewart, sostiene che bruciare una moneta è come comprarsi una macchina da mining. Più bruchi, più macchine avrai. E più possibilità avrai di scrivere sul prossimo blocco.

Ora, per non permettere a chi se ne approfitta proma di beneficiarne troppo, il potere delle monete bruciate decade con il tempo ( o ad ogni blocco minato). Non di tanto, ma di quel pó che basta per far risultare obsolete le macchine da mining.  Quindi per essere nuovamente competitivo i miners devono continuare a bruciare. In modo analogo alla legge di Moore.

Nella  Proof of Work, la ricompensa del blocco sono alte abbastanza per permettere un incentivo al miner in modo da avere un saldo positivo tra le monete bruciate e quelle ricompensate.

La proof of burn, consenso di Slimcoin consuma quindi meno energia della PoW.

Ma Bitcoin rimane sempre il primo del suo genere…ed il primo per capitalizzazione…dove andrà il mercato?

Cos’è la Zero Knowledge Proof

Cos’è lo Zero Knowledge Proof

Ci sono altcoin la cui principale differenza e peculiarità rispetto a Bitcoin è l’anonimato.
Le piu note sono:
– Dcash
– Monero
– Zcash

Abbiamo già chiarito infatti che Bitcoin è PSEUDO-anonimo. Pseudo perché è vero che nell hash della transazione chiunque può vedere solamente l’indirizzo di “out” ( wallet di uscita ) dal quale sono “partiti” i Bitcoin e l’indirizzo “in” ( il wallet del ricevente ) ma:

1. se ho altre transazioni che mandano ad un medesimo indirizzo è più facile ricostruire chi sono intuendo dove risiedo in base a cosa e dove compro
2. Non c’è scritto il mio Nome e Cognome sull’indirizzo pubblico ma se lo uso spesso è più facile rintracciarmi sopprattutto se ho collegato il mio indrizzo a dei servizi che richiedono la verifica dell’identità (exchange)
3. sempre più agenzie investigative stanno migliorando i propri algoritmi di tracking per segnalare un indirizzo che fa cash-out ( preleva da un exchange ) tramutandolo in FIAT
4. anche se utilizzo wallet che generano molti indirizzi pubblici, con il tempo si sarà in grado sempre con più accuratezza di risalire a chi appartiene

Con la Zero Knowledge proof si vuole infatti cercare di risolvere questo problema, cercando di oscurare:
– chi ha pagato
– chi riceve
– quanto riceve
– ed allo stesso tempo garantendone la veridicità e l’attendibilità in quanto tutto rimane sulla blockchain.

In parole povere lo ZKP è un metodo matematico che ti permette di essere sicuro al 99,9% dei casi che chiedendo a chi detiene qualcosa che si vuol sapere , sia in possesso veramente di quel qualcosa.

Esempio:
Io solo conosco la combinazione del lucchetto della mia bici.
Tizio mi chiede se la bici è mia.
L’unico modo per fargli capire che sono io il vero possessore della bici è slegarla.
Se la slego davanti a lui però, può vedermi la sequenza per sbloccare la bici e rubarmela la prossima volta.
Quando sono sicuro che non mi vede, quando sono da solo per esempio, sblocco la bici e gliela faccio vedere slegata.
in questo caso Tizio ha la sicurezza che non gli ho mentito e che sono effettivamente il proprietario della bici SENZA RIVELARGLI IL CODICE.

Tornado alle crypto, l’analogia è non svelare nulla riguardo ad una determinata transazione ( hash, indirizzo pubblico di entrata a e d’uscita) ma al tempo stesso garantire che ho i fondi necessari per permettermi di pagare un determinato importo.

Tutte le cripto che usano la Zero Knowledge proof garantiscono l’anonimato?
No, non è detto. Ci sono molti altri modi per ulteriormente proteggere la privacy, ma sicuramente è una funzionalità necessaria.