In che modo SHA256 e il mining proteggono la rete Bitcoin PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

In che modo SHA256 e mining proteggono la rete Bitcoin

Come si difende Bitcoin dall'energia? E cos'è un nonce? Queste e altre domande trovano risposta all'interno!

Come funziona il mining è affascinante. Quando lo spiego alle persone, mi piace vedere la loro faccia nel momento in cui la loro mente è sconvolta. Lo spiegherò qui, ma sappi che sto immaginando tutte le tue facce mentre la tua mente esplode!

Devo iniziare con le funzioni hash. Senza le funzioni hash, Bitcoin non sarebbe possibile. Lascia che ti spieghi prima cosa sono, non solo così puoi sembrare figo alle feste, ma anche perché è fondamentale per capire come funziona Bitcoin, in particolare il mining ma anche le transazioni, sotto il cofano.

Non è necessario capire come funziona Bitcoin per trarne vantaggio, proprio come non è necessario capire come funziona TCP/IP per utilizzare Internet. Ma continua, perché è piuttosto interessante e lo renderò facile da capire, lo prometto.

Funzioni hash

Iniziamo con uno schema che spiegherò di seguito...

In che modo SHA256 e il mining proteggono la rete Bitcoin PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.
(Grafico/@jirols_btc)

A sinistra c'è l'input, al centro la funzione ea destra l'output. L'input può essere qualsiasi dato, purché sia ​​digitale. Può essere di qualsiasi dimensione, a condizione che il tuo computer sia in grado di gestirlo. I dati vengono passati alla funzione SHA256. La funzione prende i dati e calcola un numero dall'aspetto casuale, ma con proprietà speciali (discusse più avanti).

Il primo Secure Hash Algorithm (SHA) era originariamente sviluppato dalla NSA e ora ci sono molte versioni diverse (Bitcoin usa SHA256). È un insieme di istruzioni su come confondere i dati in un modo molto complicato ma specifico. Le istruzioni non sono un segreto ed è anche possibile farlo a mano, ma è molto noioso.

Per SHA256, l'uscita è un numero a 256 bit (non è una coincidenza).

Un numero a 256 bit significa un numero binario lungo 256 cifre. Binario significa che il valore è rappresentato con due simboli, 0 o 1. I numeri binari possono essere convertiti in qualsiasi altro formato, ad esempio i numeri decimali, che sono quelli che conosciamo.

Sebbene la funzione restituisca un numero binario di 256 cifre, il valore è generalmente espresso in formato esadecimale, lungo 64 cifre.

Esadecimale significa che invece di 10 simboli possibili come siamo abituati con decimale (da 0 a 9), abbiamo 16 simboli (i dieci a cui siamo abituati, 0-9, più le lettere a, b, c, d, e, e f; che hanno i valori da 11 a 15). Ad esempio, per rappresentare il valore del decimale 15 in esadecimale, scriviamo semplicemente "f" ed è lo stesso valore. Ci sono molte informazioni disponibili online con una rapida ricerca su Google se hai bisogno di ulteriori elaborazioni.

Per dimostrare SHA256 in azione, posso prendere il numero 1 ed eseguirlo attraverso un calcolatore di hash online, e ho ottenuto questo output (in esadecimale):

In che modo SHA256 e il mining proteggono la rete Bitcoin PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

La casella in alto è l'input, la casella in basso è l'output risultante.

Si noti che tutti i computer nel mondo produrranno lo stesso output, a condizione che l'input sia lo stesso e che venga utilizzata la funzione SHA256.

L'output del numero esadecimale, se convertito in decimale, è (notare che ci vogliono più cifre per scrivere):

48,635,463,943,209,834,798,109,814,161,294,753,926,839,975,257,569,795,305,637,098,542,720,658,922,315

E convertito in binario è:

11010111000011010110010011100111111111100110100111111001110000110011101011010111000000001001110111111110101101000111111010101110100011110101101101001001110101010100010001011110001110101001001110000000001111001010010110111011011011110000111010110110100101111010111001101011100110101110011010111001101011100110101110011010111001101011100111

