Sommario:

Come funziona effettivamente la blockchain
Come funziona effettivamente la blockchain

Video: Come funziona effettivamente la blockchain

Video: Come funziona effettivamente la blockchain
Video: Facial Prosthetics Bring Art And Design Together 2024, Novembre
Anonim

Questo post vuole raccontare a tutti perché è stata inventata la blockchain, come funzionano le criptovalute e perché è il sistema più bello degli ultimi anni dal punto di vista della logica.

Ti avviso subito che sotto il taglio c'è un ENORME foglio di testo e se non sei pronto a "chiudere" la domanda sul tema delle criptovalute una volta per tutte, aggiungi subito una voce ai tuoi preferiti e prenotati del tempo)

Blockchain è una tecnologia, nuova, strana, incomprensibile, ma sembra che stia cambiando il mondo, in contrasto con queste tue storie. A quanto pare è con noi da molto tempo.

Questo post è scritto come se fosse raccontato a persone che sono molto lontane dai computer e le conoscono solo superficialmente, immagina ad esempio che si stava preparando per i tuoi genitori. Posso anche buttarlo via ai miei compagni di studi umanistici ed essere sicuro che capiranno.

E Oleg ci aiuterà tutti in questa difficile questione. Incontrare!

Se non ti piace Oleg, lo caccio fuori.

Le basi: perché abbiamo bisogno della blockchain?

La blockchain è stata descritta nell'articolo di Satoshi Nakamoto "Bitcoin: A Peer-to-Peer Electronic Cash System". Lì, in sole otto pagine, l'autore ha descritto le basi della criptovaluta Bitcoin, che si basava sull'algoritmo Blockchain.

Elenco che non può essere modificato

Blockchain - una catena di blocchi o in altre parole una lista concatenata. In tale elenco, ogni record successivo si riferisce a uno precedente e così via fino al primo. Come le carrozze di un treno, ognuna trascina l'altra. Per quanto riguarda le liste, c'è un buon articolo di Nikita Likhachev su TJ, dove viene spiegato lo stesso per i neofiti. Le analogie sono in parte tratte da lì.

Facciamo un esempio

Gli amici di Oleg prendono costantemente in prestito denaro da lui. Oleg è gentile, ma estremamente smemorato. Una settimana dopo, non ricorda più chi non gli ha restituito il debito, ma è imbarazzato a chiederlo a tutti. Pertanto, un giorno decise di porre fine a tutto ciò creando sulla lavagna a casa sua una lista di amici a cui aveva prestato denaro.

Ora Oleg può sempre andare al consiglio e assicurarsi che Max abbia restituito tutto, ma Vanya non dà già 700 rubli. Un giorno Oleg invita Vanya a bere qualcosa a casa sua. Mentre Oleg sta andando in bagno, Vanya cancella la voce "Ho preso in prestito 200 rubli per Vanya" e scrive al suo posto "Vanya ha dato 500 rubli".

Oleg, che si fidava della sua lista, dimentica il debito e perde 700 rubli. Decide di combatterlo in qualche modo. L'anno scorso, Oleg ha frequentato un corso di programmazione, dove gli è stato detto dell'hashing. Ricorda che qualsiasi stringa può essere trasformata in un insieme univoco di caratteri - un hash, e la modifica di qualsiasi carattere nella stringa lo cambierà completamente.

L'aggiunta di un punto alla fine ha cambiato l'hash finale oltre il riconoscimento: puoi usarlo.

Oleg prende il noto hash SHA-256 e con esso esegue l'hashing di ogni record, aggiungendo il risultato alla fine. Ora Oleg può assicurarsi che nessuno abbia cambiato i suoi record eseguendo di nuovo l'hashing e confrontandoli con quello verde.

Ma EVIL IVAN sa anche come usare SHA-256 e può facilmente modificare la voce insieme al suo hash. Soprattutto se l'hash è scritto proprio accanto ad esso sulla lavagna.

Pertanto, per maggiore sicurezza, Oleg decide di eseguire l'hash non solo del record stesso, ma di aggiungerlo insieme all'hash del record precedente. Ora tutte le voci successive dipendono da quelle precedenti. Se cambi almeno una riga, dovrai ricalcolare gli hash di tutte le altre sotto nell'elenco.

