
Pendant plus d'un an, j'ai travaillé sur le livre « Création de contrats intelligents Solidity pour la blockchain Ethereum. Guide pratique », et maintenant ce travail est achevé, et le livre .
J'espère que mon livre aidera rapidement à commencer à créer des contrats intelligents Solidity et des applications décentralisées DApp pour la blockchain Ethereum. Il se compose de 12 leçons avec des exercices pratiques. En les accomplissant, le lecteur pourra créer ses propres nœuds Ethereum locaux, publier des contrats intelligents et appeler leurs méthodes, échanger des données entre le monde réel et les contrats intelligents à l'aide d'oracles, et travailler avec le réseau de test Rinkeby.
Le livre s'adresse à tous ceux qui s'intéressent aux technologies avancées dans le domaine des blockchains et souhaitent acquérir rapidement des connaissances pour se lancer dans un travail passionnant et prometteur.
Vous trouverez ci-dessous la table des matières et le premier chapitre du livre (également sur des extraits du livre sont disponibles). J'espère recevoir des retours, commentaires et suggestions. Je m'efforcerai de les prendre en compte lors de la préparation de la prochaine édition du livre.
Table des matièresIntroductionNotre livre est destiné à ceux qui souhaitent non seulement comprendre les principes de fonctionnement de la blockchain Ethereum, mais aussi acquérir des compétences pratiques dans la création d'applications décentralisées DApp en utilisant le langage de programmation Solidity pour ce réseau.
Il est préférable de ne pas simplement lire ce livre, mais de travailler avec lui, en réalisant les exercices décrits dans les leçons. Pour cela, vous aurez besoin d'un ordinateur local, d'un serveur virtuel ou cloud avec un système d'exploitation Debian ou Ubuntu installé. Vous pouvez également utiliser un Raspberry Pi pour de nombreux exercices.
Dans la première leçon nous examinerons les principes de fonctionnement de la blockchain Ethereum et la terminologie de base, ainsi que les cas d'utilisation de cette blockchain.
L'objectif la deuxième leçon – créer un nœud de blockchain Ethereum privé pour une utilisation ultérieure dans ce cours sur un serveur Ubuntu et Debian. Nous examinerons les spécificités de l'installation des principales utilitaires, tels que geth, qui assurent le fonctionnement du nœud de notre blockchain, ainsi que du démon de stockage décentralisé de données swarm.
La troisième leçon vous apprendra à réaliser des expériences avec Ethereum sur un micro-ordinateur Raspberry Pi peu coûteux. Vous installerez le système d'exploitation (OS) Rasberian sur le Raspberry Pi, l'outil Geth qui permet le fonctionnement d'un nœud blockchain, ainsi que le démon de stockage décentralisé Swarm.
Quatrième leçon est consacrée aux comptes et aux unités de cryptomonnaie dans le réseau Ethereum, ainsi qu'aux méthodes de transfert de fonds d'un compte à un autre depuis la console Geth. Vous apprendrez à créer des comptes, à initier des transactions de transfert de fonds, à obtenir l'état d'une transaction et son reçu.
Dans la cinquième leçon vous vous familiariserez avec les contrats intelligents dans le réseau Ethereum et découvrirez leur exécution par la machine virtuelle Ethereum.
Vous créerez et publierez votre premier contrat intelligent dans un réseau Ethereum privé et apprendrez à appeler ses fonctions. Pour cela, vous utiliserez l'environnement de développement Remix Solidity IDE. De plus, vous apprendrez à installer et à utiliser le compilateur en batch solc.
Nous parlerons également de ce qu'on appelle l'Interface Binaire d'Application (ABI) et vous apprendrons à l'utiliser.
Sixième leçon est consacrée à la création de scripts JavaScript fonctionnant sous Node.js et exécutant des opérations avec des contrats intelligents Solidity.
Vous installerez Node.js sur les systèmes d'exploitation Ubuntu, Debian et Rasberian, écrirez des scripts pour publier un contrat intelligent dans un réseau local Ethereum et appeler ses fonctions.
De plus, vous apprendrez à transférer des fonds entre des comptes normaux à l'aide de scripts, ainsi qu'à les créditer sur des comptes de contrats intelligents.
Dans la septième leçon vous apprendrez à installer et à utiliser l'environnement intégré Truffle, populaire parmi les développeurs de contrats intelligents Solidity. Vous apprendrez à créer des scripts JavaScript appelant des fonctions de contrats à l'aide du module truffle-contract, et à tester votre contrat intelligent avec les outils de Truffle.
Huitième leçon est consacrée aux types de données Solidity. Vous écrirez des contrats intelligents traitant de types de données tels que des entiers signés et non signés, des nombres signés, des chaînes de caractères, des adresses, des variables de types complexes, des tableaux, des énumérations, des structures et des dictionnaires.
Dans la neuvième leçon Vous ferez un pas de plus vers la création de contrats intelligents pour le réseau principal Ethereum. Vous apprendrez à publier des contrats à l'aide de Truffle dans un réseau privé Geth, ainsi que dans le réseau de test Rinkeby. Le débogage d'un contrat intelligent sur le réseau Rinkeby est très utile avant sa publication sur le réseau principal — tout y est presque réel, mais gratuit.
Dans le cadre de ce cours, vous allez créer un nœud du réseau de test Rinkeby, l'approvisionner en fonds et publier un contrat intelligent.
Leçon 10 est consacrée aux stockages de données distribués Ethereum Swarm. En utilisant des stockages distribués, vous économisez sur le stockage de grandes quantités de données dans la blockchain Ethereum.
Dans cette leçon, vous créerez un stockage local Swarm, effectuerez des opérations d'écriture et de lecture de fichiers, ainsi que de répertoires contenant des fichiers. Ensuite, vous apprendrez à travailler avec la passerelle publique Swarm, à écrire des scripts pour accéder à Swarm depuis Node.js, ainsi qu'à l'aide du module Perl Net::Ethereum::Swarm.
L'objectif de la leçon 11 est de maîtriser le travail avec les contrats intelligents Solidity en utilisant le populaire langage de programmation Python et le framework Web3.py. Vous installerez ce framework, écrirez des scripts pour compiler et publier un contrat intelligent, ainsi que pour appeler ses fonctions. Web3.py sera utilisé à la fois seul et en conjonction avec l'environnement de développement intégré Truffle.
Lors de la leçon 12 vous apprendrez à transmettre des données entre des contrats intelligents et le monde réel à l'aide d'oracles. Cela vous sera utile pour obtenir des données à partir de sites Web, d'appareils IoT, de divers instruments et capteurs, et pour envoyer des données depuis des contrats intelligents vers ces appareils. Dans la partie pratique de la leçon, vous créerez un oracle et un contrat intelligent qui obtient le taux de change actuel du dollar américain en roubles à partir du site de la Banque centrale de la Fédération de Russie.
Leçon 1. Introduction à la blockchain et au réseau EthereumL'objectif de la leçon : se familiariser avec les principes de fonctionnement de la blockchain Ethereum, ses domaines d'application et la terminologie principale.
Exercices pratiques : aucun exercice n'est prévu dans cette leçon.
Il est peu probable qu'il existe aujourd'hui un développeur de logiciels qui n'ait jamais entendu parler de la technologie blockchain, des cryptomonnaies, du Bitcoin, des ICO, des contrats intelligents, 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 maîtrisez toutes les subtilités des technologies de cryptomonnaie et des contrats intelligents, vous ne devriez pas avoir de problèmes pour appliquer ces connaissances dans la pratique.
Il convient de noter qu'il y a beaucoup de spéculations autour des cryptomonnaies et des blockchains. Nous laisserons de côté les réflexions sur les fluctuations des cours des cryptomonnaies, la création de pyramides, les subtilités de la législation sur les cryptomonnaies, etc. Dans notre cours, nous allons nous concentrer principalement sur les aspects techniques de l'application des contrats intelligents de la blockchain Ethereum (Ethereum) et du développement d'applications décentralisées (DApp).
Qu'est-ce que la blockchain
La blockchain est une chaîne de blocs de données, reliés entre eux d'une manière spécifique. Au début de la chaîne se trouve le premier bloc, appelé bloc de naissance ou bloc génésique. Suit ensuite le deuxième, puis le troisième, et ainsi de suite.
Tous ces blocs de données sont automatiquement répliqués sur de nombreux nœuds du réseau blockchain. Cela permet un stockage décentralisé des données de la blockchain.
Vous pouvez imaginer le système blockchain comme un grand nombre de nœuds (serveurs physiques ou virtuels) reliés en réseau et répliquant tous les changements dans la chaîne de blocs de données. C'est comme un gigantesque ordinateur multi-serveurs, dont les nœuds (serveurs) peuvent être dispersés dans le monde entier. Vous pouvez également ajouter votre ordinateur au réseau blockchain.
Base de données distribuée
La blockchain peut être considéré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 fonctionnera tant qu'il y a au moins un nœud stockant tous les blocs de la blockchain.
Registre de données distribué
La blockchain peut être envisagée comme un registre distribué de données et d'opérations (transactions). Un autre nom pour ce registre est le grand livre.
Dans un registre distribué, il est possible d'ajouter des données, mais il est impossible de les modifier ou de les supprimer. Cette impossibilité est notamment réalisée grâce à l'utilisation d'algorithmes cryptographiques, de méthodes spécifiques d'ajout de blocs dans la chaîne et d'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. Elles limitent les utilisateurs de la blockchain en ne leur permettant d'accéder qu'à leurs propres blocs de données.
Transactions
La blockchain stocke des informations sur les opérations (transactions) dans des blocs. Ainsi, les anciennes transactions, déjà réalisé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é de manière immuable dans la blockchain. Par conséquent, la blockchain peut être utilisée, par exemple, pour le stockage sécurisé des opérations bancaires, des informations sur les droits d'auteur, l'historique des propriétaires de biens immobiliers, etc.
La blockchain Ethereum contient ce qu'on appelle les états du système. Au fur et à mesure que les transactions sont exécutées, l'état change de l'initial à l'actuel. Les transactions sont enregistrées dans des blocs.
Blockchains publiques et privées
Il convient de noter que tout ce qui a été dit ne s'applique qu'aux soi-disant réseaux blockchain publics, qui ne peuvent être contrôlés par aucun individu ou entité juridique, agence gouvernementale ou gouvernement.
Les soi-disant réseaux blockchain privés sont entièrement contrôlés par leurs créateurs, et tout y est possible, par exemple, le remplacement complet de tous les blocs de la chaîne.
Applications pratiques de la blockchain
À quoi peut servir la blockchain ?
En résumé, la blockchain permet d'effectuer des opérations (transactions) de manière sécurisée entre des personnes ou des entreprises qui ne se font pas confiance. 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. Ainsi, des registres distribués fiables de divers types de documents peuvent être créés sur la base de la blockchain.
Bien sûr, vous savez que les systèmes de cryptomonnaie sont basés sur des blockchains, destinés à remplacer l'argent liquide traditionnel. L'argent liquide est également connu sous le nom d'argent fiduciaire (Fiat Money).
La blockchain garantit le stockage et l'immuabilité des transactions enregistrées dans des blocs, c'est pourquoi elle peut être utilisée pour créer des systèmes de cryptomonnaie. Elle contient toute l'historique de la transmission de crypto-fonds entre différents utilisateurs (comptes), chaque opération étant traçable.
Bien que les opérations au sein des systèmes de cryptomonnaie puissent être anonymes, le retrait de cryptomonnaie et l'échange contre de l'argent fiduciaire entraînent généralement la révélation de l'identité du propriétaire de l'actif cryptographique.
Les soi-disant contrats intelligents, qui sont des logiciels fonctionnant sur le réseau Ethereum, permettent d'automatiser le processus de conclusion des affaires et le contrôle de leur exécution. C'est particulièrement efficace si le paiement de l'affaire est effectué en cryptomonnaie Ether.
La blockchain Ethereum et les contrats intelligents Ethereum, écrits en langage de programmation Solidity, peuvent être utilisés, par exemple, dans les domaines suivants :
- alternative à la certification notariale des documents ;
- stockage du registre des biens immobiliers et des informations sur les opérations concernant ces biens ;
- stockage d'informations sur les droits d'auteur pour des œuvres de propriété intellectuelle (livres, images, œuvres musicales, etc.) ;
- création de systèmes de vote indépendant ;
- secteur financier et bancaire ;
- logistique à l'échelle internationale, suivi du déplacement des marchandises ;
- stockage de données personnelles en tant qu'analogue au système d'identification ;
- transactions sécurisées dans le domaine commercial ;
- stockage des résultats des examens médicaux, ainsi que de l'historique des procédures prescrites
Problèmes liés à la blockchain
Mais, bien sûr, tout n'est pas si simple qu'il pourrait sembler !
Il existe des problèmes de vérification des données avant leur ajout à la blockchain (par exemple, ne sont-elles pas falsifiées ?), des problèmes de sécurité des logiciels système et applicatifs utilisés pour travailler avec la blockchain, des problèmes liés à la possibilité d'utiliser des méthodes d'ingénierie sociale pour accéder aux portefeuilles de cryptomonnaie, etc.
Encore une fois, s'il ne s'agit pas d'une blockchain publique dont les nœuds sont dispersés dans le monde entier, mais d'une blockchain privée appartenant à une personne ou à une organisation, alors le niveau de confiance ici ne sera pas supérieur à celui de la personne ou de l'organisation en question.
Il convient également de considérer que les données enregistrées dans la blockchain deviennent accessibles à tous. En ce sens, la blockchain (surtout publique) n'est pas adaptée au stockage d'informations confidentielles. Cependant, le fait que les informations sur la blockchain ne peuvent pas être modifiées peut aider à prévenir ou à enquêter sur divers types de fraudes.
Les applications décentralisées d'Ethereum seront pratiques si elles sont payées en cryptomonnaie. Plus il y a de personnes possédant des cryptomonnaies ou prêtes à en acheter, plus les applications DApp et les contrats intelligents gagneront en popularité.
Parmi les problèmes généraux de la blockchain qui compliquent son application pratique, on peut mentionner la vitesse limitée d'ajout de nouveaux blocs et le coût relativement élevé des transactions. Mais les technologies dans ce domaine évoluent rapidement, et il est à espérer 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 isolé de machines virtuelles et n'ont pas accès aux données du monde réel. En particulier, le programme d'un contrat intelligent ne peut pas lui-même lire les données depuis des sites ou des dispositifs physiques (capteurs, contacts, etc.), ni transmettre des données à des dispositifs externes. Ce problème et les moyens de le résoudre seront abordés lors de la leçon consacrée aux soi-disant Oracles — des intermédiaires d'information pour les contrats intelligents.
Il existe également des restrictions législatives. Dans certains pays, par exemple, il est interdit d'utiliser la cryptomonnaie comme moyen de paiement, mais il est possible de la posséder en tant qu'actif numérique, semblable à des valeurs mobilières. Ces actifs peuvent être achetés et vendus sur une bourse. Quoi qu'il en soit, lors de la création d'un projet lié aux cryptomonnaies, il est essentiel de se familiariser avec la législation du pays sous la juridiction duquel votre projet tombe.
Comment la chaîne de blocs est-elle formée ?
Comme nous l'avons déjà mentionné, la blockchain est simplement une chaîne de blocs de données. D'abord, le premier bloc de cette chaîne est formé, puis le deuxième lui est ajouté, et ainsi de suite. Les données des transactions sont supposées être stockées dans les blocs et ajoutées au dernier bloc.
Sur la figure 1.1, nous avons montré le cas le plus simple de séquence de blocs, où le premier bloc référence le suivant.