Solo per interesse, ecco lo stesso valore in base 64.

1w1k5/5p+cM61wCd/rR+ro9bSdVEXjqTgDylu28OtpY=

Si noti che il valore più piccolo possibile che SHA256 potrebbe restituire è zero, ma la LUNGHEZZA è ancora 256 bit. Così si rappresenta lo zero:

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

E il valore più grande possibile è:

1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

In decimale, cioè:

115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,935

In esadecimale è:

FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Nota che ci sono esattamente 64 F.

Lo zero in esadecimale può essere semplicemente scritto come un singolo zero, ma per l'output hash, sono 64 per rispettare il requisito di un output di dimensioni fisse:

0000000000000000000000000000000000000000000000000000000000000000

Ecco un riepilogo di alcuni fatti sulla funzione hash che è fondamentale apprezzare:

  • L'input non può essere determinato dall'output
  • L'input può essere di qualsiasi lunghezza
  • L'uscita è sempre della stessa lunghezza
  • L'output verrà sempre riprodotto in modo identico se si fornisce lo stesso input.
  • Qualsiasi modifica all'input, non importa quanto piccola, provocherà un output imprevedibile e selvaggiamente diverso
  • L'output è apparentemente casuale, ma in realtà è deterministico (il che significa che è calcolato e riproducibile)
  • L'output non può essere previsto. Può solo essere calcolato e questo richiede una quantità misurabile di lavoro da un computer (e ore con carta e matita! Non farlo.)

Ora che hai compreso il concetto di base di cos'è un hash, puoi capire la spiegazione di come funziona il mining di Bitcoin.

Ma prima di andare avanti, ti consiglio di andare su un calcolatore di hash online e di giocarci un po' e di verificare tu stesso ciò che ho detto sulle funzioni di hash. Mi piace questo.

Siti di estrazione mineraria

Inizierò dimostrando un concetto di lavoro, da cui deriva la "prova di lavoro" in Bitcoin.

Vai al calcolatore di hash online e digita "Sto creando 50 bitcoin e pagando me stesso questo importo".

Digitalo esattamente, con distinzione tra maiuscole e minuscole, incluso il punto. Dovresti ottenere questo output:

In che modo SHA256 e il mining proteggono la rete Bitcoin PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Ora creiamo una regola che dice che questo messaggio di pagamento è valido, abbiamo bisogno che l'hash inizi con uno zero. Per farlo, dobbiamo cambiare l'input in qualche modo. Ma, come hai appreso, non è prevedibile quale sarebbe l'output per un determinato input. Quale modifica possiamo apportare per garantire un hash che inizia con zero?

Dobbiamo aggiungere dati usando tentativi ed errori. Ma non vogliamo nemmeno cambiare il significato del messaggio di input. Quindi, creiamo un campo (una sezione allocata) chiamato "nonce" che conterrà un valore senza senso.

La parola "Nonce" dovrebbe derivare da "numero usato solo una volta", ma non lo vedo.

Nota di seguito come l'aggiunta di "Nonce:" come intestazione di campo aggiuntiva modifica l'output hash.

In che modo SHA256 e il mining proteggono la rete Bitcoin PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

L'output non inizia ancora con uno "0", quindi aggiungiamo alcune sciocchezze (ho aggiunto una "x" insignificante):

In che modo SHA256 e il mining proteggono la rete Bitcoin PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Non inizia ancora con uno zero. Ho provato altri caratteri fino a quando l'hash non è iniziato con uno zero:

In che modo SHA256 e il mining proteggono la rete Bitcoin PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Eccoci. Ora, secondo le regole arbitrarie che ho impostato per questa versione fittizia di Bitcoin, il testo nella finestra di input è un blocco valido con una singola transazione che mi paga 50 bitcoin.

Nota che i blocchi Bitcoin sono essenzialmente pagine di un libro mastro. Ogni blocco è numerato e crea nuovi bitcoin, oltre a elencare le transazioni tra gli utenti. Questo record è dove vive bitcoin.

