Le but de la leçon: se familiariser avec les principes de la blockchain Ethereum, ses domaines d'application et sa terminologie de base.
Exercices
pratiques : non fournis dans cette leçon.
Il n'y a pratiquement pas de développeur de logiciel aujourd'hui qui n'entendrait rien de la technologie Blockchain, des crypto-monnaies (Crypto-monnaie ou Crypto Currency), des Bitcoins (Bitcoin), de l'offre initiale de pièces (ICO, offre initiale de pièces), des contrats intelligents (Smart Contract), ainsi que d'autres concepts et termes liés à la blockchain.
La technologie Blockchain ouvre de nouveaux marchés et crée des emplois pour les programmeurs. Si vous comprenez toutes les subtilités des technologies de crypto-monnaie et des technologies de contrat intelligent, vous ne devriez pas avoir de problèmes avec l'application de ces connaissances dans la pratique.
Je dois dire qu'il y a beaucoup de spéculations autour des crypto-monnaies et des blockchains. Nous laisserons de côté les discussions sur les changements dans les taux de crypto-monnaie, sur la création de pyramides, sur les subtilités de la législation sur la crypto-monnaie, etc. Dans notre cours de formation, nous nous concentrerons principalement sur les aspects techniques de l'application des contrats intelligents de la blockchain Ethereum (Ethereum, ether) et le développement de la soi-disant application distribuée (DApp).
Qu'est-ce que la blockchain?
Blockchain (Blockchain, Block Chain) est une chaîne de blocs de données connectés d'une certaine manière. Au début de la chaîne se trouve le premier bloc appelé bloc de genèse ou bloc de genèse. Elle est suivie d'une seconde, puis d'une troisième, etc.
Tous ces blocs de données sont automatiquement dupliqués sur de nombreux nœuds du réseau blockchain. Cela garantit un stockage décentralisé des données de la chaîne de blocs.
Vous pouvez imaginer le système de blockchain comme un grand nombre de nœuds (serveurs physiques ou virtuels), en réseau et reproduisant tous les changements dans la chaîne de blocs de données. C'est comme un ordinateur multiserveur géant, et les nœuds d'un tel ordinateur (serveurs) peuvent être dispersés à travers le monde. Et vous aussi, vous pouvez ajouter votre ordinateur au réseau blockchain.
Base de données distribuée
La blockchain peut être imaginée comme une base de données distribuée répliquée sur tous les nœuds du réseau blockchain. En théorie, la blockchain sera opérationnelle tant qu'au moins un nœud qui stocke tous les blocs de la blockchain fonctionne.
Registre de données distribuées
La blockchain peut être imaginée comme un registre distribué de données et d'opérations (transactions). Un autre nom pour un tel registre est le grand livre.
Vous pouvez ajouter des données à un registre distribué, mais vous ne pouvez pas les modifier ou les supprimer. Une telle impossibilité est obtenue, en particulier, en utilisant des algorithmes cryptographiques, des algorithmes spéciaux pour ajouter des blocs à la chaîne et un stockage décentralisé des données.
Lors de l'ajout de blocs et de l'exécution d'opérations (transactions), des clés privées et publiques sont utilisées. Ils restreignent les utilisateurs de la chaîne de blocs en leur donnant uniquement accès à leurs blocs de données.
Les transactions
La blockchain stocke des informations sur les opérations (transactions) dans des blocs. Dans le même temps, les anciennes transactions déjà terminées ne peuvent pas être annulées ou modifiées. Les nouvelles transactions sont stockées dans de nouveaux blocs ajoutés.
Ainsi, l'historique complet des transactions peut être enregistré inchangé dans la blockchain. Par conséquent, la blockchain peut être utilisée, par exemple, pour stocker en toute sécurité des opérations bancaires, des informations sur le droit d'auteur, un historique des changements de propriété d'un bien immobilier, etc.
La blockchain Ethereum contient les soi-disant états du système. Une fois les transactions terminées, l'état passe de l'initiale à l'actuelle. Les transactions sont écrites en blocs.
Blockchains publiques et privées
Il convient de noter ici que tout ce qui précède n'est vrai que pour les soi-disant réseaux publics de blockchain, qui ne peuvent pas être contrôlés par des individus ou des entités juridiques, des organismes d'État ou des gouvernements.
Les soi-disant réseaux privés de blockchain sont sous le contrôle total de leurs créateurs, et tout y est possible, par exemple, le remplacement complet de tous les blocs de la chaîne.
Applications pratiques Blockchain
Pour quoi la blockchain peut-elle entrer?
En bref, la blockchain vous permet d'effectuer en toute sécurité des transactions (transactions) entre des personnes qui ne se font pas confiance ou des entreprises. Les données enregistrées dans la blockchain (transactions, données personnelles, documents, certificats, contrats, factures, etc.) ne peuvent pas être falsifiées ou remplacées après enregistrement. Par conséquent, sur la base de la blockchain, vous pouvez créer, par exemple, des registres distribués de confiance de divers types de documents.
Bien sûr, vous savez que les systèmes de crypto-monnaie sont créés sur la base de chaînes de blocs, conçues pour remplacer le papier-monnaie ordinaire. Le papier-monnaie est également appelé monnaie fiduciaire (de Fiat Money).
La blockchain fournit le stockage et l'immuabilité des transactions enregistrées dans des blocs, elle peut donc également être utilisée pour créer des systèmes de crypto-monnaie. Il contient l'historique complet du transfert de fonds cryptographiques entre différents utilisateurs (comptes), et toute opération peut être suivie.
Bien que les transactions au sein des systèmes de crypto-monnaie puissent être anonymes, le retrait de la crypto-monnaie et son échange contre de la monnaie fiduciaire conduisent généralement à la divulgation de l'identité du propriétaire de l'actif de crypto-monnaie.
Les contrats dits intelligents, qui sont des logiciels exécutés sur le réseau Ethereum, automatisent le processus de conclusion des accords et contrôlent leur exécution. Cela est particulièrement efficace si le paiement de la transaction est effectué avec la crypto-monnaie Ether.
La blockchain Ethereum et les contrats intelligents Ethereum écrits dans le langage de programmation Solidity peuvent être utilisés, par exemple, dans les domaines suivants:
- alternative à la légalisation des documents;
- stockage du registre de l'immobilier et informations sur les transactions immobilières;
- stockage d'informations sur le droit d'auteur sur la propriété intellectuelle (livres, images, musique, etc.);
- création de systèmes de vote indépendants;
- finance et banque;
- logistique internationale, suivi du mouvement des marchandises;
- stockage de données personnelles en tant qu'analogue d'un système de carte d'identité;
- transactions sécurisées dans le domaine commercial;
- stockage des résultats des examens médicaux, ainsi que l'historique des procédures prescrites
Problèmes de blockchain
Mais, bien sûr, tout n'est pas aussi simple qu'il y paraît!
Il y a des problèmes avec la vérification des données avant de les ajouter à la blockchain (par exemple, n'est-ce pas faux?), Des problèmes de sécurité du système et des logiciels d'application utilisés pour travailler avec la blockchain, des problèmes avec la possibilité d'utiliser des méthodes d'ingénierie sociale pour voler l'accès aux portefeuilles de crypto-monnaie, etc. .p.
Encore une fois, s'il ne s'agit pas d'une blockchain publique, dont les nœuds sont dispersés dans le monde, mais d'une blockchain privée détenue par une personne ou une organisation, le niveau de confiance ici ne sera pas supérieur au niveau de confiance en cette personne ou cette organisation.
Il convient également de garder à l'esprit que les données enregistrées sur la blockchain deviennent accessibles à tous. En ce sens, la blockchain (en particulier la chaîne publique) n'est pas adaptée au stockage d'informations confidentielles. Cependant, le fait que les informations sur la blockchain ne puissent pas être modifiées peut aider à prévenir ou à enquêter sur toutes sortes d'activités frauduleuses.
Les applications Ethereum décentralisées seront pratiques si vous payez pour leur utilisation avec la crypto-monnaie. Plus il y aura de personnes qui possèdent une crypto-monnaie ou sont prêtes à l'acheter, plus les applications DApp et les contrats intelligents seront populaires.
Parmi les problèmes courants de la blockchain qui entravent son application pratique, on peut citer la vitesse limitée d'ajout de nouveaux blocs et le coût relativement élevé des transactions. Mais les technologies dans ce domaine se développent activement et on espère que les problèmes techniques seront résolus avec le temps.
Un autre problème est que les contrats intelligents de la blockchain Ethereum fonctionnent dans un environnement de machine virtuelle isolé et n'ont pas accès aux données du monde réel. En particulier, le programme de contrat intelligent ne peut pas lire les données des sites ou des appareils physiques (capteurs, contacts, etc.) lui-même, ni transmettre des données à des appareils externes. Nous discuterons de ce problème et des méthodes pour le résoudre dans une leçon consacrée aux soi-disant Oracles - intermédiaires d'information des contrats intelligents.
Il existe également des restrictions légales. Dans certains pays, par exemple, il est interdit d'utiliser la crypto-monnaie comme moyen de paiement, mais vous pouvez la posséder comme une sorte d'actif numérique, comme des titres. Ces actifs peuvent être achetés et vendus en bourse. Dans tous les cas, lorsque vous créez un projet qui fonctionne avec des crypto-monnaies, vous devez vous familiariser avec la législation du pays sous la juridiction duquel votre projet relève.
Comment est formée la chaîne de blockchain
Comme nous l'avons déjà dit, la blockchain est une simple chaîne de blocs de données. D'abord, le premier bloc de cette chaîne est formé, puis le deuxième bloc lui est ajouté, et ainsi de suite. On suppose que les données de transaction sont stockées dans des blocs et ajoutées au tout dernier bloc.
Dans la fig. 1.1 nous avons montré la version la plus simple d'une séquence de blocs, où le premier bloc fait référence au suivant.
Fig. 1.1. Séquence simple de blocsDans ce mode de réalisation, cependant, il est très facile de simuler le contenu de n'importe quel bloc de la chaîne, car les blocs ne contiennent aucune information pour se protéger contre les changements. Étant donné que la blockchain est destinée à l'usage des personnes et des entreprises entre lesquelles il n'y a pas de confiance, nous pouvons conclure que cette méthode de stockage des données pour la blockchain n'est pas appropriée.
Protégeons les blocs contre les faux. Dans un premier temps, nous essaierons de protéger chaque bloc avec une somme de contrôle (Fig. 1.2).
Fig. 1.2. Ajoutez une protection contre les blocs de données avec une somme de contrôleDésormais, un attaquant ne peut pas simplement modifier un bloc car il contient une somme de contrôle des données du bloc. La vérification de la somme de contrôle montrera que les données ont été modifiées.
Pour calculer la somme de contrôle, vous pouvez utiliser l'une des fonctions de hachage, telles que MD-5, SHA-1, SHA-256, etc. Les fonctions de hachage calculent une certaine valeur (par exemple, sous la forme d'une chaîne de texte de longueur constante) suite à l'exécution d'opérations irréversibles sur un bloc de données. Les opérations dépendent du type de fonction de hachage.
Même avec un petit changement dans le contenu du bloc de données, la valeur de la fonction de hachage changera également. En analysant la valeur de la fonction de hachage, il est impossible de restaurer le bloc de données pour lequel il a été calculé.
Une telle protection serait-elle suffisante? Malheureusement non.
Dans ce schéma, la somme de contrôle (fonction de hachage) protège uniquement les blocs individuels, mais pas la chaîne de blocs entière. Connaissant l'algorithme de calcul de la fonction de hachage, un attaquant peut facilement remplacer le contenu d'un bloc. De plus, rien ne l'empêchera de retirer des blocs de la chaîne ou d'en ajouter de nouveaux.
Afin de protéger l'ensemble de la chaîne dans son ensemble, il est possible de stocker un hachage de données du bloc précédent dans chaque bloc avec des données (Fig. 1.3).
Fig. 1.3. Ajoutez le hachage du bloc précédent au bloc de donnéesDans ce schéma, pour modifier un bloc, vous devez recalculer les fonctions de hachage de tous les blocs suivants. Il semblerait, quel est le problème?
Dans les chaînes de blocs réelles, des difficultés artificielles sont en outre créées pour ajouter de nouveaux blocs - des algorithmes sont utilisés qui nécessitent beaucoup de ressources informatiques. Étant donné que pour apporter des modifications à un bloc, ce n'est pas seulement un bloc qui doit être compté, mais tous les suivants, il sera extrêmement difficile de le faire.
Rappelons également que les données de la blockchain sont stockées (dupliquées) sur de nombreux nœuds de réseau, c'est-à-dire . , .. .
, .
Ethereum
Ethereum , DApp. , Ethereum (-, smart contracts), Solidity.
2013 , Bitcoin Magazine, 2015 . , , Ethereum - Solidity.
(mining) , « ». , .. Ethereum.
, , (miner).
(), , Nonce, -, . Ethash, Ethereum, Nonce .
Nonce, (PoW, Proof-of-work). , Ethereum, — Ether. 5 Ether, .
, Ethereum , , . , Solidity DApp Ethereum.
, . , , .
. — ( ), . , Ethereum - Solidity. , , ..
, . , , , , - , , .
. . , , .