Figure 1.1. Séquence simple de blocs
Dans ce cas, cependant, il est très facile de falsifier le contenu de n'importe quel bloc de la chaîne, car les blocs ne contiennent aucune information pour protéger contre les modifications. Étant donné que la blockchain est destinée à des utilisateurs et entreprises n'ayant pas confiance entre eux, on peut conclure que cette méthode de stockage des données n'est pas adaptée à la blockchain.
S'attaquons à la protection des blocs contre la falsification. Dans un premier temps, nous allons essayer de protéger chaque bloc avec une somme de contrôle (figure 1.2).

Figure 1.2. Ajout d'une protection des données des blocs par une somme de contrôle
Maintenant, un attaquant ne peut pas simplement modifier un bloc, car celui-ci contient la 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, l'une des fonctions de hachage peut être utilisée, telle 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 caractères de longueur constante) à la suite d'opérations irréversibles sur le bloc de données. Les opérations dépendent du type de fonction de hachage.
Même une petite modification du contenu du bloc de données entraînera également un changement de la valeur de la fonction de hachage. En analysant la valeur de la fonction de hachage, il est impossible de reconstruire le bloc de données pour lequel elle a été calculée.
Une telle protection sera-t-elle suffisante ? Malheureusement, non.
Dans ce schéma, la somme de contrôle (fonction de hachage) protège uniquement des blocs individuels, mais pas toute la chaîne de blocs. En connaissant l'algorithme de calcul de la fonction de hachage, un attaquant peut facilement remplacer le contenu d'un bloc. Rien ne l'empêche de supprimer des blocs de la chaîne ou d'en ajouter de nouveaux.
Pour protéger toute la chaîne dans son ensemble, on peut stocker dans chaque bloc, en plus des données, le hachage des données du bloc précédent (figure 1.3).