Ora una nuova regola. Per il blocco successivo, è necessario includere l'hash del blocco precedente. Aggiungerò un po' di complessità e aggiungerò qualche campo in più per avvicinarmi a ciò che ha un vero blocco Bitcoin.

In che modo SHA256 e il mining proteggono la rete Bitcoin PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

L'hash inizia con una "f" non "0", quindi dovrò provare alcuni valori nel campo nonce:

In che modo SHA256 e il mining proteggono la rete Bitcoin PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Questa volta sono stato più fortunato e ho trovato un nonce adatto dopo solo quattro tentativi. Ricordiamo che per il primo blocco ci sono voluti 22 tentativi. C'è una certa casualità qui, ma generalmente non è troppo difficile trovare un hash valido se tutto ciò che stiamo cercando di ottenere è uno zero. Ci sono 16 possibili valori per la prima cifra hash, quindi ho 1 possibilità su 16 che qualsiasi modifica apportata al campo di input comporterà che la prima cifra hash sarà "0".

Nota che i campi di Bitcoin sono così, ma ci sono altri dettagli che non ho aggiunto. Questo è solo per illustrare un punto, non necessariamente per dettagliare esattamente come appare un blocco Bitcoin.

Aggiungerò un campo del tempo al blocco successivo poiché ne ho bisogno per spiegare la "regolazione della difficoltà" dopo:

