Marzo 2018
Volume 33 Numero 3
Il presente articolo è stato tradotto automaticamente.
Blockchain - Concetti fondamentali sulla blockchain
Dal Waldman Lorenzo | 2018 marzo
Torna nel 1999, la rete di condivisione file Napster semplificato per la condivisione di file audio (contenente in genere musica) in una rete peer-to-peer ibrida ("ibrida" perché è utilizzato un server di directory centrale). Tale rete di condivisione file più della semplice condivide file musicali: È consentito tutti gli utenti di mantenere copie di tali file condivisi in modo che un singolo asset digitale ha restituito un numero infinito di copie perfetto attraverso una rete globale. Per tale categoria sorpresa che è stato imposto per chiudere tutti i relativi 89 archivi basata negli Stati Uniti dal 2006, la facilità casuale con la quale tecnologia è stata utilizzata da chiunque disponga di un computer rilevato record Tower vecchio.
In 2008 insomma subprime si è verificato, durante i quali stabilire prolungata, società di assicurazioni dichiarato o teetered su brink fallimento e potenti istituti finanziari Stati Uniti. Tali circostanze chiamato per un intervento immediato governo federale per evitare un meltdown finanziari nazionali ed eventualmente globale. Questo evento importante lasciato una populace leery di banche centralizzate ed esposto del pericolo di con libri finanziari chiusi al controllo pubblico. Nel mese di marzo 2008, la violazione di dati di sistemi di pagamento terra di mezzo esposti i numeri di carta di credito 130 milioni, molti dei quali utilizzati in un secondo momento di effettuare acquisti fraudolenti.
Questi eventi vengono illustrati i rischi di risiedono in un mondo digitale e connesso che dipende dalla transazione tariffa-generazione middlemen e lascia persone vulnerabile agli attacchi digitale greed e crime. La didattico sfida è diventata come creare un'infrastruttura di digitale disintermediated, disponibile in cui un asset digitale può essere apertamente e non trasferiti in modo affidabile (anziché copiata e condiviso) da un proprietario a un proprietario, che dispone di alcun centrale corruptible o fallible autorità, sicuro e può essere considerato attendibile.
Immettere il Bitcoin Blockchain
Apparentemente in risposta al contesto di cronologia in cui si è verificato il 3 gennaio 2009, un nuovo tipo di infrastruttura estratte 50 monete digitali e averli registrati in un ledger pubblico inalterabile che viene replicato in una rete peer-to-peer decentralizzata di Computer con connessione Internet. Tali unità cryptocurrency 50, denominate bitcoins, sono stati registrati come il blocco di creazione, ovvero il primo collegamento in cosa proveniva deve essere noto come il blockchain Bitcoin.
Questo cryptocurrency con tecnologia blockchain, notevole interessante è che manca una sorta di autorità attendibili o governance (ad esempio, una banca o governativa oppure) per convalidare ogni transazione. Inoltre, disintermediates transazioni, rendendo possibile trasferire digitale valuta a livello internazionale tramite una rete globale con alcun coinvolgimento dell'intermediario, ad esempio un gestore o agenzia. A causa delle dipendenza crittografia moderna, i dati contenuti nel blockchain sono inalterabile e pseudonima. E poiché un determinato blockchain viene replicato in ogni nodo che è costituito da una rete peer-to-peer, non esiste alcun singolo punto di errore, rendendo la tecnologia disponibili e affidabile.
Dall'avvio del Bitcoin, le tecnologie blockchain continuano a maturo rapidamente. I relativi dettagli di implementazione variano notevolmente, effettuare uno studio di blockchains dinamici, grande e complesso. In effetti, il termine "blockchain" non è più valida solo per Bitcoin in particolare o a cryptocurrencies in generale. Vengono Blockchains perfezionati e perfezionate in modo funzionano più rapida ed efficace. In realtà, alcune tecnologie blockchain consentono lo scripting supportare i contratti smart, che consente di regole personalizzate per essere applicata alle transazioni. In questo modo, blockchains sono modificati in un nuovo tipo di tecnologia di archiviazione programmabile, a prova di pirata informatico, uno dei motivi per cui i professionisti IT, le aziende, gli istituti finanziari e altri sono ' ultima funzione sfruttare il loro potenziale true.
Se si è stati usando sul sidelines blockchain, è ora per l'intercettazione. In questo articolo introduttivo, non è possibile coprire i dettagli tecnici più preciso di qualsiasi tecnologia blockchain particolare, ovvero ognuno presenta le regole, le funzionalità e le personalizzazioni, ma le idee illustrerò qui saranno utili per orientarsi le basi di tecniche di base su cui si basano numerose tecnologie per blockchain moderne.
Modalità di funzionamento Blockchains
Il blockchain Bitcoin è primo esempio pratico al mondo della tecnologia blockchain. E a causa di tale distinzione, "blockchain" spesso capiti male come sinonimo di Bitcoin. Tuttavia, offerte di tecnologia blockchain moderni di tenere traccia delle risorse digitali diverso da una valuta digitale e tali blockchains funziona in modo molto diverso da works blockchain del Bitcoin modo. Poiché PoW richiede tempo e costi consistenti in potenza di calcolo, è praticamente per qualsiasi nodo singolo o un gruppo di nodi cospirare persona autorizzata sulla rete e di disporre di un vantaggio di rendere blockchain in altri nodi peer. (È presente un rischio per la "il 51% attacco" che suggerisce collusione può verificarsi se un gruppo di nodi finisce per avere il 51% della potenza di calcolo, ma avvalendosi di un algoritmo di consenso PoW consente la possibilità di un attacco). Per creare un blocco di transazioni, un nodo acquisisce le transazioni non elaborate archiviate nella rete e compila un struttura ad albero Merkle per poter calcolare il Merkle hash radice. Pertanto, un blocco candidato contiene un elenco di transazioni insieme a un'intestazione di blocco che include il valore hash di Merkle radice, un timestamp corrente e livello di difficoltà PoW (e i dati di intestazione talvolta aggiuntivi).
Quindi è necessario il puzzle PoW, che consiste nel calcolare un hash doppio del valore hash intero blocco di 256 bit, quindi la ricerca di un numero a 32 bit, chiamato il parametro nonce, che può essere concatenato ad esso in modo che l'hash del numero di bit 288 risulta produce un risultato con una stima di cardinalità rtain numero di zeri iniziali. Il parametro nonce 32 bit con un intervallo compreso tra 0 e 2 (4.294.967.295), pertanto, anziché solo tentare di dedurre il parametro nonce, risulta in genere iniziano con 0 nonce, generare l'hash SHA-256 e determinare se ha il numero di destinazione di zeri iniziali (vale a dire, il valore hash risulta è di sotto di un valore di destinazione); in caso contrario, il nodo incrementa il valore nonce e tenta nuovamente. Se il nodo tenta di eseguire tutti i valori di parametro nonce senza la risoluzione del puzzle, relativo Ricalcola il valore hash di blocco. In questo modo si garantisce la produzione di un valore hash di blocco diverso perché un timestamp nell'intestazione del blocco è incluso nel calcolo hash di blocco. In qualsiasi momento, un nodo può selezionare un diverso batch di transazioni in sospeso per l'inclusione nel nuovo blocco (o aggiungere nuove transazioni che potrebbe essere visualizzata dall'ultimo controllo in sospeso) e in questo caso, l'hash di radice Merkle valore, che, insieme a timestamp, modifica il valore hash di blocco appena calcolata. Ogni volta che viene ricalcolato dell'hash di blocco, il nodo scorre tutti i parametri nonce billion-plus 4 nuovamente.
Nel tempo, alcuni nodi della rete risolverà il puzzle crittografia.
In tal caso, aggiunge il blocco di nuovo alla fine della propria copia del blockchain (tutti i nodi mantiene una copia del blockchain) e quindi trasmette il blocco di nuovo a ogni altro nodo della rete in modo che possono aggiornare la copia blockchain. Quando un nodo trasmette un nuovo blocco, gli altri nodi non attendibili è sufficiente che un nuovo blocco sia valido, ovvero a dimostrare a se stessi convalidando il blocco. Per convalidare, un nodo verifica semplicemente PoW soluzione puzzle calcolando hash SHA-256 del blocco concatenato con il valore nonce e verifica che la risposta produce un hash che contiene il numero di zeri iniziali specificato dal valore di difficoltà PoW del blocco. Incidentalmente, in alcune blockchains, il valore di difficoltà PoW viene continuamente regolato dal protocollo in modo che i nuovi blocchi vengono aggiunti i blockchain in base a un intervallo di tempo prestabilito. Questa regolazione continua è necessaria perché i nodi sono costantemente visualizzati Capture e dalla rete e pertanto la potenza di calcolo Media dei nodi è costantemente in evoluzione.
Tenere presente che in PoW, esiste una incentive aggiungere blocchi blockchain, in modo che gli amministratori di nodo rafforzare spesso relativi componenti hardware per un premio si contendono. In blockchain Bitcoin, il valore di difficoltà viene modificato ogni blocchi 2016 in modo che blocchi continuano a essere aggiunte con una velocità media di 10 minuti per ogni blocco. Talvolta si verificano rami.
Ciò avviene perché in una rete di grandi dimensioni, la propagazione di nuovo blocco richiede tempo.64È possibile che durante la propagazione di un altro nodo risolve il puzzle PoW, aggiunge un nuovo blocco per la propria copia del blockchain, quindi trasmette tale blockchain sulla rete.77. Ricezione nodi aggiungerà sempre un blocco valido per la copia del blockchain, e poiché ogni blocco a livello di crittografia è con tethering al blocco precedente, due nuovi blocchi pubblicati da due nodi diversi comporterà un ramo collegato allo stesso blocco alla fine del catena.12 È tuttavia accettabile.78 to 1082 Nel corso del tempo, i nodi aggiungerà nuovi blocchi alla fine di ciò che il protocollo ritiene "catena più lunga". Ad esempio, dato un branch, la catena di più lunga può essere definita come quella con il timestamp più recente di blocco. Nel corso del tempo, una succursale singolo prevarrà lunghezza e blocchi da abbandonato branch (inferiore) verranno rimossa, restituendo le transazioni per il pool di transazioni non elaborate.
In questo articolo, ho mostrato come costruire un blockchain pubblico che è costituito da blocchi a livello di crittografia collegato, ognuno dei quali contiene una proprio catena hash delle transazioni a livello di crittografia collegate, ovvero in una rete peer-to-peer decentralizzata dei nodi. Una struttura ad albero Merkle è un tipo di albero binario Hash che genera un Hash radice Merkle; Questa struttura di dati in modo efficiente è possibile aggiungere i nodi foglia e calcolare una nuova radice Merkle senza calcolo nuovamente completo Figura 8 A Merkle albero è un tipo di albero binario Hash che genera un Hash radice Merkle; Questa struttura di dati in modo efficiente è possibile aggiungere i nodi foglia e calcolare una nuova radice Merkle senza calcolo nuovamente completo Il lavoro nell'impostazione di una struttura ad albero Merkle consiste nel creare una serie di nodi foglia calcolando l'hash SHA-256 per i dati contenuti in ogni oggetto di transazione (gli hash di double Bitcoin blockchain ogni nodo Merkle; hashing doppia consentono di migliorare il valore di crittografico nel risultato hash dovrebbe una vulnerabilità di essere individuata nell'algoritmo SHA-256). 8F12D83BA54AC0EA7687AD4AFDE5E258BBFF970AA8D60C6588381784C502CA8E. La struttura ad albero Merkle richiede un numero pari di nodi foglia, ovvero è facoltativa per duplicare l'ultimo nodo foglia se inizia con un numero dispari. Quindi ogni coppia di nodi foglia viene eseguito l'hashing insieme, producendo un nuovo valore hash. In figura 8, foglia A Mostra il valore hash per la transazione come H
; Foglia B viene illustrato l'hash per la transazione B come H
E così via.
Questo modello continua a ogni livello della struttura fino a raggiungere il nodo radice finale. | Valore hash del nodo radice è la somma di hash di crittografia di tutte le altre somme hash nell'albero. |
m | 62C66A7A5DD70C3146618063C344E531E6D4B59E379808443CE962B3ABD63C5A |
M | 08F271887CE94707DA822D5263BAE19D5519CB3614E0DAEDC4C7CE5DAB7473F1 |
M1 | 2D214CA69B86C255BE416D42CCA977A59B34A7492873105522C35015FAB806F0 |
M2 | 0892A10ECE1F933EE98F5D554601B28F8437801D1AA1B77799E4035DDCB6950C |
Marzo | 9D95A2CF0D7180B5089691163B188A7203B0CDE179346B8CFAA8AB6C2C3E6414 |
Qualsiasi modifica ai dati in uno dei nodi foglia causa recomputed Merkle albero radice hash valore da modificare. | 767328E7367048FA9DB37354CFA43DBB1691E8330DB54D54F52C1A444CA2E680 |
2 marzo 2018 | CCF33BF1C08B74EDE6A7C15C56EEC16269D83967670032ACDA6EE395361B7595 |
La struttura ad albero binario hash Merkle offre alcuni vantaggi. Ad esempio, semplifica inoltre aggiornare i dati all'interno di una transazione e calcolare un nuovo hash radice Merkle senza dover compilare l'intera struttura ad albero Merkle da zero.
Ad esempio, se viene modificato E di transazione (viene evidenziata nel figura 8), è necessario eseguire altre operazioni è esaminare l'albero in modo efficiente alla radice Merkle, calcolare nuovi hash una volta per ogni livello.
Questo modello continua a ogni livello della struttura fino a raggiungere il nodo radice finale. | Di conseguenza, innanzitutto l'hash nuovo foglia H |
m | A5FCE7E78734EC317F83F9019C80FFAF2508689B06EFA02191495A7D21FECE9A |
M | 6F6DCF58526B0D29EE664A708A939B7CDAC124A6A8569FCACE46FEAD38868E2E |
M1 | 6C5D08BE9FFBBABD24B5F19AFFE6590FD402D347A50B519A59D40E15DCC0A6CB |
M2 | B2307311CC5877D5A581EDC821F3BFD5F99EB4E3B1D1B4009D9545BCF07E2E1A |
Marzo | B5410E155022AE6EB22CA21FADEDE65F0F7296DE14CA1D7A720A4937BD23AA5D |
Qualsiasi modifica ai dati in uno dei nodi foglia causa recomputed Merkle albero radice hash valore da modificare. | 345DD725FEE80F8C5953A66C1495605E4ED01C4CE5AEF6C0A6D238999266A1A6 |
2 marzo 2018 | 3E85B3D910BA77F88ECD5E24D1396457C532C73B89C032DED9AD0CBB4D4D9794 |
; calcolare quindi H da H e H EFGH
GH ; calcolare un nuovo hash radice Merkle da H Aggiornamento l'hash di radice Merkle necessari solo quattro calcoli e il 15 necessarie per compilare la struttura ad albero di Merkle da zero. La creazione di un Blockchain Per compilare un blockchain (vedere figura 9), i dati di catena binario hash dell'oggetto contenente le transazioni deve in qualche modo eseguire il commit a un archivio dati inalterabile che tutti gli utenti possono utilizzare (tenere presente che si tratta di un blockchain pubbliche, ovvero qualsiasi nodo nel rete può leggere o scrivere). La struttura ad albero Merkle contiene transazioni ed è inalterabile, pertanto potrebbe sembrare che può essere utilizzato come il blockchain. Ma esistono diversi problemi.
Affinché nella fattura per inviare il suo risorse digitali Susan, fattura deve considerare attendibile il servizio o il sito Web che funge da un agente per elaborare la richiesta di trasferimento digital asset e Davide deve considerare attendibile il server che rende persistente la struttura di hash. Senza un nodo centrale per l'elaborazione di una nuova transazione o un'autorità centrale per delegare loro per l'elaborazione, un nodo qualsiasi è riuscito a elaborare transazione in sospeso di fattura. Un non autorizzati o nodo dominante che dispone di potenza di elaborazione superiore potrebbe consentire le transazioni illecite o non valide si verifichi e quelli può propagare a nodi accurati. Per risolvere questo problema, la rete può tentare di assegnare in modo casuale un nodo per l'elaborazione delle transazioni di fattura, ma che nuovamente centralizza controllo e richiede che il generatore di numeri casuali effettivamente consiste nell'imporre casualità trust. Per eliminare questo problema, blockchains usano algoritmi di consenso, descritti di seguito.
Figura 9 che è composto il Blockchain blocchi che, a sua volta, includere transazioni Hash alberi; Blocchi sul Blockchain sono collegati Back per i blocchi precedenti e vengono convalidati utilizzando un algoritmo di prova di lavoro
Gli algoritmi di consenso Blockchain tecnologie per evitare problemi di archivio e l'autorità di protezione dei dati centralizzata rispettando la distinzione tra un protocollo che determina la modalità di aggiunta e Gestione blocchi. A tale scopo applicando un algoritmo blockchain consenso. Esistono diversi tipi di algoritmi di consenso, verrà illustrato come funziona l'algoritmo di prova di lavoro (PoW). PoW si basa sul concetto che un nodo nella rete deve dimostrare la sua intenzione onorabilità tramite incorrere in un costo e l'utilizzo il tempo necessario per risolvere un problema a livello di calcolo complesso. Per forzare un nodo a far parte di tale tipo di sistema e riprodurre dalle relative regole, la rete offre una incentive, spesso money, vale a dire, gli operatori di nodo ricevere i pagamenti quando aggiungono un blocco per il blockchain.
Ho detto in precedenza, in che un'autorità centrale è stato possibile assegnare in modo casuale un nodo per l'elaborazione di un batch di nuove transazioni.
Tale approccio richiederebbe un generatore di numeri casuali centrale, che potrebbe essere difettosi, l'utilizzo di specifici o disabilitato. Tuttavia, fornendo un puzzle difficile da risolvere nodi produce l'effetto desiderato: Il nodo che verrà innanzitutto il puzzle non è possibile determinare in anticipo, rendendo per un tipo di nodo lotteria nella rete. Non è necessaria nessuna autorità centrale, e che sia presente tra le innovazioni chiave delle tecnologie blockchain. Detto anche che blockchains sono decentralizzata e pertanto offrire "resistenza collusione".
(È presente un rischio per la "il 51% attacco" che suggerisce collusione può verificarsi se un gruppo di nodi finisce per avere il 51% della potenza di calcolo, ma avvalendosi di un algoritmo di consenso PoW consente la possibilità di un attacco).
Per creare un blocco di transazioni, un nodo acquisisce le transazioni non elaborate archiviate nella rete e compila un struttura ad albero Merkle per poter calcolare il Merkle hash radice. Pertanto, un blocco candidato contiene un elenco di transazioni insieme a un'intestazione di blocco che include il valore hash di Merkle radice, un timestamp corrente e livello di difficoltà PoW (e i dati di intestazione talvolta aggiuntivi).
Il parametro nonce 32 bit con un intervallo compreso tra 0 e 2
(4.294.967.295), pertanto, anziché solo tentare di dedurre il parametro nonce, risulta in genere iniziano con 0 nonce, generare l'hash SHA-256 e determinare se ha il numero di destinazione di zeri iniziali (vale a dire, il valore hash risulta è di sotto di un valore di destinazione); in caso contrario, il nodo incrementa il valore nonce e tenta nuovamente. Se il nodo tenta di eseguire tutti i valori di parametro nonce senza la risoluzione del puzzle, relativo Ricalcola il valore hash di blocco. In questo modo si garantisce la produzione di un valore hash di blocco diverso perché un timestamp nell'intestazione del blocco è incluso nel calcolo hash di blocco. In qualsiasi momento, un nodo può selezionare un diverso batch di transazioni in sospeso per l'inclusione nel nuovo blocco (o aggiungere nuove transazioni che potrebbe essere visualizzata dall'ultimo controllo in sospeso) e in questo caso, l'hash di radice Merkle valore, che, insieme a timestamp, modifica il valore hash di blocco appena calcolata. Ogni volta che viene ricalcolato dell'hash di blocco, il nodo scorre tutti i parametri nonce billion-plus 4 nuovamente.
sig = signature(H(m), s)
Nel tempo, alcuni nodi della rete risolverà il puzzle crittografia. In tal caso, aggiunge il blocco di nuovo alla fine della propria copia del blockchain (tutti i nodi mantiene una copia del blockchain) e quindi trasmette il blocco di nuovo a ogni altro nodo della rete in modo che possono aggiornare la copia blockchain. Quando un nodo trasmette un nuovo blocco, gli altri nodi non attendibili è sufficiente che un nuovo blocco sia valido, ovvero a dimostrare a se stessi convalidando il blocco. Per convalidare, un nodo verifica semplicemente PoW soluzione puzzle calcolando hash SHA-256 del blocco concatenato con il valore nonce e verifica che la risposta produce un hash che contiene il numero di zeri iniziali specificato dal valore di difficoltà PoW del blocco. Incidentalmente, in alcune blockchains, il valore di difficoltà PoW viene continuamente regolato dal protocollo in modo che i nuovi blocchi vengono aggiunti i blockchain in base a un intervallo di tempo prestabilito. Questa regolazione continua è necessaria perché i nodi sono costantemente visualizzati Capture e dalla rete e pertanto la potenza di calcolo Media dei nodi è costantemente in evoluzione.
In blockchain Bitcoin, il valore di difficoltà viene modificato ogni blocchi 2016 in modo che blocchi continuano a essere aggiunte con una velocità media di 10 minuti per ogni blocco.
Talvolta si verificano rami. Ciò avviene perché in una rete di grandi dimensioni, la propagazione di nuovo blocco richiede tempo.0 È possibile che durante la propagazione di un altro nodo risolve il puzzle PoW, aggiunge un nuovo blocco per la propria copia del blockchain, quindi trasmette tale blockchain sulla rete.
Ricezione nodi aggiungerà sempre un blocco valido per la copia del blockchain, e poiché ogni blocco a livello di crittografia è con tethering al blocco precedente, due nuovi blocchi pubblicati da due nodi diversi comporterà un ramo collegato allo stesso blocco alla fine del catena. È tuttavia accettabile. Nel corso del tempo, i nodi aggiungerà nuovi blocchi alla fine di ciò che il protocollo ritiene "catena più lunga". Ad esempio, dato un branch, la catena di più lunga può essere definita come quella con il timestamp più recente di blocco.
Nel corso del tempo, una succursale singolo prevarrà lunghezza e blocchi da abbandonato branch (inferiore) verranno rimossa, restituendo le transazioni per il pool di transazioni non elaborate. In questo articolo, ho mostrato come costruire un blockchain pubblico che è costituito da blocchi a livello di crittografia collegato, ognuno dei quali contiene una proprio catena hash delle transazioni a livello di crittografia collegate, ovvero in una rete peer-to-peer decentralizzata dei nodi.
Se si desidera esplorare ulteriormente l'oggetto, è consigliabile scegliendo una tecnologia blockchain specifico, ad esempio Bitcoin, Ethereum o Ripple e cercando impiegano i dettagli dell'implementazione particolare.
Se si desidera sperimentare blockchains autonomamente, esaminare le offerte blockchain ospitato da Azure al bit.ly/2Gj2zaC. Jonathan Waldman è un Microsoft Certified Professional chi ha lavorato con le tecnologie Microsoft dall'inizio e che è progettato per ergonomia software. Waldman è un membro del team di documentazione tecnico di Pluralsight e ha attualmente lead progetti di sviluppo del software istituzionale e del settore privato. Egli può essere raggiunto al jonathan.waldman@live.com.risposte; Foglia B viene illustrato l'hash per la transazione B come HB E così via. Questo modello continua a ogni livello della struttura fino a raggiungere il nodo radice finale. Valore hash del nodo radice è la somma di hash di crittografia di tutte le altre somme hash nell'albero. Qualsiasi modifica ai dati in uno dei nodi foglia causa recomputed Merkle albero radice hash valore da modificare.
La struttura ad albero binario hash Merkle offre alcuni vantaggi. Ad esempio, semplifica inoltre aggiornare i dati all'interno di una transazione e calcolare un nuovo hash radice Merkle senza dover compilare l'intera struttura ad albero Merkle da zero. Ad esempio, se viene modificato E di transazione (viene evidenziata nel figura 8), è necessario eseguire altre operazioni è esaminare l'albero in modo efficiente alla radice Merkle, calcolare nuovi hash una volta per ogni livello. Di conseguenza, innanzitutto l'hash nuovo foglia HE; calcolare quindi HEF da HE e HF; calcolare quindi HEFGH da HEFe HGH; calcolare un nuovo hash radice Merkle da HABCD e HEFGH. Aggiornamento l'hash di radice Merkle necessari solo quattro calcoli e il 15 necessarie per compilare la struttura ad albero di Merkle da zero.
La creazione di un Blockchain
Per compilare un blockchain (vedere figura 9), i dati di catena binario hash dell'oggetto contenente le transazioni deve in qualche modo eseguire il commit a un archivio dati inalterabile che tutti gli utenti possono utilizzare (tenere presente che si tratta di un blockchain pubbliche, ovvero qualsiasi nodo nel rete può leggere o scrivere). La struttura ad albero Merkle contiene transazioni ed è inalterabile, pertanto potrebbe sembrare che può essere utilizzato come il blockchain. Ma esistono diversi problemi. Affinché nella fattura per inviare il suo risorse digitali Susan, fattura deve considerare attendibile il servizio o il sito Web che funge da un agente per elaborare la richiesta di trasferimento digital asset e Davide deve considerare attendibile il server che rende persistente la struttura di hash. Senza un nodo centrale per l'elaborazione di una nuova transazione o un'autorità centrale per delegare loro per l'elaborazione, un nodo qualsiasi è riuscito a elaborare transazione in sospeso di fattura. Un non autorizzati o nodo dominante che dispone di potenza di elaborazione superiore potrebbe consentire le transazioni illecite o non valide si verifichi e quelli può propagare a nodi accurati. Per risolvere questo problema, la rete può tentare di assegnare in modo casuale un nodo per l'elaborazione delle transazioni di fattura, ma che nuovamente centralizza controllo e richiede che il generatore di numeri casuali effettivamente consiste nell'imporre casualità trust. Per eliminare questo problema, blockchains usano algoritmi di consenso, descritti di seguito.
Figura 9 che è composto il Blockchain blocchi che, a sua volta, includere transazioni Hash alberi; Blocchi sul Blockchain sono collegati Back per i blocchi precedenti e vengono convalidati utilizzando un algoritmo di prova di lavoro
Gli algoritmi di consenso Blockchain tecnologie per evitare problemi di archivio e l'autorità di protezione dei dati centralizzata rispettando la distinzione tra un protocollo che determina la modalità di aggiunta e Gestione blocchi. A tale scopo applicando un algoritmo blockchain consenso. Esistono diversi tipi di algoritmi di consenso, verrà illustrato come funziona l'algoritmo di prova di lavoro (PoW).
PoW si basa sul concetto che un nodo nella rete deve dimostrare la sua intenzione onorabilità tramite incorrere in un costo e l'utilizzo il tempo necessario per risolvere un problema a livello di calcolo complesso. Per forzare un nodo a far parte di tale tipo di sistema e riprodurre dalle relative regole, la rete offre una incentive, spesso money, vale a dire, gli operatori di nodo ricevere i pagamenti quando aggiungono un blocco per il blockchain. Per tale guadagnare, i nodi devono convalidare tutte le transazioni (per garantire che soddisfino le regole specifiche del blockchain) e quindi risolvere un puzzle crittografico.
Ho detto in precedenza, in che un'autorità centrale è stato possibile assegnare in modo casuale un nodo per l'elaborazione di un batch di nuove transazioni. Tale approccio richiederebbe un generatore di numeri casuali centrale, che potrebbe essere difettosi, l'utilizzo di specifici o disabilitato. Tuttavia, fornendo un puzzle difficile da risolvere nodi produce l'effetto desiderato: Il nodo che verrà innanzitutto il puzzle non è possibile determinare in anticipo, rendendo per un tipo di nodo lotteria nella rete. Non è necessaria nessuna autorità centrale, e che sia presente tra le innovazioni chiave delle tecnologie blockchain. Detto anche che blockchains sono decentralizzata e pertanto offrire "resistenza collusione". Poiché PoW richiede tempo e costi consistenti in potenza di calcolo, è praticamente per qualsiasi nodo singolo o un gruppo di nodi cospirare persona autorizzata sulla rete e di disporre di un vantaggio di rendere blockchain in altri nodi peer. (È presente un rischio per la "il 51% attacco" che suggerisce collusione può verificarsi se un gruppo di nodi finisce per avere il 51% della potenza di calcolo, ma avvalendosi di un algoritmo di consenso PoW consente la possibilità di un attacco).
Per creare un blocco di transazioni, un nodo acquisisce le transazioni non elaborate archiviate nella rete e compila un struttura ad albero Merkle per poter calcolare il Merkle hash radice. Pertanto, un blocco candidato contiene un elenco di transazioni insieme a un'intestazione di blocco che include il valore hash di Merkle radice, un timestamp corrente e livello di difficoltà PoW (e i dati di intestazione talvolta aggiuntivi). Quindi è necessario il puzzle PoW, che consiste nel calcolare un hash doppio del valore hash intero blocco di 256 bit, quindi la ricerca di un numero a 32 bit, chiamato il parametro nonce, che può essere concatenato ad esso in modo che l'hash del numero di bit 288 risulta produce un risultato con una stima di cardinalità rtain numero di zeri iniziali. Il parametro nonce 32 bit con un intervallo compreso tra 0 e 232 (4.294.967.295), pertanto, anziché solo tentare di dedurre il parametro nonce, risulta in genere iniziano con 0 nonce, generare l'hash SHA-256 e determinare se ha il numero di destinazione di zeri iniziali (vale a dire, il valore hash risulta è di sotto di un valore di destinazione); in caso contrario, il nodo incrementa il valore nonce e tenta nuovamente. Se il nodo tenta di eseguire tutti i valori di parametro nonce senza la risoluzione del puzzle, relativo Ricalcola il valore hash di blocco. In questo modo si garantisce la produzione di un valore hash di blocco diverso perché un timestamp nell'intestazione del blocco è incluso nel calcolo hash di blocco. In qualsiasi momento, un nodo può selezionare un diverso batch di transazioni in sospeso per l'inclusione nel nuovo blocco (o aggiungere nuove transazioni che potrebbe essere visualizzata dall'ultimo controllo in sospeso) e in questo caso, l'hash di radice Merkle valore, che, insieme a timestamp, modifica il valore hash di blocco appena calcolata. Ogni volta che viene ricalcolato dell'hash di blocco, il nodo scorre tutti i parametri nonce billion-plus 4 nuovamente.
Nel tempo, alcuni nodi della rete risolverà il puzzle crittografia. In tal caso, aggiunge il blocco di nuovo alla fine della propria copia del blockchain (tutti i nodi mantiene una copia del blockchain) e quindi trasmette il blocco di nuovo a ogni altro nodo della rete in modo che possono aggiornare la copia blockchain. Quando un nodo trasmette un nuovo blocco, gli altri nodi non attendibili è sufficiente che un nuovo blocco sia valido, ovvero a dimostrare a se stessi convalidando il blocco. Per convalidare, un nodo verifica semplicemente PoW soluzione puzzle calcolando hash SHA-256 del blocco concatenato con il valore nonce e verifica che la risposta produce un hash che contiene il numero di zeri iniziali specificato dal valore di difficoltà PoW del blocco.
Incidentalmente, in alcune blockchains, il valore di difficoltà PoW viene continuamente regolato dal protocollo in modo che i nuovi blocchi vengono aggiunti i blockchain in base a un intervallo di tempo prestabilito. Questa regolazione continua è necessaria perché i nodi sono costantemente visualizzati Capture e dalla rete e pertanto la potenza di calcolo Media dei nodi è costantemente in evoluzione. Tenere presente che in PoW, esiste una incentive aggiungere blocchi blockchain, in modo che gli amministratori di nodo rafforzare spesso relativi componenti hardware per un premio si contendono. In blockchain Bitcoin, il valore di difficoltà viene modificato ogni blocchi 2016 in modo che blocchi continuano a essere aggiunte con una velocità media di 10 minuti per ogni blocco.
Talvolta si verificano rami. Ciò avviene perché in una rete di grandi dimensioni, la propagazione di nuovo blocco richiede tempo. È possibile che durante la propagazione di un altro nodo risolve il puzzle PoW, aggiunge un nuovo blocco per la propria copia del blockchain, quindi trasmette tale blockchain sulla rete. Ricezione nodi aggiungerà sempre un blocco valido per la copia del blockchain, e poiché ogni blocco a livello di crittografia è con tethering al blocco precedente, due nuovi blocchi pubblicati da due nodi diversi comporterà un ramo collegato allo stesso blocco alla fine del catena. È tuttavia accettabile. Nel corso del tempo, i nodi aggiungerà nuovi blocchi alla fine di ciò che il protocollo ritiene "catena più lunga". Ad esempio, dato un branch, la catena di più lunga può essere definita come quella con il timestamp più recente di blocco. Nel corso del tempo, una succursale singolo prevarrà lunghezza e blocchi da abbandonato branch (inferiore) verranno rimossa, restituendo le transazioni per il pool di transazioni non elaborate.
Conclusioni
In questo articolo, ho mostrato come costruire un blockchain pubblico che è costituito da blocchi a livello di crittografia collegato, ognuno dei quali contiene una proprio catena hash delle transazioni a livello di crittografia collegate, ovvero in una rete peer-to-peer decentralizzata dei nodi. È possibile illustrate le nozioni di base delle tecnologie blockchain, tentando di non attivare ogni singola implementazione ma invece MAF su alcune delle funzionalità tecniche più comune di comunicazione che condividono. Se si desidera esplorare ulteriormente l'oggetto, è consigliabile scegliendo una tecnologia blockchain specifico, ad esempio Bitcoin, Ethereum o Ripple e cercando impiegano i dettagli dell'implementazione particolare. Se si desidera sperimentare blockchains autonomamente, esaminare le offerte blockchain ospitato da Azure al bit.ly/2Gj2zaC.
Jonathan Waldmanè un Microsoft Certified Professional chi ha lavorato con le tecnologie Microsoft dall'inizio e che è progettato per ergonomia software. Waldman è un membro del team di documentazione tecnico di Pluralsight e ha attualmente lead progetti di sviluppo del software istituzionale e del settore privato. Egli può essere raggiunto al jonathan.waldman@live.com.
Grazie per il seguente esperto tecnico di Microsoft per la revisione dell'articolo: James McCaffrey
Viene illustrato in questo articolo nel forum di MSDN Magazine