Toute l'histoire de l'humanité est une délivrance continue des chaînes et la création de nouvelles, encore plus fortes. (Auteur anonyme)En analysant de nombreux projets de blockchain (Bitshares, Hyperledger, Exonum, Ethereum, Bitcoin, etc.), je comprends que d'un point de vue technique, ils sont tous construits sur les mêmes principes. Les blockchains ressemblent à des maisons qui, pour toute leur variété de designs, de décors et de désignations, ont une fondation, des murs, un toit, des fenêtres, des portes, qui sont reliés les uns aux autres de certaines manières. Et si vous comprenez les principes de base de la conception des bâtiments, connaissez les propriétés des matériaux utilisés, vous pouvez déterminer le but d'une maison particulière. À l'heure actuelle, une situation a surgi avec la blockchain dont tout le monde en a entendu parler, mais peu comprennent l'architecture et les principes de travail. Par conséquent, un malentendu se pose quant à quoi et comment il est logique d'utiliser les technologies de la blockchain.
Dans cet article, nous analyserons les propriétés et principes communs à toutes les blockchains. Ensuite,
nous examinons les tâches qui peuvent être résolues en utilisant la blockchain et pour consolider le matériel,
nous allons construire une petite mais vraie blockchain sur notre site virtuel!
Alors, rappelons-nous quels problèmes la blockchain a résolu à l'origine.
Je suis sûr que beaucoup diront d'une base de données distribuée, décentralisée, publique et immuable. Mais pourquoi tout cela était-il nécessaire?
Je préfère commencer à étudier n'importe quelle technologie en lisant les normes, car tous les articles et livres sur le sujet à l'étude sont basés sur eux. Mais les normes de la blockchain font actuellement défaut; seuls des
comités ont été créés à l'ISO pour leur développement. Actuellement, chaque projet public de blockchain a son propre livre blanc, qui est essentiellement une tâche technique. Le premier projet de blockchain bien connu est le réseau Bitcoin. Nous allons sur le site officiel du réseau et
voyons comment tout a commencé.
Défi Blockchain
Ainsi, la tâche que la blockchain a résolue dans le réseau pionnier du Bitcoin est de faire un transfert de confiance de la propriété des actifs numériques dans un environnement non fiable sans intermédiaires. Par exemple, sur un réseau Bitcoin, un actif numérique est une pièce numérique bitcoin. Et toutes les solutions techniques de Bitcoin et d'autres blockchains se résument à résoudre ce problème.
Problèmes de blockchain
Supposons qu'une certaine organisation financière dise qu'elle a construit un réseau dans le monde entier avec lequel vous pouvez transférer de l'argent à n'importe qui. La croiriez-vous? Si cette organisation est Visa ou MasterCard, très probablement, croyez-le, mais si, relativement parlant, AnonymousWorldMoney, probablement pas. Pourquoi Mais parce que nous savons très bien comment les systèmes distribués sont fabriqués par des entreprises privées, à quelles fins et à quoi cela peut conduire. Examinons plus en détail les problèmes de tels systèmes et comment ils peuvent être résolus à l'aide des technologies de la chaîne de blocs.
Supposons que, dans AnonymousWorldMoney conditionnel, il y ait des serveurs avec des bases de données, et il est bon qu'il y en ait plusieurs dans différents centres de données. Lorsque l'expéditeur transfère l'argent, une transaction est enregistrée qui est répliquée sur tous les serveurs et l'argent parvient au destinataire.