In che modo SHA256 e il mining proteggono la rete Bitcoin PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Sopra c'è il blocco numero tre. Include l'hash del blocco precedente e ora ho anche iniziato a includere l'ora. Il nonce che ho trovato ha fatto sì che l'hash iniziasse con uno zero (ho continuato a digitare "1" fino a quando l'hash target non è stato raggiunto).

C'è abbastanza qui ora che posso iniziare a spiegare alcuni concetti interessanti sulla blockchain e il mining di Bitcoin.

Vincere un blocco

Il processo di mining è competitivo. Chi produce per primo un blocco valido si paga un premio di blocco prestabilito. Un minatore che produce lo stesso numero di blocco un po' più tardi non ottiene nulla: quel blocco viene rifiutato. Spiegare perché ora causerà un'eccessiva diversione, quindi lo spiegherò in appendice.

Dopo che il blocco tre è stato trovato e trasmesso a tutti (tutti i nodi Bitcoin), tutti i miner smettono di lavorare su quella che sarebbe stata la loro versione del blocco tre. Cominciano a costruire su quel blocco tre di successo (portando il suo hash di blocco in avanti in un nuovo blocco) e iniziano a lavorare per trovare un nonce adatto per il blocco quattro. Il vincitore pubblica il risultato e poi tutti iniziano a lavorare sul blocco cinque, ecc.

Con ogni blocco, vengono creati nuovi bitcoin e costituiscono collettivamente l'offerta totale finora. Se ci sono molti miner, statisticamente dovremmo aspettarci che i blocchi vengano prodotti più velocemente, e quindi bitcoin verrà creato più velocemente. Problema, giusto?

Alla ricerca di una fornitura limitata di bitcoin con un'emissione prevedibile nel tempo, Satoshi Nakamoto ha pensato a questo problema e ha introdotto un ciclo di feedback negativo per mantenere la produzione di blocchi a intervalli di 10 minuti in media. Come? Vedi se riesci a pensare a un modo. Fermati un momento e rifletti: vedi se riesci a trovare la stessa soluzione geniale e continua a leggere quando ti arrendi.

NODI: menziono i blocchi “validi”. E allora? Chi controlla? I nodi Bitcoin sono. Un nodo Bitcoin conserva finora una copia della blockchain e segue una serie di regole per verificare che i nuovi blocchi rientrino nelle regole e rifiutare quelli che non lo sono. Dove sono le regole? Nel codice. Un computer che scarica il codice Bitcoin è un nodo.

La regolazione della difficoltà

Il tempo medio per creare nuovi blocchi Bitcoin viene calcolato da ogni nodo ogni 2016 blocchi (ecco perché è necessario il campo tempo). Questo fa parte del protocollo e delle regole seguite dai nodi. Viene applicata una formula per regolare il numero di zeri con cui ciascun hash di blocco deve iniziare per essere valido.

A rigor di termini, non è il numero di zeri che viene regolato, ma un valore target che l'hash deve essere inferiore, ma pensare agli zeri iniziali è più semplice da spiegare.

Se i blocchi vengono prodotti troppo velocemente, l'hash target viene regolato in base a regole predefinite che tutti i nodi seguono in modo identico (è nel loro codice).

In parole povere per il mio esempio, diciamo che altre persone sono in competizione con me, i blocchi si verificano troppo velocemente e ora il quarto blocco ha bisogno di due zeri invece di uno, secondo un calcolo immaginario.

Mi ci vorrà un po' più di tempo per ottenere due zeri, ma immaginiamo che ci siano molte altre persone in competizione con me, quindi il tempo totale impiegato da qualcuno per trovare un blocco è limitato a un obiettivo.

Ecco il prossimo blocco:

In che modo SHA256 e il mining proteggono la rete Bitcoin PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Nota l'ora. Sono passati più di 10 minuti dal blocco precedente (ho appena recuperato il tempo per dimostrare). L'obiettivo dei 10 minuti è probabilistico; non si sa mai esattamente quando verrà trovato il blocco successivo.

Ho giocato con la tastiera per un minuto finché non sono comparsi due zeri. Questo è stato esponenzialmente più difficile che trovare un singolo zero. La possibilità di trovare due zeri di fila è 1 su 162, o una possibilità su 1.

Se più persone si unissero al mining e alla competizione per nuovi bitcoin, alla fine sarebbero necessari tre zeri.

Ho appena cercato l'ultimo vero blocco Bitcoin, che contiene l'hash del blocco precedente. L'hash era:

000000000000000000084d31772619ee08e21b232f755a506bc5d09f3f1a43a1

Sono 19 zeri! C'è un 1 su 1619 possibilità di trovare un tale blocco ad ogni tentativo. I minatori di bitcoin fanno molti, molti tentativi al secondo, collettivamente in tutto il mondo.

Il numero di tentativi al secondo è noto come "frequenza hash". Attualmente, il tasso di hash mondiale stimato è di poco inferiore a 200 milioni di terahash al secondo (un terahash è un trilione di hash). Con così tanti tentativi al secondo, un blocco con un hash che inizia con 19 zeri viene trovato ogni 10 minuti circa.

In futuro, man mano che più miner si uniranno, l'hash rate aumenterà, i blocchi verranno trovati più velocemente e la difficoltà di Bitcoin si adeguerà per richiedere 20 zeri, il che riporterà la produzione di blocchi a circa 10 minuti.

La metà

Quando Bitcoin iniziò per la prima volta, per ogni blocco venivano prodotti 50 bitcoin. Le regole della blockchain di Bitcoin specificano che dopo ogni 210,000 blocchi la ricompensa verrà dimezzata. Questo momento è noto come "l'halving" e si verifica all'incirca ogni quattro anni. L'halving, combinato con la regolazione della difficoltà mantenendo i blocchi a intervalli di 10 minuti, significa che intorno all'anno 2140, la ricompensa del blocco sarà 0.00000001, ovvero 1 satoshi, l'unità più piccola di un bitcoin, e non può più essere dimezzato. Il mining non si fermerà, ma la ricompensa del blocco sarà zero. Da quel momento, in futuro non verranno creati nuovi bitcoin e il numero di bitcoin è matematicamente calcolabile e abbastanza vicino a 21 milioni di monete. Questo è il modo in cui è nota la fornitura totale: è impostata in modo programmatico.

Anche con il premio in blocco a zero, i miner saranno comunque incentivati ​​a continuare a lavorare per guadagnare commissioni di transazione.

In che modo esattamente viene dimezzata la ricompensa del blocco? È nel codice detenuto dai nodi. Sanno rifiutare qualsiasi nuovo blocco dopo 210,000 in cui un miner si paga oltre 25 bitcoin. E poi rifiutare eventuali blocchi dopo 420,000 dove un miner si paga oltre 12.5 bitcoin, e così via.

Le spese di transazione

Finora ho mostrato solo blocchi immaginari con una singola transazione: la transazione in cui il minatore riceve una ricompensa. Questa è chiamata "transazione coinbase".

Non prende il nome dall'azienda, Conbase, intendo Coinbase. La società ha preso il nome dalla transazione coinbase, non viceversa. Non confonderti.

Oltre alla transazione coinbase, ci sono transazioni di persone che si pagano a vicenda. Ecco un esempio immaginario:

In che modo SHA256 e il mining proteggono la rete Bitcoin PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Questa volta non mi sono preoccupato di trovare un vero hash (in realtà è il vero hash riportato nel blocco 200,001). Il nonce l'ho appena inventato per divertimento, ma ho notato che un messaggio può essere incorporato lì.

Satoshis ha incluso le parole "Cancelliere sull'orlo del secondo salvataggio per le banche" nel primo blocco Bitcoin (The Genesis Block), dopo il titolo del giornale della giornata.

In che modo SHA256 e il mining proteggono la rete Bitcoin PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Il punto qui è che ci sono 132 transazioni incluse (non tutte mostrate). Guarda la transazione n. 132 – 2.3 bitcoin da un indirizzo sta pagando 2.1 bitcoin a un altro indirizzo e anche a un secondo indirizzo l'importo di 0.1 bitcoin (ho usato i punti per accorciare la lunghezza dell'indirizzo).

