Introduction
Bonjour à tous, je m'appelle Michael et je travaille maintenant pour une société Internet à Shanghai. Alors que le gouvernement attache une grande importance aux projets blockchain, les gens commencent à dire que 2020. will C'est la première année du développement de la blockchain. J'ai parlé à plusieurs reprises de la blockchain avec mes amis et je souhaite la pratiquer moi-même. Ainsi, après avoir recherché de nombreuses options telles que Ethereum, EOS, NEO, etc., j'ai choisi la chaîne d'alliance. , qui est notre protagoniste d’aujourd’hui est le tissu Hyperledger.
Structure des articles
Cette série d'articles sera divisée en trois parties. Les trois articles vous aideront à démarrer le développement d'Hyperledger Fabric et à construire votre propre projet de chaîne d'alliance. :
1. Introduction de base
2. Configuration de l'environnement
3. startup
Hyperledger Fabric - le nouvel espoir du monde blockchain
Décembre 2015 , l'organisation phare du monde open source, la Linux Foundation, a pris les devants et s'est unie aux 30 premiers membres corporatifs (dont IBM, Accenture, Intel, J.P. Morgan, R3, DAH, DTCC, FUJITSU, HITACHI, SWIFT, Cisco, etc.) pour annoncer conjointement Super La création du projet commun Hyperledger. Le projet Hyperledger s'engage à fournir une implémentation de référence open source pour une technologie de grand livre distribué transparente, ouverte et décentralisée au niveau de l'entreprise, et à promouvoir le développement de protocoles, spécifications et normes liés à la blockchain et au grand livre distribué. Le site officiel du projet est hyperledger.org, et Hyperledger Fabric est l'un de ses projets importants.
De nombreux nouveaux étudiants ne savent peut-être pas grand-chose sur de nombreux termes spécifiques de la blockchain, c'est pourquoi dans la première section, je vais vous présenter les termes impliqués dans le tissu Hyperledger.
Introduction du nom :
Anchor Peer - Anchor node Un nœud d'ancrage est un homologue qui peut être détecté par tous les nœuds homologues du canal et peut communiquer avec lui. Chaque membre du canal possède un (ou plusieurs, en cas de point de défaillance unique) nœud d'ancrage, permettant aux nœuds ayant des appartenances différentes de découvrir d'autres nœuds présents dans le canal.
Bloc – Un bloc est un ensemble de transactions ordonnées sur un canal. Les blocs sont souvent connectés aux blocs précédents par des moyens cryptographiques (valeurs de hachage).
Zhu Jiang : Un bloc est un ensemble ordonné de transactions qui sont cryptées (chiffrées par hachage) dans le canal et connectées au bloc précédent.
Chain – Chain est un journal de transactions structuré avec des connexions de hachage entre les blocs. L'homologue reçoit le bloc de transaction du service de commande, marque si la transaction sur le bloc est valide en fonction de la politique d'approbation et des conflits de concurrence, puis ajoute le bloc à la chaîne de hachage dans le système de fichiers homologue. Z
hu Jiang : La chaîne du grand livre est un journal de transactions structuré par « connexion de hachage » de blocs de transactions. Le nœud homologue reçoit le bloc de transaction du service de tri, marque la transaction du bloc comme valide ou invalide en fonction de la politique d'approbation et des conflits de concurrence, et ajoute le bloc à la chaîne de hachage du système de fichiers du nœud homologue.
Chaincode – Chaincode Chaincode est un logiciel qui s'exécute sur le grand livre. Il peut encoder les actifs, et les instructions de transaction (ou logique métier) peuvent également être utilisées pour modifier les actifs.
Channel - Channel est une blockchain privée construite sur le réseau "Fabric", qui assure l'isolation et la confidentialité des données. Le grand livre spécifique au canal est partagé avec tous les pairs du canal, et les parties à la transaction doivent être correctement authentifiées par le canal pour interagir avec le grand livre. Les canaux sont définis par un "bloc de configuration".
Engagement – Engagement Chaque homologue d'un canal valide un bloc ordonné de transactions, puis valide (écrit ou ajoute) le bloc à chaque copie du grand livre sur le canal. Les pairs marquent également le statut de chaque transaction dans chaque bloc comme valide ou invalide.
Vérification de version de contrôle de concurrence – Vérification de version de contrôle de concurrence (CCVC) CCVC est une méthode permettant de maintenir l'état synchronisé entre les pairs d'un canal. Les nœuds homologues exécutent les transactions en parallèle. Avant que la transaction ne soit soumise au grand livre, le nœud homologue vérifie si les données lues lors de l'exécution de la transaction ont été modifiées. Si les données lues sont modifiées entre l'exécution et la validation, un conflit CCVC se produira, la transaction sera marquée comme invalide dans le grand livre et la valeur ne sera pas mise à jour dans la base de données d'état.
Bloc de configuration – Le bloc de configuration contient des données de configuration qui définissent les membres et les politiques d'une chaîne système (service de commande) ou d'un canal. Les modifications de configuration d'un canal ou de l'ensemble du réseau (par exemple, les membres quittant ou rejoignant) entraîneront la génération d'un nouveau bloc de configuration et son ajout à la chaîne appropriée. Ce bloc de configuration contiendra le contenu du bloc Genesis plus l'incrément.
Consensus – Le consensus est un terme général utilisé tout au long du processus de transaction pour produire un ordre convenu et confirmer l'exactitude de l'ensemble des transactions qui composent un bloc.
État actuel – L'état actuel du grand livre représente les dernières valeurs de toutes les clés de son journal de transactions en chaîne. L'homologue soumettra la valeur modifiée correspondant à chaque transaction dans le bloc traité à l'état actuel du grand livre. Puisque l'état actuel représente tous les derniers k-v connus du canal, l'état actuel est également appelé État mondial. Chaincode exécute la proposition de transaction par rapport à l'état actuel.
Adhésion dynamique – Membre dynamique Fabric prend en charge l'ajout et la suppression dynamiques de membres, de pairs et de nœuds de service de tri sans affecter l'opérabilité de l'ensemble du réseau. L'adhésion dynamique est cruciale lorsque les relations commerciales sont ajustées ou que des entités doivent être ajoutées ou supprimées pour diverses raisons.
Approbation – L'approbation fait référence au processus dans lequel un homologue exécute une transaction et renvoie OUI-NON à l'application client qui a généré la proposition de transaction. Le code de chaîne a des politiques d'approbation correspondantes, dans lesquelles les pairs d'approbation sont spécifiés.
Politique d'approbation – La politique d'approbation définit la combinaison nécessaire de résultats de pairs et de réponses (approbations) sur le canal qui s'appuie sur un code chaîne spécifique pour exécuter la transaction (c'est-à-dire les conditions de retour Oui ou Non) .
La politique d'approbation peut spécifier le nombre minimum de nœuds d'approbation ou le pourcentage minimum de nœuds d'approbation qui peuvent approuver une transaction pour un certain code de chaîne. Les politiques d'approbation sont organisées et gérées par des nœuds d'approbation en fonction de l'application et du niveau de protection souhaité contre les mauvais comportements. La politique d'approbation doit être spécifiée lors de l'installation et de l'instanciation de Chaincode (déployer tx).
Fabric-caFabric-ca est le composant de gestion de certificats par défaut qui émet des certificats basés sur PKI aux membres du réseau et à leurs utilisateurs. L'autorité de certification émet un certificat racine (rootCert) pour chaque membre, un certificat d'enregistrement (eCert) pour chaque utilisateur autorisé et un grand nombre de certificats de transaction (tCerts) pour chaque certificat d'enregistrement.
Genesis Block – Le bloc initial Genesis Block est le bloc de configuration qui initialise le réseau ou le canal blockchain, et est également le premier bloc de la chaîne.
Protocole Gossip – Protocole Gossip Le protocole de transmission de données Gossip a trois fonctions :
1) Gérer la découverte des pairs et les membres du canal
2) Tous les registres de diffusion inter-pairs sur ; les données du canal ;
3) Synchronisez les données du grand livre entre tous les pairs du canal.
Initialiser – Initialiser une méthode pour initialiser le programme chaincode.
Installer – Le processus d’installation du code chaîne dans le système de fichiers du homologue. (Annotation : les informations ChaincodeDeploymentSpec sont stockées dans le fichier chaincodeInstallPath-chaincodeName.chainVersion)
Instantiate – le processus d'instanciation et de démarrage du conteneur chaincode. (Annotation : enregistrez ChaincodeData dans l'état dans lccc, puis déployez Chaincode et exécutez la méthode Init) Invoke – Appelez pour appeler la fonction dans le code chaîne.
Chaincode Invocation est une proposition de transaction, puis exécute un processus modulaire (approbation, consensus, vérification, soumission). La structure d'invocation est une fonction et un tableau de paramètres.
Pair principal - Nœud principal. Chaque membre peut avoir plusieurs pairs sur la chaîne à laquelle il est abonné. L'un des pairs servira de pair principal de la chaîne pour communiquer avec le service de commande au nom du membre. Le service de tri remet le bloc au homologue principal, qui le distribue ensuite aux autres homologues relevant du même membre.
Ledger – Ledger Un grand livre est une chaîne d'un canal et des données d'état actuel qui sont conservées par chaque homologue du canal. Ledger est la chaîne d'un canal et l'état mondial maintenu par chaque homologue du canal. (Cette explication est un peu étrange)
Membre – une entité juridiquement indépendante dont les membres possèdent le certificat racine unique du réseau. Les composants réseau tels que les nœuds homologues et les clients d'application sont liés à un membre.
Membership Service Provider – MSPMSP fait référence au composant abstrait du système qui fournit des certificats aux clients et aux pairs.
Les clients utilisent des certificats pour authentifier leurs transactions ; leurs pairs utilisent des certificats pour authentifier leurs avenants de transaction. Cette interface est étroitement liée au composant de traitement des transactions du système et est conçue pour permettre de connecter en douceur les composants de service d'adhésion définis de cette manière sans modifier le cœur du composant de traitement des transactions du système.
Services d'adhésion – Les services d'adhésion authentifient, autorisent et gèrent les identités sur un réseau blockchain autorisé.
Le code du service membre exécuté en peer and order authentifiera et autorisera les opérations blockchain. Il s'agit d'une implémentation MSP basée sur PKI. Le composant fabric-ca implémente des services d'adhésion pour gérer les identités. Il gère notamment la délivrance et la révocation des ECerts et TCerts. ECert est un identifiant d'identité à long terme ; TCert est un identifiant d'identité à court terme, anonyme et non associable.
Service de commande – Le service de commande ou service de consensus trie les transactions en une collection de nœuds dans le bloc.
Le service de commande est indépendant du processus peer et trie les transactions pour tous les canaux du réseau selon le principe du premier arrivé, premier servi. Le service de commande prend en charge l'implémentation enfichable, et actuellement SOLO et Kafka sont implémentés par défaut. Le service de commande constitue une liaison commune à l'ensemble du réseau et contient des éléments cryptographiques liés à chaque Membre. Peer – Une entité réseau qui gère le grand livre et exécute le conteneur Chaincode pour effectuer des opérations de lecture-écriture sur le grand livre. Les pairs appartiennent et sont gérés par les membres.
Politique – Les stratégies incluent la stratégie d'approbation, la stratégie de vérification, la stratégie de soumission de blocs, la stratégie de gestion du Chaincode et la stratégie de gestion des canaux réseau.
Proposition – Proposez une demande d'approbation pour un pair de la chaîne. Chaque proposition est soit une instanciation Chaincode, soit une invocation Chaincode.
Requête – Requête de requête pour la valeur d'une clé dans l'état actuel.
Kit de développement logiciel – SDK Le SDK fournit aux développeurs un environnement de bibliothèque structuré pour écrire et tester des applications de code chaîne.
Le SDK est entièrement configurable et extensible via des interfaces standard, et des composants tels que les algorithmes de chiffrement signés, les cadres de journalisation et le stockage d'état peuvent être facilement remplacés. L'API du SDK utilise gRPC pour le traitement des transactions, et les services membres, la traversée des nœuds et le traitement des événements sont tous utilisés pour communiquer avec la structure. Actuellement, le SDK prend en charge Node.js, Java et Python.
Base de données d'état – stateDB Afin de lire et d'écrire efficacement à partir de Chaincode, les données d'état actuel sont stockées dans stateDB, y compris levelDB et couchDB.
Chaîne système – La chaîne système contient les blocs de configuration qui définissent le réseau au niveau du système.
La chaîne système existe dans le service de commande, similaire au canal, avec une configuration initiale contenant les informations suivantes : informations MSP, politique et configuration des informations. Toute modification apportée à l'ensemble du réseau (telle que l'adhésion d'une nouvelle organisation ou l'ajout de nouveaux nœuds de commande) entraînera l'ajout de nouveaux blocs de configuration à la chaîne système.
La chaîne système peut être considérée comme la liaison commune d'un canal ou d'un groupe de canaux. Par exemple, un ensemble d’institutions financières peut former un consortium (représenté par une chaîne de systèmes) puis créer des canaux basés sur leurs mêmes activités ou sur des activités différentes.
Transaction – l'opération d'invocation ou d'instanciation de la transaction Chaincode. Invoke demande l'ensemble de lecture-écriture à partir du grand livre ; instancie les demandes pour démarrer le conteneur Chaincode sur le homologue.
Résumé :
Ce qui précède est la connaissance de base de la blockchain que nous vous avons présentée dans la première section. Celles-ci peuvent être ennuyeuses, mais nous devons comprendre ces termes. et contenu Une compréhension préliminaire, c'est comme lorsque nous écrivons du code, nous devons connaître les noms de fonctions et les mots-clés. Ce n'est qu'en les maîtrisant que nous pourrons mieux commencer notre travail.
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!