Ma un giorno Ivan si intrufola di notte, cambia la voce di cui ha bisogno e aggiorna gli hash per l'intero elenco fino alla fine. Gli ci vogliono diverse ore, ma Oleg è ancora profondamente addormentato e non riesce a sentire. Al mattino, Oleg scopre un elenco assolutamente corretto: tutti gli hash corrispondono. Ma Ivan lo ha ingannato lo stesso, anche se ci ha passato una notte insonne. In quale altro modo puoi proteggerti da Night Ivan?

Oleg decide di complicarsi in qualche modo la vita. Ora, per aggiungere una nuova voce all'elenco, Oleg risolverà un problema complesso ad esso associato, ad esempio un'equazione matematica. Aggiungerà la risposta all'hash finale.

Oleg è bravo in matematica, ma ci vogliono anche dieci minuti per aggiungere una voce. Nonostante ciò, il tempo speso ne vale la pena, perché se Ivan vuole cambiare di nuovo qualcosa, dovrà risolvere di nuovo le equazioni per ogni riga, e ce ne possono essere dozzine. Ci vorrà molto tempo, perché le equazioni sono ogni volta uniche e associate a un record specifico.

Ma controllare l'elenco è altrettanto semplice: prima devi confrontare gli hash come prima, quindi controllare le soluzioni delle equazioni con una semplice sostituzione. Se tutto converge, l'elenco non viene modificato.

In realtà, le cose non vanno così bene con le equazioni: i computer le risolvono troppo bene e dove memorizzare così tante equazioni uniche. Pertanto, gli autori della blockchain hanno avuto un problema più bello: è necessario trovare un numero tale (non una volta) in modo che l'hash finale dell'intero record inizi con 10 zeri. Un tale nonce è difficile da trovare, ma il risultato può sempre essere verificato solo con gli occhi.

Ora Oleg verifica tutti gli hash e inoltre si assicura che ciascuno inizi con il numero di zeri specificato. Sly Ivan, anche armato di un potente laptop, non avrà il tempo di ricalcolare tutti gli hash in una notte in modo che soddisfino la condizione - non ci sarà abbastanza tempo.

Tale elenco, infatti, è la blockchain domestica in ginocchio. La sua sicurezza è garantita dai matematici, che hanno dimostrato che questi hash non possono essere calcolati in qualche modo più velocemente, se non con la forza bruta. Tale enumerazione di hash per ogni record è mining, di cui oggi ci sarà molto e in dettaglio.

Centralizzazione della fiducia

Ai nostri amici è piaciuta l'idea di tenere un falso elenco di "chi ha preso in prestito chi". Inoltre, non vogliono ricordare chi ha pagato per chi al bar e quanto devono ancora: tutto è scritto sul muro. Hai discusso l'idea e hai deciso che ora hai bisogno di un unico elenco per tutti.

Ma a chi dovrebbe essere affidata una contabilità così importante? Dopotutto, quando si tratta di soldi, la fiducia viene in primo piano. Non ci fidiamo dell'ignoto per tenere i nostri soldi. Per questo, i nostri antenati hanno inventato le banche, che nel tempo hanno iniziato a fidarsi, perché sono supportate da una licenza, leggi e assicurazioni della Banca centrale.

Nella cerchia degli amici, tutti si fidano l'uno dell'altro e puoi semplicemente scegliere il più responsabile per questo ruolo. Ma cosa succede se la domanda riguarda gli estranei? Un'intera città, un paese o il mondo intero, come nel caso di Bitcoin? In generale, nessuno può fidarsi di nessuno lì.

Decentramento: nessuno si fida di nessuno

Quindi hanno escogitato un approccio alternativo: conservare una copia dell'elenco per tutti. Pertanto, un utente malintenzionato non dovrebbe solo riscrivere un elenco, ma anche intrufolarsi in ogni casa e riscrivere gli elenchi lì. E poi si scopre che qualcuno ha tenuto diverse liste a casa, di cui nessuno era a conoscenza. Questo è il decentramento.