Figure 1.3. Ajout dans le bloc de données du hachage du bloc précédent
Dans ce schéma, pour modifier un bloc, il est nécessaire de recalculer les fonctions de hachage de tous les blocs suivants. On pourrait se demander où est le problème ?
Dans les blockchains réelles, des difficultés artificielles ont été ajoutées pour l'ajout de nouveaux blocs — des algorithmes nécessitant beaucoup de ressources de calcul sont utilisés. Étant donné que pour apporter des modifications à un bloc, il faut recalculer non seulement ce bloc mais tous les suivants, cela rend la tâche extrêmement difficile.
Rappelons également que les données de la blockchain sont stockées (dupliquées) sur de nombreux nœuds du réseau, c'est-à-dire qu'un stockage décentralisé est utilisé. Cela complique considérablement la falsification d'un bloc, car les modifications doivent être apportées sur tous les nœuds du réseau.
Puisque les blocs conservent des informations sur le bloc précédent, il est possible de vérifier le contenu de tous les blocs de la chaîne.
Blockchain Ethereum
La blockchain Ethereum est une plateforme sur laquelle il est possible de créer des applications décentralisées DApp. Contrairement à d'autres plateformes, Ethereum permet d'utiliser ce que l'on appelle des contrats intelligents (smart contracts), écrits dans le langage de programmation Solidity.
Cette plateforme a été créée en 2013 par Vitalik Buterin, fondateur du magazine Bitcoin Magazine, et lancée en 2015. Tout ce que nous étudierons ou ferons dans notre cours a trait à la blockchain Ethereum et aux contrats intelligents Solidity.
Minage ou comment les blocs sont créés
Le minage (mining) est un processus assez complexe et gourmand en ressources pour ajouter de nouveaux blocs à la chaîne de blockchain, et ne consiste pas simplement à « extraire des cryptomonnaies ». Le minage assure le bon fonctionnement de la blockchain, car c'est ce processus qui est responsable de l'ajout des transactions à la blockchain Ethereum.
Les personnes et organisations qui se chargent d'ajouter des blocs sont appelées mineurs (miner).
Le logiciel (SO) fonctionnant sur les nœuds des mineurs tente de trouver pour le dernier bloc le paramètre de hachage appelé Nonce, afin d'obtenir une certaine valeur de fonction de hachage, comme spécifié par le réseau. L'algorithme de hachage Ethash, utilisé dans Ethereum, permet d'obtenir la valeur du Nonce uniquement par essais successifs.
Si un nœud de mineur a trouvé la bonne valeur de Nonce, cela représente ce qu'on appelle une preuve de travail (PoW, Proof-of-work). Dans ce cas, si le bloc est ajouté au réseau Ethereum, le mineur reçoit une certaine récompense en devise du réseau — Ether. Au moment de la rédaction de notre livre, la récompense est de 5 Ether, mais elle sera réduite avec le temps.
Ainsi, les mineurs Ethereum assurent le fonctionnement du réseau en ajoutant des blocs et reçoivent pour cela une rémunération en cryptomonnaie. Vous trouverez de nombreuses informations sur les mineurs et le minage sur Internet, mais nous allons nous concentrer sur la création de contrats Solidity et d'applications décentralisées DApp sur le réseau Ethereum.
Résumé de la leçon
Lors de la première leçon, vous avez été introduit au blockchain et appris que celui-ci est une séquence de blocs structurée de manière particulière. Le contenu des blocs précédemment enregistrés ne peut pas être modifié, car cela nécessiterait de recalculer tous les blocs suivants sur de nombreux nœuds du réseau, ce qui nécessite beaucoup de ressources et de temps.
Le blockchain peut être utilisé pour conserver les résultats des transactions. Sa principale fonction est d'organiser l'exécution sécurisée des transactions entre des parties (personnes et organisations) entre lesquelles il n'y a pas de confiance. Vous avez appris dans quels domaines spécifiques du commerce et quels secteurs le blockchain Ethereum et les contrats intelligents Solidity peuvent être utilisés. Cela inclut le secteur bancaire, l'enregistrement des droits de propriété, des documents, etc.
Vous avez également appris que l'utilisation du blockchain peut entraîner divers problèmes. Il s'agit de problèmes de vérification de l'information ajoutée au blockchain, de la vitesse de traitement du blockchain, du coût des transactions, de la problématique de l'échange de données entre les contrats intelligents et le monde réel, ainsi que des attaques potentielles des malfaiteurs destinées à dérober des fonds en cryptomonnaie des comptes utilisateurs.
Nous avons également brièvement évoqué le minage en tant que processus d'ajout de nouveaux blocs au blockchain. Le minage est nécessaire pour effectuer des transactions. Ceux qui s'occupent du minage assurent le bon fonctionnement du blockchain et reçoivent pour cela une récompense en cryptomonnaie.
Leçon 2. Préparation de l'environnement de travail sous Ubuntu et DebianChoix du système d'exploitation
Installation des utilitaires nécessaires
Installation de Geth et Swarm sous Ubuntu
Installation de Geth et Swarm sous Debian
Préparation préalable
Téléchargement du distributeur Go
Configuration des variables d'environnement
Vérification de la version Go
Installation de Geth et Swarm
Création d'une blockchain privée
Готовим файл genesis.json
Création d'un répertoire de travail
Création d'un compte
Démarrage de l'initialisation du nœud
Options de démarrage du nœud
Connexion à notre nœud
Gestion du minage et vérification du solde
Fin de la console Geth
Résumé de la leçon
Leçon 3. Préparation de l'environnement de travail sur Raspberry Pi 3Préparation de Raspberry Pi 3 pour le travail
Installation de Raspbian
Installation des mises à jour
Activation de l'accès SSH
Configuration d'une adresse IP statique
Installation des utilitaires nécessaires
Installation de Go
Téléchargement du distributeur Go
Configuration des variables d'environnement
Vérification de la version Go
Installation de Geth et Swarm
Création d'une blockchain privée
Vérification du compte et du solde
Résumé de la leçon
Leçon 4. Comptes et transfert de fonds entre comptesAffichage et ajout de comptes
Affichage de la liste des comptes
Ajout d'un compte
Options de la commande geth account
Mots de passe des comptes
Cryptomonnaie dans Ethereum
Unités monétaires Ethereum
Détermination du solde actuel de nos comptes
Transfert de fonds d'un compte à un autre
Méthode eth.sendTransaction
Affichage de l'état de la transaction
Reçu de la transaction
Résumé de la leçon
Leçon 5. Publication du premier contratContrats intelligents dans Ethereum
Exécution d'un contrat intelligent
Machine virtuelle Ethereum
Environnement de développement intégré Remix Solidity IDE
Démarrer la compilation
Appel des fonctions du contrat
Publication du contrat dans un réseau privé
Obtenir la définition de l'ABI et le code binaire du contrat
Publication du contrat
Vérification de l'état de la transaction de publication du contrat
Appel des fonctions du contrat
Compilateur de paquet solc
Installation de solc sur Ubuntu
Installation de solc sur Debian
Compilation du contrat HelloSol
Publication du contrat
Installation de solc sur Raspbian
Résumé de la leçon
Урок 6. Смарт-контракты и Node.jsУстановка Node.js
Installation sur Ubuntu
Installation sur Debian
Installation et démarrage de Ganache-cli
Installation de Web3
Installation de solc
Installation de Node.js sur Raspbian
Script pour obtenir la liste des comptes dans la console
Script pour publier un contrat intelligent
Démarrage et récupération des paramètres
Récupération des paramètres de démarrage
Compilation du contrat
Débloquer le compte
Chargement de l'ABI et du code binaire du contrat
Estimation du nombre de gaz nécessaire
Création d'un objet et démarrage de la publication du contrat
Démarrage du script de publication du contrat
Appel des fonctions du contrat intelligent
Est-il possible de mettre à jour un contrat intelligent publié
Travailler avec Web3 version 1.0.x
Obtenir la liste des comptes
Publication du contrat
Appel des fonctions du contrat
Transfert de fonds d'un compte à un autre
Transfert de fonds vers le compte du contrat
Mise à jour du contrat intelligent HelloSol
Création d'un script pour afficher le solde du compte
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Approvisionnement du contrat intelligent
Résumé de la leçon
Leçon 7. Introduction à TruffleInstallation de Truffle
Création du projet HelloSol
Création du répertoire et des fichiers du projet
Catalogue des contrats
Catalogue des migrations
Catalogue de test
Файл truffle-config.js
Compilation du contrat HelloSol
Lancement de la publication du contrat
Appel des fonctions du contrat HelloSol dans l'invitation Truffle
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
Installation du module truffle-contract
Appel des fonctions du contrat getValue et getString
Appel des fonctions du contrat setValue et setString
Modification du contrat et nouvelle publication
Travailler avec Web3 version 1.0.x
Apporter des modifications au contrat intelligent HelloSol
Scripts pour appeler les méthodes du contrat
Tests dans Truffle
Test sur Solidity
Test sur JavaScript
Résumé de la leçon
Leçon 8. Types de données SolidityContrat pour l'étude des types de données
Types de données booléens
Entiers non signés et entiers signés
Nombres à virgule fixe
Adresse
Variables de types complexes
Tableaux de taille fixe
Tableaux dynamiques
Énumération
Structures
Dictionnaires mapping
Résumé de la leçon
Leçon 9. Migration des contrats dans un réseau privé et dans le réseau RinkebyPublication du contrat depuis Truffle dans un réseau privé Geth
Préparation d'un nœud de réseau privé
Préparation du contrat pour fonctionner
Compilation et migration du contrat dans le réseau Truffle
Lancement de la migration dans le réseau local geth
Extraction des artefacts Truffle
Publication du contrat depuis Truffle dans le réseau de test Rinkeby
Préparation d'un nœud Geth pour travailler avec Rinkeby
Synchronisation du nœud
Ajout de comptes
Alimentation d'un compte Rinkeby avec de l'Ether
Lancement de la migration du contrat dans le réseau Rinkeby
Consultation des informations sur le contrat dans le réseau Rinkeby
Console Truffle pour le réseau Rinkeby
Une manière plus simple d'appeler les fonctions du contrat
Вызов методов контракта при помощи Node.js
Transfert de fonds entre comptes dans la console Truffle pour Rinkeby
Résumé de la leçon
Leçon 10. Stockage décentralisé des données Ethereum SwarmComment fonctionne Ethereum Swarm
Installation et lancement de Swarm
Opérations avec des fichiers et des répertoires
Téléchargement d'un fichier dans Ethereum Swarm
Lecture d'un fichier depuis Ethereum Swarm
Consultation du manifeste du fichier téléchargé
Téléchargement de répertoires avec des sous-répertoires
Lecture d'un fichier depuis le répertoire téléchargé
Utilisation d'une passerelle publique Swarm
Обращение к Swarm из скриптов Node.js
Module Perl Net::Ethereum::Swarm
Installation du module Net::Ethereum::Swarm
Écriture et lecture de données
Résumé de la leçon
Leçon 11. Cadre Web3.py pour travailler avec Ethereum en PythonInstallation de Web3.py
Mise à jour et installation des packages nécessaires
Installation du module easysolc
Publication du contrat avec Web3.py
Compilation du contrat
Connexion au fournisseur
Exécution de la publication du contrat
Sauvegarde de l'adresse du contrat et abi dans un fichier
Démarrage du script de publication du contrat
Appel des méthodes du contrat
Lecture de l'adresse et abi du contrat à partir du fichier JSON
Connexion au fournisseur
Création d'un objet contrat
Appel des méthodes du contrat
Truffle et Web3.py
Résumé de la leçon
Leçon 12. OraclesUn contrat intelligent peut-il avoir confiance dans les données du monde extérieur?
Les oracles en tant qu'intermédiaires d'information de la blockchain
Source de données
Code pour représenter les données de la source
Oracle pour enregistrer le taux de change dans la blockchain
Contrat USDRateOracle
Mise à jour du taux de change dans le smart contract
Utilisation d'un fournisseur Web Socket
Attente d'un événement RateUpdate
Traitement de l'événement RateUpdate
Initiation de la mise à jour des données dans le smart contract
Résumé de la leçon
Source : habr.com