Quindi una fonte di 2.3 bitcoin paga un totale di 2.2 bitcoin (2.2 + 0.1 = 2.2). Mancano 0.1 bitcoin? No, la differenza è rivendicata dal minatore, come spiegherò.

Il miner può pagarsi 25 bitcoin come ricompensa del blocco (perché sono passati 210,000 blocchi quindi la ricompensa è stata dimezzata da 50 a 25). Ma se guardi, la transazione coinbase è 27.33880022. I 2.33880022 bitcoin extra provengono dalle altre 132 transazioni nel blocco: gli input saranno tutti leggermente maggiori del totale degli output. Quindi il minatore può rivendicare questo bitcoin "abbandonato" come pagamento a se stesso. Queste sono considerate commissioni di transazione pagate al minatore.

Lo spazio del blocco è limitato. Quando Bitcoin era nuovo, gli utenti potevano inviare transazioni senza commissioni e i minatori includevano la transazione nel blocco. Ma ora ci sono più utenti e poiché passare al blocco successivo è competitivo, gli utenti includono una commissione nella transazione per invogliare il minatore a scegliere la propria transazione rispetto a quella degli altri.

Quindi, quando la ricompensa del blocco diminuisce costantemente, dimezzandosi ogni quattro anni e alla fine a zero, i minatori vengono comunque pagati in questo modo.

Alcuni hanno suggerito che un giorno la ricompensa ai miner non sarà sufficiente e farà fallire Bitcoin. Questa preoccupazione è stata completamente sfatata e non la ripeterò qui.

Un blocco può essere riscritto?

Questo è estremamente improbabile e vale la pena capire perché. Apprezzerai quindi perché le transazioni Bitcoin sono immutabili (immutabili).

Ho spiegato in precedenza che l'hash del blocco precedente è incluso nel blocco corrente. Ciò significa che qualsiasi modifica delle transazioni in un vecchio blocco cambia l'hash di quel blocco modificato. Ma quell'hash viene registrato nel blocco successivo, quindi ciò significa che anche il blocco successivo deve essere aggiornato. Ma se modifichi l'hash registrato nel blocco successivo, il suo hash deve cambiare e così via.