Lo svantaggio di questo approccio è che per effettuare nuove voci, dovrai chiamare tutti gli altri partecipanti e informare ciascuno di loro delle ultime modifiche. Ma se questi partecipanti sono macchine senz'anima, non c'è più alcun problema.

In un tale sistema, non esiste un unico punto di fiducia, e quindi la possibilità di corruzione e imbroglio. Tutti i partecipanti al sistema agiscono secondo un'unica regola: nessuno si fida di nessuno. Tutti credono solo alle informazioni che hanno a loro disposizione. Questa è la legge principale di qualsiasi rete decentralizzata.

Transazioni

Quando acquisti un piatto in un negozio, inserisci il codice pin dalla tua carta, consentendo al negozio di chiedere alla banca se hai 35 rubli sul tuo conto. In altre parole, firmi una transazione per 35 rubli con il tuo codice pin, che la banca conferma o rifiuta.

Anche i nostri record del tipo "Ho preso in prestito Vanya 500 rubli" sono transazioni. Ma non abbiamo una banca che autorizzi l'autore delle transazioni. Come possiamo verificare che Ivan non abbia aggiunto silenziosamente la voce "Max deve a Oleg 100.500 rubli"?

La blockchain utilizza per questo il meccanismo delle chiavi pubbliche e private; gli specialisti IT le utilizzano da tempo per l'autorizzazione nello stesso SSH. L'ho spiegato sulle mie dita nel post "Sicurezza, crittografia, cyberpunk" nella sezione "Introduzione alla crittografia".

Brevemente su come funziona questa matematica complessa ma bella: generi una coppia di lunghi numeri primi sul tuo computer: una chiave pubblica e una privata. La chiave privata è considerata supersegreta perché può decifrare ciò che è crittografato in pubblico.

Ma funziona anche il contrario. Se condividi la chiave pubblica con tutti i tuoi amici, saranno in grado di crittografare qualsiasi messaggio per loro in modo che solo tu possa leggerlo, poiché possiedi quello privato.

Ma oltre a questo, la chiave pubblica ha un effetto utile: con essa puoi verificare che i dati siano stati crittografati con la tua chiave privata, senza decifrare i dati stessi. Tutte queste proprietà sono ben descritte nel "Libro dei Cifrari".

Siamo su un Internet decentralizzato in cui non ci si può fidare di nessuno. La transazione viene firmata con una chiave privata e, insieme alla chiave pubblica, viene inviata a un archivio speciale, un pool di transazioni non confermate. Quindi qualsiasi membro della rete può verificare che sei stato tu ad avviarlo e non qualcun altro vuole ripagare con i tuoi soldi.

Ciò garantisce l'apertura e la sicurezza della rete. Se le banche precedenti erano responsabili di questo, allora nella blockchain i matematici sono responsabili di questo.

Per gli utenti ordinari che non vogliono capire come emettere e archiviare chiavi private, i servizi di portafoglio online saranno d'aiuto. Per copiare chiavi pubbliche lunghe, vengono creati dei comodi codici QR. Ad esempio Blockchain Wallet, perché ha una comoda applicazione mobile e supporta le due principali criptovalute: BTC ed ETH.

Mancanza del concetto di "equilibrio"

Come il nostro consiglio di amministrazione, la blockchain consiste essenzialmente solo nella cronologia delle transazioni. Non memorizza il saldo di ogni portafoglio, altrimenti dovremmo inventare metodi di protezione aggiuntivi.

Solo la chiave privata conferma la proprietà del portafoglio. Ma come possono gli altri membri della rete assicurarsi che io abbia abbastanza soldi per comprare?

Dal momento che non abbiamo equilibrio, devi dimostrarlo. Pertanto, una transazione blockchain include non solo la tua firma e quanto vuoi spendere, ma anche collegamenti a transazioni precedenti in cui hai ricevuto la quantità di denaro richiesta.

Cioè, se vuoi spendere 400 rubli, ripercorri l'intera cronologia delle entrate e delle spese e allega alla tua transazione quei redditi in cui ti sono stati dati 100 + 250 + 50 rubli, dimostrando così di avere questi 400 rubli.

Ogni membro della rete si assicurerà ancora una volta di controllare che tu non abbia allegato reddito due volte. Che quei 300 rubli che Max ha dato la scorsa settimana, davvero non li hai ancora spesi.

