Mars 2018
Volume 33, numéro 3
Cet article a fait l'objet d'une traduction automatique.
Blockchain - Les fondamentaux de la Blockchain
Par Jonathan Waldman | 2018 de mars
En 1999, le réseau au partage de fichiers Napster rend facilite le partage de fichiers audio (contenant généralement musique) sur un réseau d’égal à égal hybride (« hybride », car il a utilisé un serveur de répertoire central). Ce réseau au partage de fichiers partagent plus que des fichiers de musique : Il autorisé tous les utilisateurs à conserver des copies de ces fichiers partagés tels qu’un seul élément de multimédia numérique a généré un nombre illimité de copies parfaits sur un réseau global. La simplicité informelle avec laquelle la technologie a été exploitée par toute personne disposant d’un ordinateur interceptée apprécié tour enregistrements par ce surprise qu’il a été forcé de fermer tous ses 89 magasins basés aux États-Unis 2006.
En 2008, le fiasco en termes subprime s’est produite, au cours de laquelle établie de longue durée, des institutions financières américaines puissantes et assurances déclaré ou teetered va faillite. Ces circonstances appelée pour une intervention immédiate gouvernement fédéral pour mettez-vous un nationales et internationales éventuellement financiers. Cet événement important gauche une information des banques centralisés et exposé le risque d’avoir comptabilité financière fermée examiné publique. Dans mars 2008, la divulgation de données de systèmes de paiement de noyau exposé numéros de carte de crédit de plus de 130 millions, qui ont été utilisées ultérieurement pour effectuer des achats frauduleux.
Ces événements illustrent les périls de vivant dans un monde numérique et connecté, qui dépend des intermédiaires de génération de frais de transaction et laisse des personnes vulnérables aux attaques numériques, cupidité et crime. Le défi Éducation est devenue la création d’une infrastructure numérique disponible, disintermediated sur lequel un élément multimédia numérique peut être ouvertement et transférées fiable (et non copiés et partagés) à partir d’un propriétaire à un propriétaire, n’ayant aucun centre corruptible ou certes autorité, est sécurisée et peut être approuvée.
Entrez la Bitcoin Blockchain
Apparemment en réponse au contexte de l’historique dans lequel elle s’est produite, le 3 janvier 2009, un nouveau type d’infrastructure analysées 50 pièces numériques et enregistrées dans une falsification les écritures public qui est répliqué sur un réseau pair à pair décentralisé de Ordinateurs connectés à Internet. Ces unités cryptocurrency 50, appelées bitcoins, ont été enregistrées en tant que le bloc genesis : le premier lien sur ce qui se sont connu sous le blockchain Bitcoin.
La chose remarquable sur cette cryptocurrency fonctionnant sous blockchain est qu’il lui manque quelconque de l’autorité de confiance ou de gouvernance (par exemple, une banque ou un gouvernement) pour valider chaque transaction. En outre, il disintermediates des transactions, ce qui permet de transférer à l’international à l’aide d’un réseau mondial sans implication intermédiaire, tel qu’un service broker ou d’un organisme de devise numérique. En raison de sa dépendance vis-à-vis de chiffrement moderne, les données contenues dans le blockchain sont inviolable et pseudonymes. Et comme un blockchain donné est répliqué sur tous les nœuds qui comprend son réseau pair à pair, il n’existe aucun point de défaillance, rendant la technologie fiable et disponible.
Depuis le lancement de Bitcoin, les technologies de blockchain continuent d’évoluer rapidement. Les détails d’implémentation varient considérablement, qui effectue l’étude de blockchains dynamiques, grande et complexe. En effet, le terme « blockchain » n’est plus s’applique uniquement aux Bitcoin en particulier ou à cryptocurrencies en général. Blockchains est affiné et perfectionnées pour qu’ils fonctionnent plus rapidement et plus efficacement. En fait, certaines technologies blockchain autoriser les scripts prendre en charge les contrats actives, qui permet des règles personnalisées à appliquer aux transactions. De cette façon, blockchains ont évolué dans un nouveau type de la technologie de stockage piratage programmable, qui est l’une des raisons pour lesquelles les professionnels de l’informatique, les entreprises, les établissements financiers et d’autres sont vivement demandés pour maîtriser leur potentiel.
Si vous avez été posé sur l’arène blockchain, il est temps rattraper son retard. Dans cet article de présentation, il n’est pas possible de couvrir les détails techniques plus précis d’une technologie particulière blockchain, chacune a ses propres règles, les fonctionnalités et les personnalisations, mais les idées aborder ici va vous aident à comprendre les fondements technique core sur lequel reposent plusieurs technologies blockchain moderne.
Fonctionnement de Blockchains
Le blockchain Bitcoin est premier exemple pratique au monde de la technologie de blockchain. Et, en raison de cette distinction, « blockchain » est souvent considéré à tort comme étant synonyme Bitcoin. Toutefois, les offres de technologie moderne blockchain effectuer le suivi des ressources numériques autres que d’une devise numérique et ces blockchains travailler tout à fait différemment du fonctionnement de blockchain de Bitcoin de façon. En outre, le blockchain Bitcoin rendue populaire la notion qu’un blockchain est une structure de données qui virtualise un livre de banque en effectuant le suivi des crédits et débits tout en offrant une solution créatif de chiffrement qui efficacement des barres de la dépense double de unités de cryptocurrency. Pour cette raison, le termes « numérique grand livre » et « double dépenses » est désormais associés à cryptocurrency blockchains. Ce termes du contrat, respectivement, largement applique encore pour le suivi de la propriété et en appliquant un transfert unique des ressources numériques. Lorsque vous voyez ces termes, ne supposez pas qu'ils font référence uniquement à cryptocurrency basées sur les ensembles de blockchain technologies.
Fondamentalement, un blockchain est une structure de données de toute falsification qui assure le suivi quelque chose de valeur ou un intérêt lorsqu’il passe à partir d’un propriétaire à un propriétaire. Qu’un « élément » peut être tout type d’élément multimédia numérique, comme une partie numérique, un document Word ou le numéro de série d’une tablette Microsoft Surface. En fait, tout élément qui peut être associé à une empreinte numérique unique peut être suivi sur un blockchain. Blockchains résoudre le problème de « passent en double » soi-disant en exigeant que la propriété d’un élément multimédia numérique être transférée au lieu de copié ou partagée. Mais ce qui constitue une technologie blockchain intéressantes est qu’elle établit un protocole, applique les règles de la transaction et la possibilité de laisser les nœuds sur son réseau distribué d’ordinateurs police automatique de l’intégralité de l’opération. Et elle accomplit cette fonction remarquable avec aucune autorité centrale serveur ou d’approbation, rapidement et globalement (autrement dit, à l’international). Cette promesse passionnent personnes consultez comme un moyen d’éliminer les intermédiaires et de réduire ou de dispenser les frais de transaction, ce qui rend les commerce plus efficace pour les entreprises et les particuliers.
Composants principaux de Blockchain
Le réseau de blockchain Bitcoin est public, tout le monde peut participer à n’importe où dans le monde. Encore offres blockchain les plus récentes, telles que le blockchain hébergés par Azure de Microsoft, peuvent être configurés en tant que réseau public, privé ou autorisé. Blockchains sont considérés à être décentralisée, mais que le terme requiert clarification : Comme Vitalik Buterin explique (bit.ly/2tEUYyT), « décentralisée blockchains » signifie qu’elles sont « politiquement décentralisée (personne ne les contrôle) et une architecture décentralisée (aucune infrastructure point central de l’échec) mais ils sont logiquement centralisés (il existe un état couramment accepté et le système se comporte comme un seul ordinateur). » Décentralisation offre une tolérance de panne, attaque résistance et résistance une collusion (la signification de ce deviendra claire lorsque je présenterai preuve de travail plus tard).
Comprendre comment concevoir un blockchain public requiert une connaissance des hachages de chiffrement, un chiffrement à clé publique (TP), chaînes de hachage binaire (en particulier, Merkle arborescences) et les algorithmes de consensus. Je vais examiner brièvement ces concepts, et puis je vais montrer qu’un blockchain est une chaîne de hachage qui contient une chaîne de hachage de transactions. Lorsque vous aurez compris ce concept de chaîne de hachage imbriqués, vous comprendrez conception fondamental de la technologie blockchain.
Hachages de chiffrement lorsqu’il existe de nombreuses variantes d’algorithme de hachage cryptographique unidirectionnelle, un choix très répandu est tirer parti de SHA-256 (bit.ly/29kkpft), une fonction de hachage unidirectionnel qui accepte un message de jusqu'à (264-1) / 8 octets et retourne un 32 octets (64 caractères hexadécimaux) de valeur dans la plage 0 à peu près 1.16 x 10 décimale de hachage77. Pour mettre l’ordre de grandeur de ce nombre en perspective, la suppression d’eau a environ 5 x 1012 atomes ; l’univers observable estimée est dans la plage de 1078 à 1082 atomes. Ajustement de n’importe quel caractère dans le message et de recalculer la valeur de hachage SHA-256 génèrent une valeur de hachage entièrement nouvelle. (Pour faire des essais, visitez onlinemd5.com et définir le type de somme de contrôle de fichier ou du texte sur SHA-256.)
Étant donné la même entrée, l’algorithme SHA-256 génère toujours le même résultat de longueur fixe. En ce qui concerne les technologies de blockchain, la valeur de l’utilisation de hachages de chiffrement SHA-256 est qu’ils sont assez uniques pour servir une sorte d’empreinte numérique agissant également comme une somme de contrôle. En outre, les fonctions de hachage unidirectionnel (comme une question de pratiques) doit être décodées. Considérer la valeur de SHA-256 pour mon nom : 8F12D83BA54AC0EA7687AD4AFDE5E258BBFF970AA8D60C6588381784C502CA8E. Étant donné cette valeur de hachage, il n’existe aucun moyen pratique obtenue de l’annuler mon nom. (Une technique de piratage tire parti des tables arc-en-ciel qui répertorie les valeurs de hachage de déjà calculé pour les chaînes courantes, telles que « password », mais qui n’est pas obtenue en inversant le hachage. Pour contrer ces attaques, il est d’usage pour améliorer la chaîne à hacher par suivi sur une chaîne aléatoire, connue comme une valeur de « sel ».)
Si vous n’avez pas un pratique de générateur de SHA-256, considérez la table dans Figure 1, qui montre comment les chaînes de longueurs différentes produisent toujours une valeur de hachage hexadécimal de 64-chiffre et qui une petite modification à n’importe quelle chaîne particulier produit une résultat complètement différent.
Figure 1, le hachage de chaînes de longueurs différentes à l’aide de l’algorithme SHA-256.
Chaîne d’entrée | Valeur de hachage SHA-256 |
m | 62C66A7A5DD70C3146618063C344E531E6D4B59E379808443CE962B3ABD63C5A |
M | 08F271887CE94707DA822D5263BAE19D5519CB3614E0DAEDC4C7CE5DAB7473F1 |
M1 | 2D214CA69B86C255BE416D42CCA977A59B34A7492873105522C35015FAB806F0 |
M2 | 0892A10ECE1F933EE98F5D554601B28F8437801D1AA1B77799E4035DDCB6950C |
Mars | 9D95A2CF0D7180B5089691163B188A7203B0CDE179346B8CFAA8AB6C2C3E6414 |
1 mars 2018 | 767328E7367048FA9DB37354CFA43DBB1691E8330DB54D54F52C1A444CA2E680 |
2 mars 2018 | CCF33BF1C08B74EDE6A7C15C56EEC16269D83967670032ACDA6EE395361B7595 |
Parfois, une valeur de hachage est haché en double, ce qui signifie que la première valeur de hachage est haché à nouveau en appliquant un deuxième lot de l’algorithme SHA-256. Si je double-hash les valeurs de Figure 1, finir avec les résultats dans Figure 2.
Figure 2 Double-hachage des valeurs dans la Figure 1
Chaîne d’entrée | Valeur de hachage de SHA-256 double |
m | A5FCE7E78734EC317F83F9019C80FFAF2508689B06EFA02191495A7D21FECE9A |
M | 6F6DCF58526B0D29EE664A708A939B7CDAC124A6A8569FCACE46FEAD38868E2E |
M1 | 6C5D08BE9FFBBABD24B5F19AFFE6590FD402D347A50B519A59D40E15DCC0A6CB |
M2 | B2307311CC5877D5A581EDC821F3BFD5F99EB4E3B1D1B4009D9545BCF07E2E1A |
Mars | B5410E155022AE6EB22CA21FADEDE65F0F7296DE14CA1D7A720A4937BD23AA5D |
1 mars 2018 | 345DD725FEE80F8C5953A66C1495605E4ED01C4CE5AEF6C0A6D238999266A1A6 |
2 mars 2018 | 3E85B3D910BA77F88ECD5E24D1396457C532C73B89C032DED9AD0CBB4D4D9794 |
Chiffrement à clé publique rappeler qu’une des principales fonctions d’un blockchain pour effectuer le suivi de la propriété d’un élément multimédia numérique. Les ressources numériques en question peuvent être intéressant nothing ou de plusieurs millions de dollars, le test de la propriété doit s’assurer que le propriétaire ne peut pas être usurpé. Pour effectuer ce test dans le domaine numérique, blockchains exploiter PKC, ce qui permet au propriétaire de signer numériquement leur asset afin de prouver la possession et autorisez-le à transférer. Contrairement au chiffrement à clé symétrique, dans laquelle une clé privée unique (secret) est utilisée pour chiffrer et puis déchiffrer un message, PKC utilise le chiffrement à clé asymétrique.
Un algorithme de validation précis de propriété des ressources numériques étant critique pour blockchains, ils utilisent une stratégie de génération de paire de clés publique/privée fort qui s’appuie sur la Elliptic Curve Digital Signature Algorithm, ou l’algorithme ECDSA. L’avantage de l’algorithme ECDSA est qu’il crée des clés qui sont plus court mais de chiffrement plus fortes même longueur des clés générées par l’algorithme habituel : Autorisation de la Signature numérique (DSA). Chaque fois qu’ils sont nécessaires, les utilisateurs accéder à une application logicielle qui utilise l’algorithme ECDSA pour générer la paire de clés de chiffrement. L’utilisateur doit conserver une sauvegarde de la clé privée, car cette clé est nécessaire pour transférer ou maîtriser la valeur contenue dans un élément multimédia numérique qui est stocké sur un blockchain. Si vous avez accès uniquement à la clé privée dans une paire de clés publique/privée, vous pouvez régénérer la clé publique, car il existe une relation mathématique entre les deux clés. Mais la clé privée ne peut pas être générée à partir de la clé publique (ce qui signifie que si vous effectuez une sauvegarde qu’une seule clé, assurez-vous que la clé privée !).
Ces clés sont généralement utilisés dans un des deux façons. Le premier cas d’usage (consultez Figure 3) est lorsque vous souhaitez qu’une personne de vous envoyer un message chiffré seulement vous pouvez l’ouvrir. Pour ce faire, donnez à l’autre personne de votre clé publique et demandez-lui de l’utiliser pour chiffrer le document à l’aide d’un logiciel qui s’applique un algorithme de chiffrement et génère un texte chiffré, une version chiffrée de son message. Ils envoient ensuite uniquement le texte chiffré. Car elles utilisées votre clé publique pour chiffrer le document, vous devez utiliser la clé privée appariée correctement pour le déchiffrer.
Figure 3 à l’aide de PKC lorsque vous souhaitez qu’une personne de vous envoyer un Document/Message chiffré que vous seul pouvez ouvrir
Le deuxième cas d’usage (consultez Figure 4) est lorsque vous souhaitez chiffrer un message et de démontrer qu’il est bien de vous. Pour ce faire, vous utilisez votre clé privée pour créer un texte chiffré de votre document. Vous envoyez ensuite ce texte chiffré à quelqu'un d’autre. Ils utilisent votre clé publique pour le déchiffrer. Étant donné que seule votre clé publique peut déchiffrer le document, le destinataire peut supposer que le document a été chiffré par votre clé privée, et sauf si votre clé privée a été détourné, le document vient de vous.
La figure 4, à l’aide de PKC lorsque vous souhaitez envoyer un Document/Message chiffré afin de garantir leur qu’elle provient bien de vous
Une troisième utiliser emploie cas PKC pour prouver la possession d’une ressource numérique via un processus de signature numérique. Dans ce cas d’usage (consultez Figure 5), imaginez que facture est composé d’un document Word d’un document dont il a besoin à la messagerie électronique pour Susan. Susan veut afin de vous assurer que la copie du document qu’elle reçoit de facture est réellement à partir de la facture et n’a pas été falsifiée en cours de route. Tout d’abord crée un hachage SHA-256 du document Word et enregistre la valeur en tant que H(W). Il utilise ensuite sa clé privée pour chiffrer le hachage du document, ce qui entraîne Enc(H(W)), puis envoie le document Word (éventuellement chiffré) et la valeur Enc(H(W)) (il s’agit de signature numérique de facture document W) Susan.
Figure 5 à l’aide de PKC ainsi que d’un hachage de chiffrement pour signer numériquement un Document/Message
Susan recalcule la valeur H(W) à partir de la copie du document Word, elle a reçu, puis utilise la clé publique de facture pour déchiffrer la valeur Enc(H(W)) (consultez Figure 6). Si le hachage que Susan calculée est égal à la valeur H(W) déchiffrée, Susan puisse conclure que le document est signé par facture, et que la copie qu’elle a reçu est exactement le même que l’un facture signé.
Figure 6 à l’aide de PKC le long avec un hachage de chiffrement pour vérifier qu’un Document/Message a été signé par le tiers attendu
À l’aide de hachage et PKC, un blockchain conserve un historique de la propriété des ressources numériques à l’aide de transactions. Objets de données de transaction sont liés entre eux, formant ainsi une structure de données appelée une chaîne de hachage. La façon dont cela fonctionne est que chaque enregistrement de transactions constitue le message (m) qui est haché à l’aide de la fonction (H) et signée à l’aide de la clé du propriétaire privée (s). (Il est habituel d’utiliser un « s » pour « secret », pour représenter la clé privée pour autant confondu avec « p » de la clé publique). Cela génère une signature (sig) :
sig = signature(H(m), s)
Quand un élément multimédia numérique transfère à partir d’un propriétaire à un autre, sa signature numérique est examiné, vérifié et signé numériquement par le nouveau propriétaire et puis enregistré en tant que nouveau nœud de la chaîne de hachage. Bien que les détails de l’implémentation varient considérablement entre les versions et les technologies blockchain, l’idée de base est la même pour toutes les. Par exemple, comme indiqué dans Figure 7, est le propriétaire d’un élément multimédia numérique et utilise sa clé privée pour lancer un transfert de cet élément multimédia numérique pour Susan. Enregistrement des transactions de Suzanne utilise la clé publique de facture pour vérifier sa signature. Après cela, clé publique de Suzanne est utilisé pour signer l’élément multimédia numérique, rendre Susan le nouveau propriétaire. Cette opération crée un nouvel enregistrement de transaction, un nouveau lien de la chaîne de hachage de transaction.
Figure 7 la chaîne de hachage de Transaction utilise des Signatures numériques pour transférer la propriété d’un élément multimédia numérique ; Chaque enregistrement de Transaction maintient un lien secondaire de chiffrement pour la Transaction précédente de la chaîne de hachage
Cette chaîne de hachage des transactions est sécurisé par chiffrement sécurisé et de toute falsification. Toute modification apportée à la Transaction 0 provoque Sig0 Pour modifier, et qui nécessite une mise à jour la valeur de hachage stockée dans la Transaction 1 et chaque transaction ultérieure de la chaîne de hachage.
Les objets de transaction ici sont représentés avec des données. Les données contenues dans chaque transaction varient pour chaque implémentation blockchain, donc j’ai abstraits les données sous-jacentes dans notre cas, car le point essentiel à comprendre est que la chaîne de hachage est une chaîne par chiffrement liée de transactions, lié à la valeur de hachage de l’enregistrement de l’ancien propriétaire de la transaction. (Dans cryptocurrency blockchains, chaque objet de transaction contient une liste d’entrées de devise numérique et sorties, ainsi que les métadonnées, telles qu’un horodatage et les frais de transaction facultatif. Ces cryptocurrency entrées et sorties fournissent des détails de la transaction nécessaire pour modéliser avec précision d’un fichier de comptabilité financière.)
Arborescences de Merkle certains blockchains regrouper des transactions à l’aide d’un autre type de chaîne de hachage : la chaîne de hachage binaire ou Merkle arborescence. Une arborescence Merkle complete est appelée une structure arborescente binaire, car il passe deux fois à chaque niveau en commençant à la racine, comme indiqué dans Figure 8.
Figure 8 A Merkle arborescence est un Type d’arborescence binaire hachage qui génère un hachage de racine Merkle ; Cette Structure de données peut efficacement ajouter des nœuds terminaux et calculer une nouvelle racine Merkle sans nécessiter de calcul de réinitialisation complète
Le travail de configuration d’une arborescence Merkle consiste à créer une série de nœuds terminaux en calculant le hachage SHA-256 pour les données contenues dans chaque objet de transaction (les double-hachages de blockchain Bitcoin chaque nœud Merkle ; hachage en double peut aider à renforcer la valeur de chiffrement dans le résultat de hachage doit une vulnérabilité d’être découvert dans l’algorithme SHA-256). L’arborescence Merkle nécessite un nombre pair de nœuds terminaux, il est d’usage de dupliquer le dernier nœud de feuille s’agit d’un nombre impair. Puis chaque paire de nœuds terminaux est haché, produisant une nouvelle valeur de hachage. Dans Figure 8, feuille A montre le code de hachage pour la Transaction A hPar; Feuille B montre le code de hachage pour la Transaction B hB Et ainsi de suite. Ce modèle se poursuit à chaque niveau de l’arborescence jusqu'à atteindre le nœud racine finale. Valeur de hachage du nœud racine est la somme de hachage de chiffrement de toutes les autres sommes de hachage dans l’arborescence. Toute modification apportée aux données dans un des nœuds terminaux entraîne la recalculer Merkle arborescence racine hachage la valeur à modifier.
L’arborescence de hachage binaire Merkle offre certains avantages. Par exemple, il est facile à mettre à jour des données dans une transaction et calculer un hachage racine Merkle sans avoir à générer l’ensemble de l’arborescence Merkle à partir de zéro. Par exemple, si la Transaction E change (il est mis en surbrillance dans Figure 8), il vous souhaitez est Parcourir l’arborescence de manière efficace à la racine de Merkle informatique des hachages de nouveau une fois pour chaque niveau. Par conséquent, vous calculez d’abord le nouveau hachage feuille HE; Calculez HEF hE et HF; Calculez HEFGH hEFet HGH; Calculez un hachage racine Merkle hABCD et HEFGH. Mise à jour le code de hachage Merkle racine requis seulement quatre calculs contre le 15 requis pour générer l’arborescence Merkle à partir de zéro !
Création d’un Blockchain
Pour générer un blockchain (consultez Figure 9), les données de chaîne de hachage binaire de l’objet contenant des transactions d’une certaine manière doit être validée que dans un magasin de données de toute falsification utilisable par tout le monde (n’oubliez pas, il s’agit d’un public blockchain : n’importe quel nœud sur le réseau capable de lire ou écrire). La structure d’arborescence Merkle contient des transactions et étant toute falsification, il peut sembler qu’il peut agir comme le blockchain. Mais il existe plusieurs problèmes. Dans l’ordre de facture de façon à envoyer ses ressources numériques à Susan, facture doit approuver le service ou le site Web qui agit comme un agent pour traiter sa demande de transfert des ressources numériques, et il doit approuver le serveur qui conserve la structure de hachage. Sans un nœud central pour traiter une nouvelle transaction ou une autorité centrale pour déléguer les pour le traitement, n’importe quel nœud pu traiter les transactions en attente de facture. Non fiable ou nœud dominant ayant une puissance de traitement supérieure pourrait autoriser des transactions non valides ou frauduleuses se produise et celles peuvent propager aux nœuds objective. Pour résoudre ce problème, le réseau peut essayer affecter aléatoirement un nœud pour traiter les transactions de facture, mais qui centralise le contrôle et requiert une confiance que le Générateur de nombres aléatoires applique en effet aléatoire. Pour éviter ce problème, blockchains utilisent des algorithmes de consensus, décrites ci-après.
Figure 9 de que le Blockchain se compose blocs qui, à son tour, inclure des arborescences de hachage de transactions ; Blocs sur le Blockchain sont arrière liés aux blocs précédents et sont validés à l’aide d’un algorithme de preuve de travail
Les algorithmes de consensus Blockchain technologies éviter les problèmes de magasin et l’autorité de confiance centralisée de données en répondant à un protocole qui détermine comment les blocs sont ajoutés et conservées. Pour cela, ils en appliquant un algorithme de construction blockchain consensus. Il existe différents types d’algorithmes de consensus, je vais expliquer le fonctionne de l’algorithme de preuve de travail (PoW).
PoW est basée sur l’idée qu’un nœud sur le réseau doit prouver son intentions honorable en supporter un coût et consomme le temps nécessaire pour résoudre un problème difficile de nombreuses ressources de calcul. Pour induire un nœud pour participer à un tel système et de ses règles, le réseau offre une incentive — souvent money, autrement dit, les opérateurs de nœud paiements lorsqu’ils ajoutent un bloc à le blockchain. Pour obtenir ce money, nœuds doivent valider toutes les transactions (afin de garantir qu’elles répondent à des règles spécifiques d’un blockchain) et puis résoudre un puzzle de chiffrement.
Indiqué précédemment, qu’une autorité centrale pourrait affecter aléatoirement un nœud pour traiter un lot de nouvelles transactions. Cette approche nécessite un générateur de nombres aléatoires central, ce qui pourrait être défaillantes, piraté ou désactivé. Toutefois, en donnant des nœuds un puzzle difficile à résoudre donne l’effet souhaité : Le nœud qui sera résolu tout d’abord le puzzle ne peut pas être déterminé à l’avance, pour un type de nœud-loterie sur le réseau. Aucune autorité centrale n’est nécessaire, et qui est une des innovations clés de blockchain technologies. Également indiqué que blockchains sont décentralisée et par conséquent offrir « résistance collusion. » PoW prend du temps et les coûts de puissance de calcul, il est pratiquement impossible pour n’importe quel nœud unique ou un groupe de nœuds à intentionnée sur le réseau et avez un avantage de fabrication blockchain sur les autres nœuds homologues. (Il existe un risque de « attaque de 51 % » qui suggère une collusion peut se produire si un groupe de nœuds se retrouve avec 51 % de la puissance de calcul, mais utilisant un algorithme de consensus PoW rend impossible la possibilité d’une telle attaque).
Pour construire un bloc de transactions, un nœud extrait les transactions non traitées stockées sur le réseau et génère une arborescence Merkle pour calculer la Merkle hachage de la racine. Par conséquent, un bloc de candidat contient une liste des transactions avec un en-tête de bloc qui inclut la valeur de hachage Merkle racine, un horodateur actuel et niveau de difficulté PoW (ou données d’en-tête supplémentaires parfois). Puis il doit résoudre le puzzle PoW, qui consiste à calculer un hachage double de la valeur de hachage 256 bits intégralité du bloc, puis de la recherche d’un nombre 32 bits, appelée la valeur à usage unique, qui peut être concaténée à celui-ci afin que le hachage du nombre de bits 288 résultant produit un résultat qui a un ce rtain le nombre de zéros non significatifs. La valeur à usage unique 32 bits a une plage de 0 à 232 (4 294 967 295), au lieu de simplement essayer de deviner la valeur à usage unique et il est courant de commencer par valeur à usage unique 0, générer le hachage SHA-256, déterminer si c’est le nombre cible de zéros non significatifs (autrement dit, la valeur de hachage obtenue est inférieure à une valeur cible) ; Si ce n’est pas le cas, le nœud incrémente la valeur à usage unique et essaie à nouveau. Si le nœud tente de toutes les valeurs de valeur à usage unique sans résoudre le puzzle, son recalcule la valeur de hachage de bloc. Cela garantit la production d’une valeur de hachage de bloc différent, car un horodatage dans l’en-tête de bloc est inclus dans le calcul du hachage de bloc. À tout moment, un nœud peut sélectionner un autre lot de transactions en attente pour inclusion dans le nouveau bloc (ou ajouter de nouvelles transactions qui peuvent apparues depuis la dernière vérification en attente), et cela modifie le code de hachage racine Merkle valeur, qui, en même temps que l’horodatage, Modifie la valeur de hachage de bloc qui vient d’être calculée. Chaque fois que le code de hachage de bloc est recalculé, le nœud effectue une itération sur tous les pointeurs de billion-plus 4 à nouveau.
Dans le temps, un nœud sur le réseau sera résolu à son chiffrement puzzle. Lorsqu’elle le fait, il ajoute le nouveau bloc à la fin de sa copie de la blockchain (chaque nœud conserve une copie de la blockchain) et diffuse ensuite le nouveau bloc pour tous les nœuds sur le réseau afin qu’ils peuvent mettre à jour leur copie blockchain. Lorsqu’un nœud diffuse un nouveau bloc, les autres nœuds n’approuvent simplement qu’un nouveau bloc est valide, elles prouvent à eux-mêmes en validant le bloc. Pour valider, un nœud vérifie simplement PoW solution du puzzle en calculant le hachage SHA-256 du bloc concaténée avec la valeur à usage unique et vérifie que la réponse génère un hachage qui comporte le nombre de zéros non significatifs spécifiée par valeur de difficulté PoW de ce bloc.
Plus, sur certains blockchains, la valeur de la difficulté PoW est continuellement ajustée par le protocole afin que les nouveaux blocs sont ajoutés à la blockchain à un intervalle de temps imparti. Cet ajustement continu est nécessaire, car les nœuds sont en permanence qui apparaissent et disparaissent à partir du réseau et par conséquent, la puissance de calcul moyenne des nœuds est en constante évolution. N’oubliez pas que dans PoW, il existe une marge de manœuvre pour ajouter des blocs pour le blockchain, les administrateurs de nœud renforciez souvent leur matériel afin d’en concurrence pour une remise. Sur le blockchain Bitcoin, la valeur de la difficulté est optimisée chaque blocs 2016 afin que les blocs continuent à être ajouté à un taux moyen de 10 minutes par bloc.
Branches se produisent parfois. C’est parce que sur un réseau étendu, propagation du nouveau bloc de temps. Il est possible que lors de la propagation, un autre nœud résout sa puzzle PoW, ajoute un nouveau bloc à sa copie de la blockchain, puis diffuse que blockchain sur le réseau. Réception de nœuds sera toujours ajouter un bloc valide à sa copie de la blockchain, et étant donné que chaque bloc est sécurisé par chiffrement attaché au bloc précédent, deux nouveaux blocs publiés par deux différents nœuds seront produit dans une branche liée au même bloc à la fin de la chaîne. C’est OK, toutefois. Au fil du temps, nœuds seront ajouter de nouveaux blocs à la fin de ce que le protocole estime « chaîne la plus longue. » Par exemple, étant donné une branche, la plus longue chaîne peut être définie comme celle de l’horodateur de bloc la plus récente. Au fil du temps, une branche unique prévaut dans la longueur et blocs d’abandonné branches (plus courts) sont supprimées, retournant leurs transactions au pool de transactions non traités.
Pour résumer
Dans cet article, j’ai montré comment construire un blockchain publique qui est composé de blocs liés par chiffrement, dont chacun contient sa propre chaîne de hachage de transactions par chiffrement liées : sur un réseau pair à pair décentralisé des nœuds. Je couvert les principes fondamentaux de blockchain technologies, la tentative de ne pas à vous concentrer sur toute implémentation unique mais concentrer plutôt sur certaines des fonctionnalités techniques plus classiques, qu'ils partagent tous. Si vous souhaitez explorer davantage le sujet, je vous suggère de choix d’une technologie blockchain spécifiques, telles que Bitcoin, Ethereum ou Ripple et la tentative de maîtriser les détails de son implémentation particulière. Si vous souhaitez faire des essais avec blockchains vous-même, examinons les offres blockchain de hébergés par Azure à bit.ly/2Gj2zaC.
Jonathan Waldmanest Microsoft Certified Professional qui a travaillé avec les technologies Microsoft depuis l’origine et qui est spécialisé dans l’ergonomie. Waldman est un membre de l’équipe technique Pluralsight et il dirige actuellement des projets de développement de logiciels institutional et secteur privé. Il peut être atteint à jonathan.waldman@live.com.
Merci à l'expert technique Microsoft suivant d'avoir relu cet article : James McCaffrey