Nota che ogni volta che un hash viene modificato, perdi tutti questi adorabili zeri e rimarrai semplicemente con un hash dall'aspetto casuale e dovrai rifare tutto il lavoro per recuperare gli zeri. Se lo fai per il blocco che hai provato a modificare, devi ripetere il lavoro per il blocco successivo e il successivo fino al blocco più recente. Non puoi semplicemente fermarti al vecchio blocco, perché le regole di Bitcoin sono tali che la catena di blocchi più lunga è il vero record di Bitcoin. Se torni indietro e modifichi un blocco 10 blocchi fa, non hai più la catena più lunga. Devi aggiungere altri 10 blocchi e poi un po' di più perché mentre stavi creando quei 10 blocchi, la catena reale probabilmente è diventata un po' più lunga. Devi correre per superare la vera catena. In caso di successo, la nuova versione diventa la versione reale.

Ripetendo lo sforzo di hashing collettivo del mondo intero dal blocco modificato all'ultimo blocco è l'ostacolo alla modifica di Bitcoin. L'energia è stata spesa per creare quegli hash con tutti quegli improbabili zeri e quel dispendio energetico deve essere ripetuto per modificare Bitcoin. Questo è il motivo per cui l'energia utilizzata per estrarre Bitcoin non viene “sprecata”; è lì per difendere Bitcoin dalle modifiche, per rendere immutabile il libro mastro senza la necessità di fidarsi di un'autorità centrale.

Cosa succede se due minatori trovano un blocco contemporaneamente?

Questo in realtà accade di tanto in tanto e si risolve sempre come segue:

Ogni nodo riceverà prima uno dei nuovi blocchi quasi simultanei e accetterà quello e rifiuterà quello che arriva pochi istanti dopo. Ciò si traduce in una divisione della rete, ma è temporanea.

Per illustrare, chiamiamo uno dei blocchi blu e l'altro rosso (non hanno colore, abbi pazienza).

I minatori lavoreranno quindi sul blocco successivo, ma ci sarà una divisione su quale blocco estenderanno la catena.

Diciamo che il minatore vincitore ha trovato un blocco usando la catena blu. Invieranno il nuovo blocco a tutti i nodi e la catena più lunga sarà evidente. I nodi che avevano accettato la catena rossa la rilasceranno e adotteranno la catena blu.

Tutti i minatori che stavano lavorando sulla catena rossa si fermeranno e ora lavoreranno sulla catena più lunga, che è la catena blu. La catena rossa è morta.

Appendice

Perché il blocco di un minatore secondo classificato non è valido

Supponiamo che il blocco 700,000 sia stato appena estratto da MINER-A. Trenta secondi dopo, MINER-B ha anche creato una versione diversa del blocco 700,000. Quando MINER-B trasmette questa alternativa, ogni nodo la rifiuterà perché ha già visto e accettato il blocco di MINER-A. Inoltre, in quei 30 secondi, diciamo che MINER-C ha trovato il blocco 700,001. Dato che il 700,000esimo blocco concorrente di MINER-B non estende la catena attuale (che arriva fino a 700,001), viene rifiutato anche per questo motivo.

Ancora più interessante è che se MINER-B avesse lavorato sul blocco 700,001 invece che su una versione concorrente di 700,000, avrebbe avuto le stesse possibilità di estrarre un blocco 700,001 valido così come avrebbero dovuto trovare finalmente un blocco 700,000 alternativo. Pertanto, non appena un minatore vede un nuovo blocco, dovrebbe concentrare i propri sforzi sul blocco successivo.

Se, tuttavia, Miner-B ha trovato il blocco 700,000 un secondo dopo MINER-A, è possibile che alcuni nodi vedano prima il blocco di MINER-A mentre altri vedono prima il blocco di MINER-B, a seconda delle posizioni geografiche e della velocità di Internet. In tal caso, esiste un fork temporaneo e alcuni miner lavoreranno per estendere una versione mentre altri miner lavoreranno per estendere l'altra. Come spiegato in precedenza utilizzando i descrittori "catena blu" e "catena rossa", alla fine una delle versioni si estenderà ulteriormente prima dell'altra e diventerà la versione valida all'unanimità.

Questo è un guest post di Arman The Parman. Le opinioni espresse sono interamente proprie e non riflettono necessariamente quelle di BTC Inc o Bitcoin Magazine.

Timestamp:

Di più da Bitcoin Magazine