Tali entrate collegate a una transazione sono chiamate input nella blockchain e tutti i destinatari di denaro sono chiamati output. La somma di tutti gli input è raramente esattamente la stessa che si desidera trasferire alla volta, quindi uno degli output sarà molto spesso te stesso. In altre parole, la transazione sulla blockchain sembra "Mi sono stati dati 3 e 2 BTC, voglio trasferire 4 BTC da loro e restituire il restante 1 BTC".

La bellezza della blockchain è che gli input non devono provenire da un portafoglio. Dopotutto, viene controllata solo la chiave. Se conosci la chiave privata di tutti gli input, puoi facilmente allegarli alla tua transazione e pagare con questo denaro. Come se pagassi in un supermercato con più carte di cui conosci il codice pin.

Tuttavia, se perdi la tua chiave privata, il tuo disco si spegne o il tuo laptop viene rubato, i tuoi bitcoin andranno persi per sempre. Nessuno può usarli come input per nuove transazioni.

Questo importo sarà per sempre inaccessibile al mondo intero, come se si bruciasse un fascio di banconote. Non esiste un'unica banca in cui puoi scrivere una domanda con una copia del passaporto e lui la stamperà. Ciò richiede un rilascio aggiuntivo di nuovi bitcoin "dal nulla".

Problema di doppia spesa

Sopra ho detto che le transazioni vengono aggiunte a uno speciale "pool di transazioni non confermate". Perché abbiamo bisogno di una sorta di entità intermedia, se disponiamo già di transazioni firmate già pronte? Perché non scriverli direttamente sulla blockchain?

Perché i segnali dal punto A al punto B vanno sempre in ritardo. Due transazioni possono andare in modi completamente diversi. E la transazione che è stata avviata per prima può raggiungere il destinatario in seguito, perché ha richiesto un percorso più lungo.

Ciò si traduce in una doppia spesa, quando lo stesso denaro è stato inviato a due destinatari contemporaneamente, che non avrebbero nemmeno immaginato. Non si tratta di consegnare banconote di mano in mano.

Per una rete decentralizzata in cui non ci si può fidare di nessuno, questo problema è particolarmente acuto. Ecco come assicurarti che una transazione sia stata sicuramente prima di un'altra? Chiedi al mittente di cucirci l'orario di spedizione, giusto? Ma ricorda: non puoi fidarti di nessuno, nemmeno del mittente.

L'ora su tutti i computer sarà necessariamente diversa e non esiste un modo garantito per sincronizzarli. Una copia della blockchain è archiviata su ogni computer della rete e ogni partecipante si fida solo di essa.

Come puoi assicurarti che una transazione sia stata precedente a un'altra?

La risposta è semplice: è impossibile. Non c'è modo di confermare l'ora di una transazione su una rete decentralizzata. E la soluzione a questo problema è la terza importante idea blockchain che Satoshi ha inventato e che, stranamente, è scritta proprio nel suo nome: blocchi.

I blocchi sono la spina dorsale della blockchain

Ogni computer funzionante sulla rete seleziona tutte le transazioni che desidera dal pool generale. Di solito solo per la commissione più alta che può guadagnare su di essa. Quindi raccoglie le transazioni per se stesso fino a quando la loro dimensione totale raggiunge il limite negoziato. In Bitcoin, questo limite di dimensione del blocco è 1 MB (dopo SegWit2x sarà 2 MB) e in Bitcoin Cash - 8 MB.

L'intera blockchain è essenzialmente un elenco di tali blocchi, dove ognuno si riferisce al precedente. Può essere utilizzato per tenere traccia di qualsiasi transazione nell'intera cronologia, srotolando la blockchain anche fino al primo record.

È questa lista che ora pesa centinaia di gigabyte e deve essere scaricata completamente su tutti i computer che vogliono prendere parte alla rete (ma questo non è necessario per creare semplicemente transazioni e trasferire denaro). Viene scaricato allo stesso modo da tutti i computer più vicini sulla rete, come se si scaricasse una serie da torrent, vengono rilasciati solo nuovi nuovi episodi ogni 10 minuti.