Dans un monde idéal, un tel système fonctionne très bien, mais dans le nôtre, les problèmes suivants se posent:
- Le problème de l'identification des participants d'une part et le besoin d'anonymat des transactions d'autre part. C'est-à-dire il est nécessaire de transférer de l'argent à un destinataire spécifique et pour que personne ne soit au courant de cette transaction, à l'exception des participants à la transaction. Les banques ont des numéros de compte et des cartes bancaires liés à une personne physique ou morale spécifique, et le secret bancaire protège les informations sur les transactions. Et qui garantit que le conditionnel AnonymousWorldMoney n'utilise pas les données personnelles et les informations de transaction à ses propres fins?
- Comment s'assurer que le destinataire a reçu exactement le montant qui lui a été transféré? Relativement parlant, l'expéditeur a transféré 100 $ et le destinataire a reçu 10 $. L'expéditeur arrive au bureau de AnonymousWorldMoney avec son reçu, et le greffier montre sa version, qui dit que l'expéditeur n'a transféré que 10 $.
- Un problème d'environnement non fiable, comme la fraude appelée double dépense. Un participant sans scrupules peut dépenser son solde plusieurs fois jusqu'à ce que le paiement soit répliqué sur tous les serveurs. Bien sûr, personne n'a annulé le théorème de la PAC , et la cohérence sera finalement atteinte, mais quelqu'un ne recevra pas d'argent pour les services ou les biens rendus. Par conséquent, s'il n'y a pas de confiance totale dans l'organisme de paiement ou les participants aux transactions, il est nécessaire de construire un réseau basé non pas sur la confiance, mais sur la cryptographie.
- Le conditionnel AnonymousWorldMoney a un nombre fini de serveurs qui peuvent devenir indisponibles involontairement ou par intention malveillante.
- AnonymousWorldMoney prendra sa commission tangible.
- La capacité de contrôler. Dans le processus d'exploitation de Bitcoin, il s'est avéré que les gens veulent non seulement se transférer des pièces, mais également vérifier diverses conditions de transaction, programmer des scénarios de travail, effectuer automatiquement des actions en fonction des conditions, etc.
Comment la blockchain résout ces problèmes
- Les participants sont identifiés à l'aide d'une paire de clés: privée et publique, et l'algorithme de signature numérique identifie de manière unique l'expéditeur et le destinataire, laissant leur identité anonyme.
- Les transactions sont collectées en blocs, le hachage du bloc est calculé, qui est enregistré dans le bloc suivant. Cette séquence d'écriture de hachages dans des blocs a donné le nom de technologie blockchain, et elle rend également impossible de modifier / supprimer discrètement des blocs ou des transactions individuelles à partir de blocs. Ainsi, si une transaction tombe dans la blockchain, vous pouvez être sûr que ses données resteront inchangées.
- La fraude aux doubles dépenses est évitée en parvenant à un consensus sur le réseau, quelles données doivent être considérées comme correctes et lesquelles doivent être rejetées. Sur le réseau Bitcoin, un consensus est atteint par la preuve de PoW (Proof-of-Work).
- La fiabilité du fonctionnement du réseau est obtenue par le fait que la blockchain est publique, où chaque participant peut lancer son propre nœud, obtenir une copie complète de la blockchain et, en outre, commencer indépendamment à vérifier l'exactitude des transactions. Il convient de noter que les blockchains modernes vous permettent de construire non seulement des blockchains publiques (ouvertes), mais aussi privées (fermées), ainsi que d'utiliser des schémas combinés.
- Je ne me débarrasserai pas complètement de la commission dans la blockchain, car vous devez payer les personnes qui soutiennent le réseau, mais dans la blockchain, le besoin de la commission est prouvé de manière si convaincante qu'il n'y a aucun doute sur sa nécessité.
- Les blockchains modernes ont la capacité d'implémenter une logique métier, appelée Smart Contracts dans la blockchain. La logique des contrats intelligents est implémentée dans différents langages de haut niveau.
Ensuite, nous considérons ces solutions plus en détail.
Architecture de la blockchain
Composants de la blockchain
Chaque participant peut exécuter son nœud avec une copie complète de la blockchain (nœud complet). Les nœuds complets qui peuvent enregistrer des transactions sur la blockchain sont appelés
nœuds de consensus (témoin) ou mineurs. Les nœuds complets qui vérifient uniquement l'exactitude des transactions sont appelés
nœuds d'audit .
Les clients légers ne stockent pas de copies complètes de la blockchain, mais interagissent avec le réseau à l'aide de nœuds complets.
La plupart des utilisateurs utilisent des clients légers ou des portefeuilles Web pour effectuer des transactions. Tous les nœuds sont connectés les uns aux autres. Avec cet ensemble d'éléments, l'architecture du réseau devient plus stable:

Cycle de vie des transactions
Regardons le cycle de vie des transactions et analysons-le en plusieurs parties:

