Tutoriels recommandés : Tutoriel Python
Blockchain Les concepts et caractéristiques de
Blockchain est une combinaison organique d'une série de technologies matures existantes. Elle enregistre efficacement les grands livres distribués et fournit des scripts complets pour prendre en charge différentes logiques métier. Dans un système blockchain typique, les données sont générées et stockées en unités de blocs et sont connectées dans une structure de données en chaîne par ordre chronologique. Tous les nœuds participent conjointement à la vérification des données, au stockage et à la maintenance du système blockchain. La création d'un nouveau bloc doit généralement être confirmée par une majorité de nœuds dans l'ensemble du réseau (le nombre dépend de différents mécanismes de consensus), et est diffusé à chaque nœud pour obtenir une synchronisation à l'échelle du réseau, et ne peut pas être modifié ou supprimé par la suite. .
D'un point de vue externe, le système blockchain doit avoir les caractéristiques suivantes :
● Écrit par plusieurs parties, Maintenance conjointe
Le multipartite se réfère ici uniquement aux participants à la comptabilité et n'inclut pas les clients utilisant la blockchain. Les participants comptables de la blockchain doivent être composés de plusieurs entités dont les intérêts ne sont pas complètement cohérents, et dans différents cycles comptables, différents participants prennent l'initiative d'initier la comptabilité (la méthode de rotation dépend de différents mécanismes de consensus), et d'autres participants vérifieront conjointement l'information comptable initiée par le chef de file.
● Grand livre public
Le grand livre enregistré par le système blockchain doit être dans un état auquel tous les participants sont autorisés à accéder afin de. vérifier la blockchain Pour la validité des informations enregistrées, les participants comptables doivent avoir la possibilité d'accéder au contenu des informations et à l'historique du grand livre. Cependant, les registres publics font référence à la divulgation de l'accessibilité et ne représentent pas la divulgation d'informations en soi. Par conséquent, l'industrie s'attend à appliquer de nombreuses technologies de protection de la vie privée, telles que la preuve de connaissance nulle, le cryptage homomorphe, le cryptage à seuil, etc. domaine blockchain pour résoudre le problème de la vérification de la validité des informations via des opérations de texte chiffré.
● Décentralisation
La blockchain doit être un système qui ne repose pas sur un centre de confiance unique, et le traitement implique uniquement des systèmes fermés au sein du chaîne Lorsqu'il s'agit de données, la blockchain elle-même peut créer la confiance entre les participants. Cependant, dans certains cas, comme la gestion des identités et d'autres scénarios, des données externes seront inévitablement introduites, et ces données nécessitent l'approbation d'un tiers de confiance. À l'heure actuelle, pour différents types de données, la confiance doit provenir de différents tiers de confiance. parties tierces plutôt que de s’appuyer sur un centre de confiance unique. Dans ce cas, la blockchain elle-même ne crée pas de confiance, mais sert plutôt de véhicule de confiance.
Quantity Infalsification
En tant que caractéristique la plus importante de la blockchain, l'inviolabilité est une condition nécessaire pour le système blockchain, non Dans des conditions suffisantes, il existe de nombreuses technologies matérielles qui peuvent également écrire des données une seule fois, les lire plusieurs fois et ne peuvent pas être falsifiées. Des exemples typiques sont les CD-R (Compact Disk-on-Record). L'inviolabilité de la blockchain repose sur l'algorithme de hachage cryptographique et les caractéristiques d'une maintenance conjointe par plusieurs parties. Cependant, en raison de cette caractéristique, l'inviolabilité de la blockchain n'est pas à proprement parler plus appropriée. difficile à altérer.
Technologie de base de la blockchain
1. Distributed Ledger Technology DLT (Distributed Ledger Technology) est essentiellement un stockage de données décentralisé qui peut partager, synchroniser et répliquer des données dans un réseau composé de plusieurs nœuds de réseau, de plusieurs adresses physiques ou de plusieurs technologies. Par rapport aux systèmes de stockage distribués traditionnels, la technologie des registres distribués présente principalement deux caractéristiques différentes : Les systèmes de stockage distribués traditionnels mettent en œuvre un mécanisme de gestion des données contrôlé par un nœud central ou une organisation faisant autorité. Les registres sont souvent basés sur certaines règles et utilisations consensuelles. prise de décision multipartite et maintenance conjointe pour le stockage des données, la réplication et d’autres opérations. Face à la croissance explosive des données Internet, la manière actuelle de créer des systèmes de gestion de données par une organisation centrale unique est confrontée à davantage de défis. Les fournisseurs de services doivent continuer à investir dans la construction de centres de données à grande échelle, ce qui apporte non seulement l'informatique, les réseaux, stockage, etc. Le problème de l'énorme efficacité du pool de ressources, ainsi que l'échelle et la complexité toujours croissantes du système ont également entraîné des problèmes de fiabilité de plus en plus graves. Cependant, la stratégie de maintenance décentralisée des données de la technologie des registres distribués peut réduire efficacement le fardeau des systèmes surchargés. Dans certains scénarios d'application, l'énorme pool de ressources accumulées par un grand nombre de nœuds dispersés sur Internet peut même être utilisé efficacement.
Le système de stockage distribué traditionnel décompose les données du système en plusieurs fragments, puis les stocke dans le système distribué. Cependant, chaque nœud du grand livre distribué possède une copie indépendante et complète du stockage des données. les uns les autres et disposent d'autorisations égales. La cohérence finale du stockage des données est obtenue grâce à un consensus périodique ou basé sur des événements entre eux. Après des décennies de développement, les lacunes des systèmes de gestion de données hautement centralisés dans les systèmes d'entreprise traditionnels en termes de fiabilité des données et de sécurité des réseaux ont attiré une attention croissante. Les utilisateurs ordinaires sont incapables de déterminer si leurs données ont été volées ou falsifiées par les fournisseurs de services, et sont encore plus impuissants face à des attaques de pirates informatiques ou à des failles de sécurité. Afin de résoudre ces problèmes, les gens continuent d'ajouter des mécanismes ou des technologies de gestion supplémentaires. , ce qui aggrave encore la situation. Le coût de maintenance des systèmes d'entreprise traditionnels réduit l'efficacité opérationnelle des activités commerciales. La technologie du grand livre distribué peut améliorer fondamentalement ce phénomène. Étant donné que chaque nœud conserve un ensemble complet de copies de données, toute modification des données par un seul nœud ou quelques clusters n'affectera pas la majorité des copies globales. En d’autres termes, qu’il s’agisse d’une modification délibérée par un fournisseur de services sans autorisation ou d’une attaque malveillante d’un pirate informatique, la plupart des nœuds du cluster de registres distribués doivent être affectés en même temps afin de falsifier les données existantes. , Les nœuds restants du système découvriront et traceront rapidement le comportement malveillant dans le système, ce qui améliore évidemment considérablement la crédibilité et la garantie de sécurité des données dans le système d'entreprise.
Ces deux caractéristiques uniques du système font de la technologie des registres distribués une innovation révolutionnaire de très bas niveau qui perturbe puissamment les systèmes commerciaux existants.
2. Mécanisme de consensus
La blockchain est un système distribué (décentralisé) avec un historique traçable, non falsifié et résolvant le problème du multi (confiance mutuelle des partis). Les systèmes distribués sont forcément confrontés à des problèmes de cohérence, et le processus de résolution des problèmes de cohérence est appelé consensus.
Atteindre un consensus dans un système distribué nécessite un algorithme de consensus fiable. L'algorithme de consensus résout généralement le problème de savoir quel nœud initie une proposition dans un système distribué et comment les autres nœuds parviennent à un accord sur cette proposition. Sur la base de la différence entre les systèmes distribués traditionnels et les systèmes blockchain, nous divisons les algorithmes de consensus en algorithmes de consensus entre nœuds de confiance et en algorithmes de consensus entre nœuds non fiables. Le premier a été étudié en profondeur et est largement utilisé dans les systèmes distribués populaires, parmi lesquels Paxos et Raft et leurs variantes d'algorithmes correspondantes sont les plus célèbres. Bien que cette dernière soit étudiée depuis longtemps, ce n’est que lorsque le développement de la technologie blockchain bat son plein ces dernières années que les algorithmes de consensus associés ont été largement utilisés. Selon différents scénarios d'application, ce dernier est divisé en algorithmes de consensus adaptés aux chaînes publiques représentés par des algorithmes tels que PoW (Proof of Work) et PoS (Proof of Stake), et PBFT (Practical ByzanTIne Fault Tolerance) et ses variantes d'algorithmes. l'algorithme de consensus adapté aux chaînes de consortium ou aux chaînes privées.
L'algorithme POW résistant à la charge de travail est l'algorithme adopté par le système Bitcoin. Cet algorithme a été proposé par W. Dai dans la conception de B-money en 1998. Le système Ethereum utilise actuellement également l'algorithme PoW pour le consensus, mais comme le système Ethereum génère des blocs plus rapidement (environ 15 secondes) et est plus facile à générer, afin d'éviter qu'un grand nombre de nœuds ne fonctionnent en vain, Ethereum a proposé le bloc Oncle. mécanisme de récompense. L'algorithme PoS (Proof of Stake) a été implémenté pour la première fois par Sunny King dans le système PPC (PeerToPeerCoin) lancé en août 2012. Le système Ethereum a toujours eu une bonne impression du PoS et prévoit de remplacer PoW par PoS comme consensus à l'avenir. .mécanisme. Le PoS et ses variantes algorithmiques peuvent résoudre le problème du gaspillage de puissance de calcul pour lequel l'algorithme PoW a été critiqué, mais il n'a pas lui-même été suffisamment vérifié. L'algorithme PBFT a été proposé pour la première fois par Miguel Castro (Castro) et Barbara Liskov (Liskov) lors de la conférence OSDI99 en 1999. Cet algorithme a une efficacité de fonctionnement supérieure à celle de l'algorithme byzantin original de tolérance aux pannes. En supposant qu'il y ait N nœuds dans le système, l'algorithme PBFT peut tolérer la présence de F nœuds malveillants dans le système, et 3F+1 n'est pas supérieur à N. Bien que l’algorithme de consensus PBFT puisse tolérer davantage de nœuds byzantins à mesure que le nombre de nœuds dans le système augmente, son efficacité de consensus diminue à un rythme extrêmement rapide. C’est pourquoi nous pouvons constater que très peu de systèmes appliquent PBFT comme algorithme de consensus. Il y a des raisons d'avoir plus de 100 nœuds.
Qu'il s'agisse de l'algorithme PoW ou de l'algorithme PoS, l'idée principale est d'encourager les nœuds à contribuer et à contribuer au système par le biais d'incitations économiques, et d'empêcher les nœuds de faire le mal par le biais de sanctions économiques. Afin d'encourager davantage de nœuds à participer au consensus, les systèmes de chaîne publique émettent généralement des jetons aux nœuds qui contribuent au fonctionnement du système. La différence entre la chaîne d'alliance ou la chaîne privée et la chaîne publique est que les nœuds participants de la chaîne d'alliance ou de la chaîne privée espèrent généralement obtenir des données fiables de la chaîne, ce qui est beaucoup plus significatif que d'obtenir des incitations par le biais de la comptabilité, ils ont donc plus les obligations et les responsabilités pour maintenir le fonctionnement stable du système, et ont généralement moins de nœuds participants. PBFT et ses variantes d'algorithmes conviennent uniquement aux scénarios d'application de chaînes d'alliance ou de chaînes privées.
3. Contrat intelligent
● Qu'est-ce qu'un contrat intelligent ?
Le contrat intelligent est un protocole informatique conçu pour diffuser, vérifier ou exécuter des contrats de manière basée sur l'information. Les contrats intelligents permettent des transactions fiables sans tiers. Ces transactions sont traçables et irréversibles. L’objectif est d’offrir une sécurité supérieure aux méthodes contractuelles traditionnelles et de réduire les autres coûts de transaction associés aux contrats.
Le concept de contrats intelligents remonte aux années 1990 et a été proposé pour la première fois par l'informaticien, juriste et cryptographe Nick Szabo. Sa définition des contrats intelligents est la suivante : "Un contrat intelligent est un ensemble d'engagements définis sous forme numérique, y compris un accord sur lequel les participants au contrat peuvent exécuter ces engagements. Des chercheurs tels que Nick Szabo espèrent utiliser la cryptographie et d'autres technologies numériques." Le mécanisme de sécurité place la formulation et l'exécution traditionnelles des clauses contractuelles sous la technologie informatique afin de réduire les coûts associés. Cependant, en raison de l'immaturité de nombreuses technologies à l'époque et du manque de systèmes et de technologies numériques capables de prendre en charge les contrats programmables, la théorie de travail de Nick Szabo sur les contrats intelligents n'a pas été concrétisée.
Avec l'émergence et la maturité de la technologie blockchain, les contrats intelligents, en tant qu'orientation de recherche importante pour la blockchain et les futurs contrats Internet, se sont développés rapidement. Les contrats intelligents basés sur la blockchain incluent des mécanismes de traitement et de stockage des événements, ainsi qu'une machine à états complète pour accepter et traiter divers contrats intelligents. Le traitement de l'état des données est terminé dans le contrat. Une fois les informations sur l'événement transmises au contrat intelligent, celui-ci est déclenché pour effectuer un jugement de la machine d'état. Si les conditions de déclenchement d'une ou plusieurs actions dans la machine à états automatique sont remplies, la machine à états sélectionnera l'exécution automatique de l'action contractuelle sur la base des informations prédéfinies. Par conséquent, en tant que technologie informatique, les contrats intelligents peuvent non seulement traiter efficacement les informations, mais également garantir que les deux parties au contrat peuvent exécuter le contrat sans impliquer une autorité tierce, évitant ainsi la rupture du contrat.
Quantity Avantages et risques des contrats intelligents
Avec l'application généralisée des contrats intelligents dans la technologie blockchain, ses avantages ont été reconnus par de plus en plus de chercheurs Approbation du personnel technique . D'une manière générale, les contrats intelligents présentent les avantages suivants :
a. Grande rapidité de formulation des contrats : dans la formulation des contrats intelligents, il n'est pas nécessaire de compter sur la participation d'autorités tierces ou d'agences centralisées, mais uniquement les parties au contrat doivent Grâce à la technologie informatique, les conditions convenues d'un commun accord sont transformées en accords automatisés et numériques, ce qui réduit considérablement les liens intermédiaires dans la formulation de l'accord et améliore l'efficacité de la réponse lors de la formulation de l'accord.
b. Faible coût de maintenance du contrat : le contrat intelligent utilise des programmes informatiques comme support pendant le processus de mise en œuvre. Une fois déployé avec succès, le système informatique supervisera et exécutera conformément à l'accord du contrat. En cas de rupture de contrat, le contrat intelligent peut être mis en œuvre conformément à l'accord préalable. Les accords sont appliqués par des procédures. Par conséquent, le coût de la supervision humaine et de l’exécution est considérablement réduit.
c. Haute précision de l'exécution du contrat : dans le processus d'exécution des contrats intelligents, en raison de la réduction de la participation humaine, toutes les parties intéressées ne peuvent pas interférer avec l'exécution spécifique du contrat. l'exécution du contrat. Améliore efficacement l'exactitude de l'exécution du contrat.
Bien que les contrats intelligents présentent des avantages évidents par rapport aux contrats traditionnels, des recherches approfondies et l'application des contrats intelligents sont toujours à l'étude, et nous ne pouvons ignorer les risques potentiels de cette technologie émergente.
En 2017, le portefeuille Ethereum multi-signature Parity a annoncé une vulnérabilité majeure qui rendrait inutilisables les contrats intelligents multi-signatures. Cette vulnérabilité a entraîné le gel de fonds Ethereum d'une valeur de plus de 150 millions de dollars. Par coïncidence, en février 2018, un groupe de chercheurs de l'Université nationale de Singapour, du Yale University College de Singapour et de l'University College London a publié un rapport affirmant qu'ils avaient utilisé l'outil d'analyse Maian pour analyser près d'un million de contrats intelligents basés sur Ethereum et trouvé qu'il existe 34 200 contrats contenant des failles de sécurité, qui peuvent être exploitées par des pirates informatiques pour voler des pièces d'éther, geler des actifs et supprimer des contrats.
L'apparition d'incidents de risque de sécurité mérite notre réflexion, mais dans tous les cas, les initiés de l'industrie pensent généralement que la technologie blockchain et les contrats intelligents deviendront une direction importante pour le développement de la technologie informatique à l'avenir. les risques sont causés par la maturité des nouvelles technologies. Un processus inévitable.
● Application des contrats intelligents
À l'heure actuelle, les contrats intelligents, en tant que technologie de base de la blockchain, ont été largement utilisés dans des plateformes influentes telles que Ethereum et Hyperledger Fabric. Il est largement utilisé dans les projets blockchain.
a. Application de contrat intelligent dans Ethereum : Un contrat intelligent dans Ethereum est un morceau de code qui peut être exécuté par la machine virtuelle Ethereum. Ethereum prend en charge un puissant langage de script Turing-complete, permettant aux développeurs d'y développer des applications arbitraires. Ces contrats peuvent généralement être écrits dans des langages de haut niveau (tels que Solidity, Serpent, LLL, etc.) et convertis en bytecode via un. Le compilateur (code d'octet) est stocké sur la blockchain. Une fois déployés, les contrats intelligents ne peuvent pas être modifiés. Les utilisateurs effectuent des transactions de compte via des contrats et gèrent et exploitent la devise et le statut du compte.
b. Application de contrats intelligents d'Hyperledger Fabric : Dans le projet Hyperledger Fabric, le concept et l'application des contrats intelligents sont plus largement étendus. En tant que code apatride, piloté par les événements et auto-exécutable qui prend en charge l'exhaustivité de Turing, les contrats intelligents sont déployés dans le réseau blockchain de Fabric et interagissent directement avec le grand livre, jouant une position très centrale. Par rapport à Ethereum, les contrats intelligents Fabric sont séparés du grand livre sous-jacent. Lors de la mise à niveau du contrat intelligent, il n'est pas nécessaire de migrer les données du grand livre vers le nouveau contrat intelligent, réalisant ainsi une véritable séparation de la logique et des données. Le contrat intelligent de Fabric s'appelle chaincode, qui est divisé en code chaîne système et code chaîne utilisateur. Le code de la chaîne système est utilisé pour implémenter les fonctions au niveau du système et est responsable de la logique de traitement du nœud Fabric lui-même, y compris la configuration du système, l'approbation, la vérification, etc. Le code de la chaîne utilisateur réalise les fonctions d'application de l'utilisateur et fournit une logique de traitement d'état basée sur le grand livre distribué de la blockchain. Il est écrit par le développeur de l'application et prend en charge les activités de la couche supérieure. Le code de chaîne utilisateur s'exécute dans un conteneur de code de chaîne isolé.
4. Cryptographie
La sécurité de l'information et la technologie de cryptographie sont la pierre angulaire de l'ensemble de la technologie de l'information. Dans la blockchain, un grand nombre de réalisations techniques de la sécurité de l'information et de la cryptographie modernes sont également utilisées, notamment : l'algorithme de hachage, le cryptage symétrique, le cryptage asymétrique, la signature numérique, le certificat numérique, le cryptage homomorphe, la preuve de connaissance nulle, etc. Ce chapitre présente brièvement l'application de la technologie de sécurité et de cryptographie dans la blockchain sous les aspects de l'intégrité de la sécurité, de la confidentialité, de l'authentification de l'identité et d'autres dimensions.
Quantity Intégrité (anti-falsification)
La blockchain utilise la technologie d'un algorithme de hachage cryptographique pour garantir que l'intégrité du grand livre de la blockchain n'est pas détruite. L'algorithme de hachage (hachage) peut mapper les données binaires dans une chaîne plus courte et possède des caractéristiques sensibles à l'entrée. Une fois les données binaires d'entrée légèrement falsifiées, la chaîne obtenue par l'opération de hachage sera anormale. De plus, d'excellents algorithmes de hachage ont également des caractéristiques d'évitement des conflits. Si vous saisissez des données binaires différentes, les chaînes de résultats de hachage obtenues seront différentes.
La blockchain utilise les caractéristiques de sensibilité d'entrée et d'évitement des conflits de l'algorithme de hachage. Dans chaque bloc, elle génère une valeur de hachage contenant le bloc précédent et génère une transaction vérifiée dans le bloc. Une fois que certains blocs de la blockchain entière sont falsifiés, la même valeur de hachage ne peut pas être obtenue comme avant la falsification, garantissant ainsi que la blockchain peut être rapidement identifiée lorsqu'elle est falsifiée, garantissant ainsi l'intégrité de la blockchain (anti-falsification) .
● Confidentialité
La technologie de cryptage et de décryptage peut être divisée en deux catégories en termes de composition technique : l'une est le cryptage symétrique et l'autre est le cryptage asymétrique. Les clés de chiffrement et de déchiffrement du chiffrement symétrique sont les mêmes ; les clés de chiffrement et de déchiffrement du chiffrement asymétrique sont différentes, l’une est appelée clé publique et l’autre est appelée clé privée. Les données chiffrées par la clé publique ne peuvent être déchiffrées que par la clé privée correspondante, et vice versa.
Les blockchains, en particulier les chaînes d'alliance, nécessitent la technologie de communication cryptée TLS (Transport Layer Security) pendant tout le processus de transmission du réseau pour garantir la sécurité des données transmises. La communication cryptée TLS est la combinaison parfaite de la technologie de cryptage asymétrique et de la technologie de cryptage symétrique : les parties communicantes utilisent la technologie de cryptage asymétrique pour négocier afin de générer une clé symétrique, puis utilisent la clé symétrique générée comme clé de travail pour terminer le cryptage et le déchiffrement des données. Cela profite à la fois des avantages du chiffrement asymétrique, qui ne nécessite pas de partage de clés entre les deux parties, et de la rapidité des opérations de chiffrement symétrique.
Quantity Authentification d'identité
La communication cryptée TLS pure ne peut garantir que la confidentialité et l'intégrité du processus de transmission de données, mais ne peut pas garantir la confiance du homologue de communication (intermédiaire) attaque). Par conséquent, il est nécessaire d'introduire un mécanisme de certificat numérique pour vérifier l'identité du homologue de communication, garantissant ainsi l'exactitude de la clé publique de l'homologue. Les certificats numériques sont généralement délivrés par des organismes faisant autorité. Un côté de la communication contient la clé publique de l'autorité de certification racine faisant autorité pour vérifier si le certificat du homologue de communication est approuvé par lui-même (c'est-à-dire si le certificat est émis par lui-même) et pour confirmer l'identité du homologue en fonction de le contenu du certificat. Après avoir confirmé l'identité du homologue, retirez la clé publique du certificat du homologue et terminez le processus de cryptage asymétrique.
De plus, les derniers résultats de recherche sur la cryptographie moderne sont également appliqués dans la blockchain, y compris le cryptage homomorphe, la preuve de connaissance nulle, etc., pour fournir une confidentialité maximale lorsque le grand livre distribué de la blockchain est une capacité de protection publique. La technologie dans ce domaine est toujours en cours de développement et d’amélioration.
La sécurité de la blockchain est un projet système. La configuration du système et les autorisations des utilisateurs, la sécurité des composants, l'interface utilisateur, les capacités de détection des intrusions sur le réseau et de prévention des attaques, etc., affecteront tous la sécurité et la fiabilité du système blockchain final. Au cours du processus de construction proprement dit du système blockchain, un équilibre raisonnable doit être atteint en termes de sécurité, de coût de construction du système et de facilité d'utilisation, dans le but de répondre aux exigences des utilisateurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!