Dopo aver digitato le transazioni dal pool per se stesso, il computer inizia a comporre da esse lo stesso elenco non falsificabile come abbiamo fatto all'inizio del post sulla lavagna a casa.

Solo lui lo fa sotto forma di un albero: esegue l'hashing dei record a coppie, quindi il risultato è di nuovo in coppia e così via fino a quando rimane solo un hash: la radice dell'albero, che viene aggiunta al blocco. Perché esattamente con un albero - non ho trovato la risposta, ma suppongo che sia semplicemente più veloce in questo modo. Leggi di più sulla wiki: Merkle tree.

Poiché l'attuale blockchain è già stata scaricata, il nostro computer sa esattamente qual è l'ultimo blocco al suo interno. Deve solo aggiungere un collegamento nell'intestazione del blocco, eseguire l'hashing e dire a tutti gli altri computer sulla rete "guarda, ho creato un nuovo blocco, aggiungiamolo alla nostra blockchain".

Il resto dovrebbe controllare che il blocco sia costruito secondo tutte le regole e che non abbiamo aggiunto transazioni inutili lì, quindi aggiungerle alle nostre catene. Ora tutte le transazioni al suo interno sono confermate, la blockchain è aumentata di un blocco e tutto sta andando bene, no?

Ma no. Migliaia di computer stanno lavorando contemporaneamente sulla rete e, non appena assemblano un nuovo blocco, si precipitano quasi contemporaneamente ad informare tutti che il loro blocco è stato creato per primo. E dalla sezione precedente, sappiamo già che in una rete decentralizzata è impossibile dimostrare chi è stato davvero il primo.

Come a scuola, quando tutti stavano risolvendo un compito difficile, raramente accadeva che anche studenti eccellenti prendessero le risposte contemporaneamente.

Ma se per una persona è un compito difficile pianificare una vacanza in modo che arrivi alle vacanze di maggio e i biglietti per il mare sono economici, allora per un computer è aggiungere un tale numero (non una volta) alla fine del block in modo che, di conseguenza, inizi l'hash SHA-256 per l'intero blocco, diciamo 10 zeri. Questo è il problema che deve essere risolto per aggiungere un blocco alla rete Bitcoin. Per altre reti, le attività potrebbero essere diverse.

Quindi arriviamo al concetto di mining, da cui tutti sono stati così ossessionati negli ultimi anni.

Estrazione

L'estrazione di bitcoin non è una sorta di sacro sacramento. Il mining non riguarda la ricerca di nuovi bitcoin da qualche parte nelle profondità di Internet. Il mining è quando migliaia di computer in tutto il mondo ronzano negli scantinati, esaminando milioni di numeri al secondo, cercando di trovare un hash che inizia con 10 zeri. Non hanno nemmeno bisogno di essere online per farlo.

Le schede video con centinaia di core paralleli risolvono questo problema più velocemente di qualsiasi CPU.

Perché esattamente 10 zeri? E proprio così, non ha senso. Quindi Satoshi ha inventato. Perché questo è uno di quei problemi per i quali c'è sempre una soluzione, ma di certo non può essere trovata più velocemente di una lunga e monotona enumerazione di opzioni.

La complessità del mining dipende direttamente dalle dimensioni della rete, ovvero dalla sua potenza totale. Se crei la tua blockchain e la esegui da solo a casa su due laptop, il compito dovrebbe essere più semplice. Ad esempio, in modo che l'hash inizi con un solo zero, o in modo che la somma delle cifre pari sia uguale alla somma delle cifre dispari.

Ci vorranno diversi decenni prima che un computer trovi un hash che inizia con 10 zeri. Ma se combini migliaia di computer in un'unica rete e cerchi in parallelo, allora, secondo la teoria della probabilità, questo problema viene risolto in media in 10 minuti. Questo è il momento in cui appare un nuovo blocco nella blockchain bitcoin.

Ogni 8-12 minuti, qualcuno sulla terra trova un tale hash e ottiene il privilegio di annunciare a tutti la sua scoperta, evitando così il problema di chi è stato il primo.