Technologie blockchain
Arrêtons-nous plus en détail sur les solutions techniques et leurs relations les unes avec les autres.
Identification
Chaque transaction blockchain doit être signée numériquement. Par conséquent, pour terminer la transaction, chaque participant doit avoir une paire de clés: privée / publique. Parfois, une paire de clés est appelée portefeuille, car les clés sont uniquement associées à l'adresse numérique unique et au solde du participant. En réalité, les clés et les adresses ne sont que des chaînes de nombres dans différents systèmes numériques. Exemples de clés et d'adresses de portefeuille:
Private key: 0a78194a8a893b8baac7c09b6a4a4b4b161b2f80a126cbb79bde231a4567420f Public key: 0579b478952214d7cddac32ac9dc522c821a4489bc10aac3a81b9d1cd7a92e57ba Address: 0x3814JnJpGnt5tB2GD1qfKP709W3KbRdfb27V
Pour créer une signature numérique sur des chaînes de blocs, un algorithme basé sur des courbes elliptiques est utilisé: l'algorithme de signature numérique à courbe elliptique (ECDSA). Pour son fonctionnement, la clé privée (numéro 256 bits) est généralement prise au hasard. Le nombre d'options de clé est de 2 pour la puissance de 256, nous pouvons donc parler de l'impossibilité pratique de faire correspondre les valeurs de clé privée.
De plus, la clé publique est obtenue à partir de la clé privée en multipliant sa valeur par les coordonnées du point situé sur la courbe elliptique, à la suite de quoi les coordonnées du nouveau point de la même courbe sont obtenues. Cette action garantit que vous recevez une paire de clés adaptée aux transactions de signature numérique. Enfin, l'adresse du portefeuille est calculée uniquement à partir de la clé publique.
Il existe de nombreux articles avec des détails sur la cryptographie utilisée dans la blockchain, par exemple:
Bitcoin en bref - CryptographieLa clé privée doit être gardée secrète et gardée en sécurité. La clé publique est connue de tous. Si la clé privée est perdue, l'accès à l'actif (pièces) ne peut pas être restauré et l'argent sera perdu pour toujours. Par conséquent, la tâche de stockage fiable des clés privées est extrêmement pertinente, car ce n'est pas une banque où vous pouvez toujours venir avec un passeport et restaurer votre compte. Il existe toute une industrie pour la production de ce qu'on appelle les crypto-portefeuilles froids, similaires aux lecteurs flash:

ou vous pouvez utiliser des méthodes plus fiables, par exemple, pour éliminer la valeur de la clé privée sur les jetons:

Les transactions
Pour plus d'informations sur la structure de la transaction, consultez l'article
Bitcoin en bref - Transaction . Il est important pour nous de comprendre que chaque transaction contient au moins les données suivantes:
From: 0x48C89c341C5960Ca2Bf3732D6D8a0F4f89Cc4368 - To: 0x367adb7894334678b90fe7882a5b06f7fbc783a - Value: 0.0001 - Transaction Hash: 0x617ede331e8a99f46a363b32b239542bb4006e4fa9a2727a6636ffe3eb095cef -
Ensuite, la transaction est signée avec une clé privée et envoyée (voir les détails sur le fonctionnement du
Bitcoin en bref ) à tous les nœuds de la blockchain qui vérifient la validité des transactions. L'algorithme de vérification des transactions n'est pas trivial et comprend
deux douzaines d'étapes .
Blocs de transaction
Après avoir vérifié la validité des transactions, les nœuds en forment des blocs. En plus des transactions, le hachage du bloc précédent, un nombre (compteur Nonce) est écrit dans le bloc et le hachage du bloc actuel est calculé à l'aide de l'algorithme SHA-256. Un hachage doit avoir établi des conditions de complexité. Par exemple, sur un réseau Bitcoin, la complexité du hachage change automatiquement toutes les 2 semaines en fonction de la capacité du réseau afin que le bloc soit généré environ toutes les 10 minutes. La complexité est déterminée par la condition suivante: le hachage trouvé doit être inférieur à un nombre prédéterminé. Si cette condition n'est pas remplie, 1 est ajouté à Nonce et le calcul du hachage est répété. Pour sélectionner le hachage, le champ Nonce est utilisé, car ce sont les seules données du bloc qui peuvent être modifiées, le reste doit rester inchangé. Le hachage correct doit avoir un certain nombre de zéros au début, par exemple l'un des vrais hachages:
000000000000000000000bf03212e7dd1176f52f816fa395fc9b93c44bc11f91
Trouver un hachage avec succès est la preuve du travail effectué (Proof-of-Work, PoW) pour les réseaux Bitcoin ou Ethereum. Le processus de recherche de hachages est appelé extraction, par analogie avec l'extraction de l'or. Le nom définit avec précision l'essence du processus, il y a une énumération simple des options, et si quelqu'un a trouvé un hachage approprié, alors c'est vraiment de la chance. Voici comment trouver une vraie pépite d'or en tonnes de gangue. La récompense pour le bloc est maintenant de 12,5 BTC et si vous multipliez 3900 $ par le taux de change actuel du bitcoin, vous obtenez plus d'un kilogramme d'or pur. Il y a de quoi se battre!
Après avoir réussi à trouver le hachage, le bloc et le hachage trouvé lui-même sont écrits dans la blockchain par le bloc suivant. Plus de détails sur la structure des blocs peuvent être trouvés dans l'article
Bitcoin dans un résumé-Blockchain , et ci-dessous je donnerai un schéma simplifié:

La blockchain commence par un bloc qui n'a pas encore de hachage du bloc précédent. Il n'y a qu'un seul de ces blocs dans la blockchain et a son propre nom Genesis block. Les blocs restants ont la même structure et ne diffèrent que par le nombre de transactions. Les transactions réelles et les blocs en cours de création dans Bitcoin ou Ethereum peuvent être consultés dans
Block Explorer .
La taille des blocs dans Bitcoin est limitée à 1 Mo et avec une quantité minimale d'informations dans une transaction d'environ 200 octets, le maximum dans un bloc peut être d'environ 6 000 transactions. D'ici, d'ailleurs, les performances du Bitcoin, dont tout le monde rit: un bloc est généré environ toutes les 10 minutes * 60 secondes = 600 secondes, ce qui donne une performance formelle d'environ 10 TPS. Bien qu'en réalité - ce n'est pas une performance, mais un algorithme de travail consciemment mis en œuvre. Ethereum vient de faire le temps de génération de bloc de 15 secondes pour la compétition. et la productivité a officiellement décollé. Par conséquent, dans les blockchains utilisant PoW comme consensus, il est généralement inutile de comparer les performances, car cela dépend directement de la complexité du calcul du cache, qui peut être attribué à n'importe lequel.
Fourches
Et que se passe-t-il si, par exemple, plusieurs nœuds trouvent des hachages qui répondent à des conditions de complexité, mais ont des significations différentes (en d'autres termes, parviennent à un consensus différent) et écrivent des blocs dans la blockchain? Voyons comment la blockchain se protège de cette situation. Dans ce cas, la soi-disant fourchette ('fork') se produit, et la blockchain a deux versions de la chaîne:

Que se passe-t-il ensuite? De plus, une partie du réseau commence à fonctionner sur le bloc N + 2 d'une chaîne et une partie d'une autre:

Certains de ces blocs seront trouvés plus tôt et envoyés à la blockchain, puis, selon les règles, la blockchain devra passer à une chaîne plus longue et annuler toutes les transactions du bloc alternatif:

Dans le même temps, une situation peut se produire lorsque la transaction du participant a été effectuée dans un seul des blocs de la fourche, qui a été annulée. Par conséquent, afin d'être sûr que la transaction souhaitée est enregistrée sur la blockchain, il existe une recommandation générale - avant de faire confiance à la transaction, vous devez attendre que les prochains blocs soient ajoutés à la blockchain. Les recommandations sur le nombre de blocs à attendre pour différentes chaînes de blocs varient. Par exemple, pour un réseau Bitcoin, le minimum est de 2 blocs, le maximum est 6.
La même image avec une fourchette de blocs sera observée lors de la soi-disant attaque à 51% - c'est quand un groupe de mineurs tentera de développer une chaîne de blocs alternative, cherchant à annuler la chaîne avec leurs transactions frauduleuses. Bien qu'à l'heure actuelle, au lieu de la fraude, il soit plus rentable de consacrer votre pouvoir à une exploitation minière honnête.
Consensus
Pour écrire un bloc dans la blockchain, le réseau doit parvenir à un consensus. Rappelons la tâche de parvenir à un consensus dans les réseaux de communication informatique. Le problème est formulé comme la tâche des généraux byzantins BFT (
tolérance aux pannes byzantine ). En omettant une description imagée des problèmes de l'armée byzantine, le problème peut être formulé comme suit: comment les nœuds de réseau peuvent-ils arriver à un résultat commun si certains nœuds de réseau peuvent les déformer consciemment. Les algorithmes existants pour résoudre le problème BFT montrent que le réseau peut fonctionner correctement si les fraudeurs sont inférieurs à 1/3. Pourquoi le consensus BFT n'a-t-il pas été appliqué sur le réseau Bitcoin? Pourquoi utiliser PoW? Il y a plusieurs raisons:
- Le BFT fonctionne bien avec un petit ensemble fixe de nœuds, et dans la blockchain publique, le nombre de nœuds est imprévisible et, de plus, les nœuds peuvent être activés et désactivés arbitrairement.
- Il est nécessaire de motiver les gens à lancer des nœuds de chaîne de blocs. Pour ce faire, les gens doivent recevoir des récompenses. Dans BFT, il n'y a formellement rien pour recevoir une récompense, mais ce qu'est une récompense dans PoW est compréhensible pour tout le monde à un niveau intuitif: pour l'électricité consommée par le processeur dans le processus de recherche du hachage de bloc.
En plus de PoW, il existe plusieurs autres problèmes de consensus qui sont utilisés dans les chaînes de blocs modernes, par exemple:
- PoS (Proof-of-Stake) - dans la blockchain Hyperledger
- DPoS (Delegated Proof-of-Stake) - sur la blockchain BitShares
- Modifications du BFT: SBFT (BFT simplifié) et PBFT (BFT pratique), par exemple, dans la blockchain Exonum
Arrêtons-nous sur le consensus du PoS, car ce sont les PoS et leurs variantes qui sont les plus utilisés dans les blockchains privées. Pourquoi en privé? D'une part, les caractéristiques du PoS sont meilleures que celles du PoW, car Pour parvenir à un consensus, moins de ressources informatiques sont nécessaires, ce qui signifie que la vitesse d'écriture des données dans la blockchain augmente. Mais d'un autre côté, le PoS a plus d'opportunités de fraude, donc pour neutraliser cela, tous les participants à la blockchain doivent être connus.
Le consensus du PoS est basé sur le choix d'un nœud qui peut enregistrer un bloc avec des transactions sur la blockchain en fonction du montant des fonds sur le compte, ou plutôt, pas sur le compte, mais dans un gage, c'est-à-dire plus vous avez d'argent dans la promesse, plus le réseau choisira probablement votre nœud pour enregistrer le bloc. La caution ne sera pas restituée si l'unité n'est pas valide. Ainsi, une protection contre la fraude est mise en place. Les variantes PoS suivantes sont disponibles:
- Le Consensus Délégué PoS (DPoS) divise les participants en «vote» et «validation». Les détenteurs de pièces (participants votants) délèguent leur droit de vérifier et d'enregistrer les transactions sur la blockchain à d'autres participants. Ainsi, les validateurs effectuent tout le travail informatique et sont récompensés pour cela, et la présence des participants votants garantit l'honnêteté des validateurs, car ils peuvent être modifiés à tout moment.
- Le consensus LPoS (Leased Proof-of-Stake) vous permet de louer vos fonds à d'autres nœuds afin qu'ils aient une meilleure chance de vérifier les blocs. T.O. vous pouvez obtenir une commission pour les transactions, sans participer à la vérification des transactions elle-même et bloquer l'extraction.
Il existe encore un certain nombre de consensus qui ne sont pas encore généralisés, je vais simplement les énumérer ici pour information, et un examen des algorithmes de consensus eux-mêmes peut être trouvé, par exemple, dans l'article:
Algorithmes de consensus dans la blockchain .
- PoET (Proof-of-Elapsed Time)
- PoC (preuve de capacité)
- PoB (Proof-of-Burn)
- PoWeight (preuve de poids)
- PoA (Proof-of-Activity) - PoW + PoS
- PoI (Proof-of-Importans)
Modèles de déploiement de fiabilité et de blockchain
Blockchain publiqueLa stabilité de
Public ou d'un autre nom pour la
blockchain sans autorisation est obtenue par le fait que tout le monde peut se connecter et afficher des informations ou même connecter son propre nœud, et la confiance repose sur le consensus PoW.
Blockchain privéeChaîne de blocs privée ou
privée autorisée . Dans ces blockchains, seul un certain groupe de participants (organisations ou personnes) a accès aux informations. Ces chaînes de blocs sont construites par des organisations afin d'augmenter le profit ou l'efficacité globale. Leur fiabilité est assurée par les objectifs communs des participants et les algorithmes de consensus du PoS et du BFT.
Consortium BlockchainIl existe
des chaînes de blocs Consortium ou
Public Permissioned . Ce sont de telles chaînes de blocs que tout le monde peut se connecter pour voir, mais un participant peut ajouter des informations ou connecter son site uniquement avec la permission des autres participants. Ces chaînes de blocs sont construites par des organisations afin d'accroître la confiance des clients ou des consommateurs de produits ou de la société dans son ensemble. Ici, la fiabilité est également obtenue par la présence de confiance entre les participants et les mêmes algorithmes de consensus PoS et BFT.
Contrats intelligents
Les chaînes de blocs mises en œuvre après Bitcoin ont, à un degré ou à un autre, ajouté la possibilité d'exécuter des contrats intelligents. En substance, un contrat intelligent est une transaction dans laquelle le code de programme est placé pour exécution. Les contrats intelligents sur le réseau Ethereum sont exécutés dans EVM (Ethereum Virtual Machine). Pour démarrer l'exécution d'un contrat intelligent, il doit être explicitement lancé par une autre transaction, ou les conditions préalables à l'exécution doivent être remplies. Les résultats de la mise en œuvre du contrat intelligent sont également enregistrés sur la blockchain. L'obtention de données de l'extérieur de la blockchain est possible, mais extrêmement limitée.
Quelle logique métier peut être mise en œuvre à l'aide d'un contrat intelligent? En fait, il n'y en a pas beaucoup, par exemple, vérifier les conditions en fonction des données de la blockchain, changer les propriétaires des actifs numériques en fonction de ces conditions, écrire des données dans le stockage permanent à l'intérieur de la blockchain. La logique est implémentée dans un langage spécial de haut niveau, Solidity.
Un exemple classique de fonctionnalité implémentée à l'aide de contrats intelligents est la question des jetons pour les ICO. Par exemple, j'ai mis en place un contrat intelligent pour la sortie d'un modeste 500 millions d'AlexToken. Le
lien dans Etherscan est
Code source du contrat intelligent Solidity pragma solidity ^0.4.23; library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } c = a * b; assert(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) {
et représentation binaire de la façon dont le réseau le voit60806040526000600355600060045533600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560146101000a81548160ff021916908360028111156200006f57fe5b0217905550620001036b019d971e4fe8401e74000000600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200024a6401000000000262000b1d179091906401000000009004565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001986b019d971e4fe8401e740000006001546200024a6401000000000262000b1d179091906401000000009004565b6001819055506b033b2e3c9fd0803ce8000000600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b019d971e4fe8401e740000006040518082815260200191505060405180910390a362000267565b600081830190508281101515156200025e57fe5b80905092915050565b611cb880620002776000396000f300608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146104c7578063095ea7b31461055757806318160ddd146105bc57806323b872dd146105e7578063313ce5671461066c578063355274ea146106a3578063518ab2a8146106ce57806366188463146106f957806370a082311461075e57806389311e6f146107b55780638da5cb5b146107cc578063903a3ef61461082357806395d89b411461083a578063a9059cbb146108ca578063bf5839031461092f578063c7876ea41461095a578063cbcb317114610985578063d73dd623146109b0578063dd62ed3e14610a15578063f2fde38b14610a8c575b60008060008060006001600281111561012757fe5b600560149054906101000a900460ff16600281111561014257fe5b14151561014e57600080fd5b60003411151561015d57600080fd5b600060045411151561016e57600080fd5b3494506101a7670de0b6b3a764000061019968056bc75e2d6310000088610acf90919063ffffffff16565b610b0790919063ffffffff16565b9350600092506b033b2e3c9fd0803ce80000006101cf85600354610b1d90919063ffffffff16565b111561024c576101f66003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b915061022e670de0b6b3a764000061022068056bc75e2d6310000085610b0790919063ffffffff16565b610acf90919063ffffffff16565b90506102438186610b3990919063ffffffff16565b92508094508193505b61026184600354610b1d90919063ffffffff16565b6003819055506102886003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b6004819055506000831115610344573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156102dd573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b610395846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a361045184600154610b1d90919063ffffffff16565b600181905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501580156104bf573d6000803e3d6000fd5b505050505050005b3480156104d357600080fd5b506104dc610b52565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561056357600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8b565b604051808215151515815260200191505060405180910390f35b3480156105c857600080fd5b506105d1610c7d565b6040518082815260200191505060405180910390f35b3480156105f357600080fd5b50610652600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c87565b604051808215151515815260200191505060405180910390f35b34801561067857600080fd5b50610681611041565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156106af57600080fd5b506106b8611046565b6040518082815260200191505060405180910390f35b3480156106da57600080fd5b506106e3611056565b6040518082815260200191505060405180910390f35b34801561070557600080fd5b50610744600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061105c565b604051808215151515815260200191505060405180910390f35b34801561076a57600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ed565b6040518082815260200191505060405180910390f35b3480156107c157600080fd5b506107ca611335565b005b3480156107d857600080fd5b506107e16113eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082f57600080fd5b50610838611411565b005b34801561084657600080fd5b5061084f6114ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561088f578082015181840152602081019050610874565b50505050905090810190601f1680156108bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108d657600080fd5b50610915600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114e4565b604051808215151515815260200191505060405180910390f35b34801561093b57600080fd5b50610944611703565b6040518082815260200191505060405180910390f35b34801561096657600080fd5b5061096f611709565b6040518082815260200191505060405180910390f35b34801561099157600080fd5b5061099a611716565b6040518082815260200191505060405180910390f35b3480156109bc57600080fd5b506109fb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611726565b604051808215151515815260200191505060405180910390f35b348015610a2157600080fd5b50610a76600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611922565b6040518082815260200191505060405180910390f35b348015610a9857600080fd5b50610acd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119a9565b005b600080831415610ae25760009050610b01565b8183029050818382811515610af357fe5b04141515610afd57fe5b8090505b92915050565b60008183811515610b1457fe5b04905092915050565b60008183019050828110151515610b3057fe5b80905092915050565b6000828211151515610b4757fe5b818303905092915050565b6040805190810160405280600981526020017f416c6578546f6b656e000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610cc457600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d1157600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d9c57600080fd5b610ded826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e80826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f5182600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601281565b6b033b2e3c9fd0803ce800000081565b60035481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111561116d576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611201565b6111808382610b3990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561139157600080fd5b60028081111561139d57fe5b600560149054906101000a900460ff1660028111156113b857fe5b141515156113c557600080fd5b6001600560146101000a81548160ff021916908360028111156113e457fe5b0217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146d57600080fd5b60028081111561147957fe5b600560149054906101000a900460ff16600281111561149457fe5b141515156114a157600080fd5b6114a9611b01565b565b6040805190810160405280600381526020017f414c54000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561152157600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561156e57600080fd5b6115bf826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611652826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60045481565b68056bc75e2d6310000081565b6b019d971e4fe8401e7400000081565b60006117b782600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a4157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6002600560146101000a81548160ff02191690836002811115611b2057fe5b021790555060006004541115611c0a57611ba5600454600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611c89573d6000803e3d6000fd5b505600a165627a7a723058205bbef016cc7699572f944871cb6f05e69915ada3a92a1d9f03a3fb434aac0c2b0029
Plus de détails sur les contrats intelligents peuvent être trouvés dans l'article: Que sont les contrats intelligents dans Ethereum .Conclusion
Nous avons répertorié les technologies sur lesquelles les chaînes de blocs modernes sont construites et comment elles sont liées les unes aux autres. Formulons maintenant quelles tâches peuvent être résolues à l'aide de la blockchain et quelles solutions seront, dans le meilleur des cas, inefficaces. Ainsi, l'utilisation d'une blockchain n'est pas nécessaire si:- Les transactions sont effectuées dans un environnement de confiance;
- La présence d'une commission d'intermédiaires n'aggrave pas la vie des participants;
- Les participants ne possèdent pas de biens pouvant être représentés comme des actifs numériques;
- Il n'y a pas de distribution dans les actifs numériques, c'est-à-dire un seul membre possède ou fournit la valeur.
Quel est l'avenir de la blockchain? Maintenant, nous ne pouvons que spéculer sur les moyens possibles de développer des technologies de blockchain:- La blockchain deviendra la même technologie de base de données conventionnelle que, par exemple, SQL ou NoSQL pour résoudre sa gamme spécifique de tâches;
- La blockchain deviendra un protocole répandu comme HTTP pour Internet;
- La blockchain deviendra la base du nouveau système financier et politique de la planète!
Dans la partie suivante, nous verrons quelles chaînes de blocs existent actuellement et pourquoi elles sont utilisées dans diverses industries.Ce n'est qu'un début!Les trois articles:
Que devons-nous construire une blockchain?Blockchain: que devons-nous construire un boîtier?Blockchain: que devons-nous construire PoC?