Per trovare una risposta, il computer (dal 2017) riceve 12,5 BTC: questa è la quantità di ricompensa che viene generata dal sistema bitcoin "dal nulla" e diminuisce ogni quattro anni.

Tecnicamente, ciò significa che ogni miner aggiunge sempre un'altra transazione al suo blocco: "crea 12,5 BTC e inviali al mio portafoglio". Quando senti "il numero di bitcoin nel mondo è limitato a 21 milioni, ora ne hanno già assunti 16 milioni" - questi sono i premi generati dalla rete.

Vai a vedere un vero blocco Bitcoin dal vivo su uno dei siti dedicati. Ci sono anche transazioni con input e output, e ben 18 zeri all'inizio e tutti gli hash descritti sopra.

Sono i minatori che aggiungono le transazioni emergenti alla blockchain. Quindi, se qualcuno ti dice che "farà una blockchain per ***", la prima domanda a cui deve rispondere è chi mina su di essa e perché. Molto spesso, la risposta corretta è "tutti lo faranno, perché per il mining diamo le nostre monete, che cresceranno ed è redditizio per i minatori". Ma questo non vale per tutti i progetti.

Ad esempio, qualche Ministero della Salute domani crea la propria blockchain chiusa per i medici (e la vogliono), chi la estrae? Terapisti del fine settimana?

Ma quale sarà il vantaggio per i minatori in seguito, quando le ricompense scompariranno o diventeranno scarse?

Secondo l'idea del Creatore, a quel punto le persone dovranno credere nella realtà del bitcoin e il mining inizierà a ripagare l'importo delle commissioni incluse in ogni transazione. È qui che va tutto: nel 2012, tutte le commissioni erano pari a zero, i minatori estraevano solo per i premi dai blocchi. Oggi, una transazione con zero commissioni può rimanere in sospeso per diverse ore, perché c'è concorrenza e le persone sono disposte a pagare per la velocità.

Cioè, l'essenza del mining sta nel risolvere problemi senza senso. Tutto questo potere non potrebbe essere usato per qualcosa di più utile - la ricerca di una cura per il cancro, per esempio?

L'essenza del mining è risolvere qualsiasi problema computazionale. Questo compito dovrebbe essere abbastanza semplice da consentire ai partecipanti alla rete di avere una probabilità stabile di trovare una risposta, altrimenti le transazioni verranno confermate per sempre. Immagina che alla cassa in un negozio devi aspettare mezz'ora ogni volta che la banca confermi la tua transazione. Nessuno utilizzerà una banca del genere.

Ma il compito deve essere allo stesso tempo difficile, in modo che tutti i netizen non trovino la risposta in una volta. Perché in questo caso annunceranno molti blocchi con le stesse transazioni alla rete e ci sarà la possibilità di "doppio spreco", di cui ho parlato. O, peggio ancora, dividere una singola blockchain in più rami, in cui nessuno riesce a capire quale transazione è confermata e quale no.

Se una ricompensa di 12,5 BTC viene assegnata solo una volta ogni 10 minuti e solo una persona che ha trovato il blocco, si scopre che devo sprecare schede video per diversi anni nella speranza che un giorno perderò $ 40.000 (alla tasso di cambio attuale)?

Questo è esattamente il caso del bitcoin. Ma non è stato sempre così. In precedenza, la rete era più piccola, la complessità è inferiore, il che significa che la probabilità di trovare da solo un hash per un nuovo blocco è maggiore. Ma poi il bitcoin non era così costoso.

Ora nessuno sta estraendo bitcoin da solo. Ora i partecipanti sono uniti in gruppi speciali: mining pool, in cui tutti insieme cercano di trovare l'hash corretto.

Se almeno uno del gruppo trova, l'intera ricompensa viene divisa tra i partecipanti, a seconda del loro contributo al lavoro comune. Si scopre che stai estraendo e ricevi un centesimo dalla quota totale ogni settimana.

Ma il mining da solo è del tutto possibile su altre reti. Fino a poco tempo, era facile estrarre Ethereum, dove vengono trovati blocchi ogni 10 secondi. La ricompensa del blocco è molto più bassa lì, ma la probabilità di guadagnare un bel centesimo è più alta.

Quindi bruceremo invano migliaia di schede video e non c'è via d'uscita?

Sì, ma ci sono idee. Il mining che ho descritto è classico e si chiama Proof-of-Work (prova di lavoro). Cioè, ogni macchina dimostra che ha funzionato a vantaggio della rete risolvendo problemi senza senso con una data probabilità.

Ma alcuni ragazzi stanno iniziando a creare blockchain con altri tipi di mining. Ora il secondo concetto più popolare è Proof-of-Stake (prova di puntata). In questo tipo di mining, più "monete" un partecipante alla rete ha nel suo account, più è probabile che inserisca il suo blocco nella blockchain. Come il ragazzo più rumoroso del villaggio.

Puoi pensare ad altri tipi di mining. Come già suggerito, tutti i computer della rete possono cercare una cura per il cancro, solo tu devi capire come, in questo caso, registrare il loro contributo al sistema. Dopotutto, posso dichiarare che sto partecipando anche io, ma spengo la mia scheda video e non contiamo nulla.

Come quantificare il contributo di ogni partecipante alla ricerca di una cura per il cancro? Se ti viene in mente - osa tagliare il tuo CancerCoin, ti è garantito un clamore nei media.

Blockchain

Immagina una situazione in cui, nonostante tutta la nostra teoria della probabilità, due minatori sono comunque riusciti a trovare la risposta giusta contemporaneamente. Iniziano a inviare due blocchi assolutamente corretti sulla rete.

Questi blocchi sono garantiti per essere diversi, perché anche se hanno miracolosamente scelto le stesse transazioni dal pool, realizzato alberi assolutamente identici e indovinato lo stesso numero casuale (non una volta), i loro hash saranno comunque diversi, poiché ognuno scriverà il suo numero di portafoglio in il blocco per ricompensa.

Ora abbiamo due blocchi validi e di nuovo sorge il problema di chi dovrebbe essere considerato per primo. Come si comporterà la rete in questo caso?

L'algoritmo blockchain afferma che i partecipanti alla rete accettano semplicemente la prima risposta corretta che li raggiunge. Quindi vivono sulla base della propria immagine del mondo.

Entrambi i minatori riceveranno la loro ricompensa e tutto il resto inizierà a estrarre, facendo affidamento sull'ultimo blocco che hanno ricevuto personalmente, scartando tutto il resto viene corretto nuovamente. Sulla rete compaiono due versioni della blockchain corretta. Questo è il paradosso.

Questa è una situazione di routine in cui la teoria della probabilità aiuta ancora. La rete funziona in uno stato così biforcato finché uno dei minatori non trova il blocco successivo a una di queste catene.

Non appena un tale blocco viene trovato e inserito nella catena, diventa più lungo e viene incluso uno degli accordi della rete blockchain: in qualsiasi condizione, la blockchain più lunga viene accettata come l'unica vera per l'intera rete.

La filiera corta, nonostante tutta la sua correttezza, viene rifiutata da tutti i partecipanti alla rete. Le transazioni da esso vengono restituite al pool (se non sono state confermate in un altro) e la loro elaborazione inizia di nuovo. Il minatore perde la sua ricompensa perché il suo blocco non esiste più.

Con la crescita della rete, tali coincidenze da "molto improbabili" entrano nella categoria di "beh, a volte succede". I veterani dicono che ci sono stati casi in cui una catena di quattro blocchi è stata abbandonata contemporaneamente.

Per questo motivo, sono state inventate tre regole di insicurezza di fine catena:

1. I premi per il mining possono essere utilizzati solo dopo altri 20 blocchi confermati dopo la ricezione. Per Bitcoin, sono circa tre ore.

2. Se ti sono stati inviati bitcoin, puoi usarli come input in nuove transazioni solo dopo 1-5 blocchi.

3. Le regole 1 e 2 sono solo enunciate nelle impostazioni di ciascun client. Nessuno controlla la loro osservanza. Ma la legge sulla catena più lunga cancellerà comunque tutte le tue transazioni se tenti di indurre il sistema a non applicarle.

Cercando di imbrogliare la blockchain

Ora che sai tutto sul mining, sul dispositivo della blockchain e sulla regola della catena più lunga, potresti avere una domanda: è possibile in qualche modo superare specificamente la blockchain creando tu stesso la catena più lunga, confermando così le tue transazioni false.

Supponiamo che tu abbia il computer più potente del mondo. I datacenter di Google e Amazon messi insieme a tua disposizione e stai cercando di calcolare una catena del genere che diventerà la blockchain più lunga della rete.

Non puoi prendere e calcolare immediatamente più blocchi della catena, perché ogni blocco successivo dipende da quello precedente. Quindi decidi il più rapidamente possibile di contare ogni blocco sui tuoi enormi datacenter in parallelo con come tutti gli altri partecipanti continuano ad aumentare la blockchain principale. È possibile superarli? Probabilmente sì.

Se la tua potenza di calcolo è superiore al 50% della potenza di tutti i partecipanti alla rete, con una probabilità del 50% sarai in grado di costruire una catena più lunga più velocemente di tutte le altre messe insieme. Questo è un modo teoricamente possibile per ingannare la blockchain calcolando una catena di transazioni più lunga. Quindi tutte le transazioni della rete reale saranno considerate non valide e raccoglierai tutti i premi e inizierai una nuova pietra miliare nella storia della criptovaluta, che si chiama "divisione blockchain". Una volta, a causa di un bug nel codice, questo era il caso di Ethereum.

Ma in realtà, nessun data center può essere paragonato in termini di potenza a tutti i computer del mondo. Un miliardo e mezzo di cinesi con ghiaccioli, un altro miliardo e mezzo di indiani affamati con miniere ed elettricità a basso costo: questa è un'enorme potenza di calcolo. Nessuno al mondo può ancora competere con loro da solo, nemmeno Google.

È come uscire per strada e cercare di convincere ogni persona al mondo che il dollaro ora vale 1 rublo e arrivare in tempo prima che i media ti smascherino. E se riesci a convincere tutti, puoi far crollare l'economia mondiale. In teoria non è possibile? Ma in pratica, per qualche ragione, nessuno ci è riuscito.

Anche la blockchain si basa su questa probabilità. Più partecipanti-miner, più sicurezza e fiducia nella rete. Pertanto, quando un'altra grande azienda mineraria viene coperta in Cina, il tasso crolla. Tutti temono che da qualche parte nel mondo ci sia stato un genio del male che aveva già raccolto un pool di minatori con una capacità del ~ 49%.

Conclusione

Blockchain non è un insieme di algoritmi rigorosamente definito. È una struttura per costruire una rete fittizia tra i partecipanti, dove nessuno può fidarsi di nessuno. Durante la lettura, probabilmente hai pensato più di una volta che “puoi farlo così e ti sarà ancora più utile”. Questo significa che capisci la blockchain, congratulazioni.

Anche alcuni ragazzi nel mondo lo hanno capito e hanno voluto migliorarsi o adattarsi per alcuni compiti specifici. Le criptovalute non sono le stesse, anche se ce ne sono molte. Ecco un breve elenco di alcune delle idee e dei progetti che hanno guadagnato una certa popolarità grazie al ripensamento dell'idea blockchain.

Ethereum

"Eteri" è la seconda parola più popolare che senti nelle notizie di criptovaluta, dopo Bitcoin. Per la gente comune, questa è un'altra criptovaluta e un modo per fare la cosa più trendy chiamata ICO. Gli sviluppatori del sito descrivono Ethereum come "un costruttore di blockchain per le tue esigenze". Anche questo è possibile, sì.

Ma se scavi ancora più a fondo, l'etere non è solo una rete di monete. Questa è un'enorme macchina informatica globale, in cui gli utenti eseguono il codice dei programmi di altre persone (contratti intelligenti), ricevendo una ricompensa per ogni riga eseguita. E tutto questo è decentralizzato, indistruttibile e con tutte le garanzie della blockchain.

Possiamo parlare di Ethereum e di smart contract per così tanto tempo che basterà per un altro post del genere. Pertanto, agiremo nello stile dei migliori blogger: se questo post viene attivamente ripubblicato e ritwittato e entro venerdì ottiene almeno 1.500 visualizzazioni uniche, scriverò un seguito su Ethereum e sugli smart contract.

Consigliato: