Le livre « Créer des contrats intelligents Solidity pour la blockchain Ethereum. Guide pratique"

Le livre « Créer des contrats intelligents Solidity pour la blockchain Ethereum. Guide pratique"
Depuis plus d'un an, je travaille sur le livre « Création de contrats intelligents solides pour la blockchain Ethereum. Guide pratique", et maintenant ce travail est terminé, et le livre publié et disponible en Litres.

J'espère que mon livre vous aidera à commencer rapidement à créer des contacts intelligents Solidity et des DApp distribués pour la blockchain Ethereum. Il se compose de 12 leçons avec des tâches pratiques. Une fois terminés, 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 des contrats intelligents à l'aide d'oracles et travailler avec le réseau de débogage de test Rinkeby.

Le livre s'adresse à tous ceux qui s'intéressent aux technologies de pointe dans le domaine des blockchains et souhaitent acquérir rapidement des connaissances leur permettant de faire un travail intéressant et prometteur.

Vous trouverez ci-dessous la table des matières et le premier chapitre du livre (également sur Litrèse des fragments du livre sont disponibles). J'espère recevoir des commentaires, des commentaires et des suggestions. J'essaierai de prendre tout cela 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 la blockchain Ethereum, mais également acquérir des compétences pratiques dans la création de DApp distribuées dans le langage de programmation Solidity pour ce réseau.

Il vaut mieux non seulement lire ce livre, mais travailler avec lui, en effectuant les tâches pratiques décrites dans les leçons. Pour travailler, vous aurez besoin d'un ordinateur local, d'un serveur virtuel ou cloud sur lequel le système d'exploitation Debian ou Ubuntu est installé. Vous pouvez également utiliser Raspberry Pi pour effectuer de nombreuses tâches.

A la première leçon Nous examinerons les principes de fonctionnement de la blockchain Ethereum et la terminologie de base, et parlerons également des endroits où cette blockchain peut être utilisée.

Objectif deuxième leçon - créez un nœud blockchain Ethereum privé pour poursuivre les travaux dans le cadre de ce cours sur un serveur Ubuntu et Debian. Nous examinerons les fonctionnalités d'installation d'utilitaires de base, tels que geth, qui assure le fonctionnement de notre nœud blockchain, ainsi que le démon de stockage de données décentralisé en essaim.

Troisième leçon vous apprendra à expérimenter Ethereum sur un micro-ordinateur Raspberry Pi bon marché. Vous installerez le système d'exploitation (OS) Rasberian sur le Raspberry Pi, l'utilitaire Geth qui alimente le nœud blockchain et le démon de stockage de données décentralisé Swarm.

Leçon quatre est dédié aux comptes et unités de crypto-monnaie sur le réseau Ethereum, ainsi qu'aux moyens de transférer des fonds d'un compte à un autre depuis la console Geth. Vous apprendrez à créer des comptes, à lancer des transactions de transfert de fonds et à obtenir le statut et le reçu des transactions.

Dans la cinquième leçon Vous vous familiariserez avec les contrats intelligents sur le réseau Ethereum et découvrirez leur exécution par la machine virtuelle Ethereum.

Vous créerez et publierez votre premier contrat intelligent sur le réseau privé Ethereum et apprendrez à appeler ses fonctions. Pour ce faire, vous utiliserez l'IDE Remix Solidity. Vous apprendrez également à installer et à utiliser le compilateur batch Solc.
Nous parlerons également de ce qu'on appelle l'interface binaire d'application (ABI) et vous apprendrons comment l'utiliser.

Sixième leçon est dédié à la création de scripts JavaScript exécutant Node.js et à l'exécution d'opérations avec des contrats intelligents Solidity.

Vous installerez Node.js sur les OS Ubuntu, Debian et Rasberian, rédigerez des scripts pour publier un contrat intelligent sur le réseau local Ethereum et appellerez ses fonctions.

De plus, vous apprendrez comment transférer des fonds entre des comptes réguliers à l'aide de scripts, ainsi que les créditer sur des comptes de contrats intelligents.

Dans la septième leçon Vous apprendrez à installer et à utiliser le framework Truffle, populaire parmi les développeurs de contrats intelligents Solidity. Vous apprendrez à créer des scripts JavaScript qui appellent des fonctions de contrat à l'aide du module truffle-contract et à tester votre contrat intelligent à l'aide de Truffle.

Huitième leçon dédié aux types de données Solidity. Vous rédigerez des contrats intelligents qui fonctionnent avec des types de données tels que des entiers signés et non signés, des nombres signés, des chaînes, des adresses, des variables complexes, des tableaux, des énumérations, des structures et des dictionnaires.

Dans la neuvième leçon Vous serez sur le point de créer des contrats intelligents pour le réseau principal Ethereum. Vous apprendrez à publier des contrats en utilisant Truffle sur le réseau privé Geth, ainsi que sur le testnet Rinkeby. Déboguer un contrat intelligent sur le réseau Rinkeby est très utile avant de le publier sur le réseau principal - presque tout y est réel, mais gratuitement.

Dans le cadre de la leçon, vous créerez un nœud de réseau de test Rinkeby, le financerez avec des fonds et publierez un contrat intelligent.

Leçon 10 dédié au stockage de données distribué Ethereum Swarm. En utilisant le stockage distribué, vous économisez sur le stockage de grandes quantités de données sur la blockchain Ethereum.

Dans ce didacticiel, vous allez créer un stockage Swarm local, effectuer des opérations d'écriture et de lecture sur les fichiers et les répertoires de fichiers. Ensuite, vous apprendrez à travailler avec la passerelle publique Swarm, à écrire des scripts pour accéder à Swarm à partir de Node.js, ainsi qu'à utiliser le module Perl Net::Ethereum::Swarm.

Objectif de la leçon 11 — maîtrisez l'utilisation des contrats intelligents Solidity en utilisant le langage de programmation populaire Python et le framework Web3.py. Vous installerez le framework, rédigerez des scripts pour compiler et publier le contrat intelligent, et appellerez ses fonctions. Dans ce cas, Web3.py sera utilisé à la fois seul et en conjonction avec l'environnement de développement intégré Truffle.

À la leçon 12 vous apprendrez à transférer des données entre des contrats intelligents et le monde réel à l'aide d'oracles. Cela vous sera utile pour recevoir des données de sites Web, d'appareils IoT, de divers appareils et capteurs, et envoyer des données de contrats intelligents à ces appareils. Dans la partie pratique de la leçon, vous créerez un oracle et un contrat intelligent qui recevra le taux de change actuel entre l'USD et les roubles du site Web de la Banque centrale de la Fédération de Russie.

Leçon 1. En bref sur la blockchain et le réseau EthereumLe but de la leçon : se familiariser avec les principes de fonctionnement de la blockchain Ethereum, ses domaines d'application et sa terminologie de base.
Tâches pratiques : non inclus dans cette leçon.

Il n'y a pratiquement aucun développeur de logiciels aujourd'hui qui n'ait entendu parler de la technologie blockchain (Blockchain), des crypto-monnaies (Crypto-monnaie ou Crypto-monnaie), du Bitcoin (Bitcoin), de l'offre initiale de pièces (ICO, Initial coin offer), 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 contrats intelligents, vous ne devriez avoir aucun problème à appliquer ces connaissances dans la pratique.

Il faut dire qu’il y a beaucoup de spéculations autour des cryptomonnaies et des blockchains. Nous laisserons de côté les discussions sur l’évolution des taux des cryptomonnaies, la création de pyramides, les subtilités de la législation sur les cryptomonnaies, etc. Dans notre formation nous nous concentrerons principalement sur les aspects techniques de l'application des contrats intelligents de la blockchain Ethereum (Ethereum, Ether) et du développement d'applications dites décentralisées (Distributed Application, DApp).

Qu'est-ce que la blockchain

La blockchain (Block Chain) est une chaîne de blocs de données connectés les uns aux autres d'une certaine manière. Au début de la chaîne se trouve le premier bloc, appelé bloc primaire (bloc de genèse) ou bloc de genèse. Il est suivi du deuxième, puis du troisième et ainsi de suite.

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 blockchain.
Vous pouvez considérer un système blockchain comme un grand nombre de nœuds (serveurs physiques ou virtuels) connectés dans un réseau et répliquant toutes les modifications dans la chaîne de blocs de données. C'est comme un ordinateur multi-serveur géant, et les nœuds d'un tel ordinateur (serveurs) peuvent être dispersés partout dans le monde. Et vous aussi, vous pouvez ajouter votre ordinateur au réseau blockchain.

Base de données distribuée

Une blockchain peut être considérée comme une base de données distribuée qui est 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 fonctionnera, stockant tous les blocs de la blockchain.

Registre de données distribué

La blockchain peut être considérée comme un registre distribué de données et d’opérations (transactions). Un autre nom pour un tel registre est un grand livre.

Les données peuvent être ajoutées à un grand livre distribué, mais elles ne peuvent pas être modifiées ou supprimées. Cette impossibilité est obtenue notamment grâce à l'utilisation d'algorithmes cryptographiques, d'algorithmes spéciaux d'ajout de blocs à la chaîne et de 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 blockchain en leur donnant uniquement accès à leurs propres blocs de données.

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.

De cette manière, l’intégralité de l’historique des transactions peut être enregistrée sans modification sur la blockchain. Ainsi, la blockchain peut être utilisée, par exemple, pour stocker en toute sécurité des transactions bancaires, des informations sur les droits d'auteur, l'historique des changements de propriétaires, 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 passe de l’état initial à l’état actuel. Les transactions sont enregistrées en blocs.

Blockchains publiques et privées

Il convient de noter ici que tout ce qui est dit n'est vrai que pour les réseaux dits publics de blockchain, qui ne peuvent être contrôlés par aucune personne physique ou morale, aucune agence gouvernementale ou gouvernement.
Les réseaux blockchain dits privés 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 de la blockchain

A quoi peut servir la blockchain ?

En bref, la blockchain permet d'effectuer en toute sécurité des transactions (transactions) 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 être falsifiées ou remplacées après enregistrement. Ainsi, sur la base de la blockchain, il est possible de créer, par exemple, des registres distribués fiables de différents 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é fiat (de Fiat Money).
La blockchain garantit le stockage et l’immuabilité des transactions enregistrées en blocs, c’est pourquoi elle peut être utilisée pour créer des systèmes de cryptomonnaies. Il contient l’historique complet des transferts 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 cryptomonnaie puissent être anonymes, le retrait de cryptomonnaie et son échange contre de la monnaie fiduciaire aboutissent généralement à la révélation de l’identité du propriétaire de l’actif de cryptomonnaie.

Les contrats dits intelligents, qui sont des logiciels fonctionnant sur le réseau Ethereum, vous permettent d'automatiser le processus de conclusion des transactions et de surveiller leur mise en œuvre. Ceci est particulièrement efficace si le paiement de la transaction est effectué à l'aide de 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 :

  • une alternative à la légalisation des documents ;
  • stockage d'un registre d'objets immobiliers et d'informations sur les transactions avec des objets immobiliers ;
  • stockage d'informations de droits d'auteur sur la propriété intellectuelle (livres, images, œuvres musicales, etc.) ;
  • création de systèmes de vote indépendants;
  • Finance et banque;
  • la logistique à l'échelle internationale, suivi du mouvement des marchandises ;
  • stockage de données personnelles comme analogue à un système de carte d'identité ;
  • transactions sécurisées dans le domaine commercial;
  • conserver les résultats des examens médicaux, ainsi que l'historique des actes prescrits

Problèmes avec la 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, sont-elles fausses ?), des problèmes avec la 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, si nous ne parlons pas d'une blockchain publique, dont les nœuds sont dispersés partout dans le monde, mais d'une blockchain privée appartenant à une personne ou à une organisation, alors le niveau de confiance ici ne sera pas supérieur au niveau de confiance. chez cette personne ou cette organisation.

Il faut également tenir compte du fait que les données enregistrées dans la blockchain deviennent accessibles à tous. En ce sens, la blockchain (notamment publique) n’est pas adaptée au stockage d’informations confidentielles. Cependant, le fait que les informations contenues dans la blockchain ne puissent pas être modifiées peut aider à prévenir ou à enquêter sur divers types d’activités frauduleuses.

Les applications décentralisées Ethereum seront pratiques si vous payez leur utilisation avec de la crypto-monnaie. Plus il y aura de personnes possédant une crypto-monnaie ou disposées à l’acheter, plus les DApp et les contrats intelligents deviendront populaires.

Les problèmes courants de la blockchain qui entravent son application pratique incluent la vitesse limitée à laquelle de nouveaux blocs peuvent être ajoutés et le coût relativement élevé des transactions. Mais la technologie dans ce domaine se développe activement et on espère que les problèmes techniques seront résolus au fil du temps.

Un autre problème est que les contrats intelligents sur 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 de contrat intelligent ne peut pas lire lui-même les données des sites ou de tout appareil physique (capteurs, contacts, etc.), et ne peut pas non plus envoyer de données vers des appareils externes. Nous discuterons de ce problème et des moyens de 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 cryptomonnaie comme moyen de paiement, mais vous pouvez la posséder comme une sorte d’actif numérique, au même titre que les titres. Ces actifs peuvent être achetés et vendus en bourse. Dans tous les cas, lors de la création d’un projet fonctionnant avec des crypto-monnaies, vous devez vous familiariser avec la législation du pays sous la juridiction duquel relève votre projet.

Comment se forme une chaîne blockchain

Comme nous l’avons déjà dit, la blockchain est une simple chaîne de blocs de données. Tout d'abord, le premier bloc de cette chaîne est formé, puis le second y est ajouté, et ainsi de suite. Les données de transaction sont supposées être stockées dans des blocs et sont ajoutées au bloc le plus récent.

En figue. 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.

Le livre « Créer des contrats intelligents Solidity pour la blockchain Ethereum. Guide pratique"
Riz. 1.1. Séquence simple de blocs

Avec cette option, 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 permettant de se protéger contre les modifications. Considérant que la blockchain est destinée à être utilisée par des personnes et des entreprises entre lesquelles il n’y a aucune confiance, on peut conclure que cette méthode de stockage des données n’est pas adaptée à la blockchain.

Commençons par protéger les blocs contre la contrefaçon. Dans un premier temps, nous essaierons de protéger chaque bloc avec une somme de contrôle (Fig. 1.2).

Le livre « Créer des contrats intelligents Solidity pour la blockchain Ethereum. Guide pratique"
Riz. 1.2. Ajout d'une protection pour ces blocs avec une somme de contrôle

Désormais, un attaquant ne peut pas simplement modifier le bloc, car il 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, vous pouvez utiliser l'une des fonctions de hachage telles que MD-5, SHA-1, SHA-256, etc. Les fonctions de hachage calculent une valeur (par exemple, une chaîne de texte de longueur constante) en effectuant des opérations irréversibles sur un bloc de données. Les opérations dépendent du type de fonction de hachage.

Même si le contenu du bloc de données change légèrement, la valeur de hachage changera également. 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 les blocs individuels, mais pas la totalité de la blockchain. 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 supprimer des blocs de la chaîne ou d’en ajouter de nouveaux.

Pour protéger l'ensemble de la chaîne, vous pouvez également stocker dans chaque bloc, avec les données, un hachage des données du bloc précédent (Fig. 1.3).

Le livre « Créer des contrats intelligents Solidity pour la blockchain Ethereum. Guide pratique"
Riz. 1.3. Ajouter le hachage du bloc précédent au bloc de données

Dans 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 véritables blockchains, des difficultés artificielles sont en outre créées pour l’ajout de nouveaux blocs : des algorithmes qui nécessitent beaucoup de ressources informatiques sont utilisés. Considérant que pour apporter des modifications à un bloc, vous devez recalculer non seulement ce bloc, mais tous les suivants, cela sera extrêmement difficile à faire.

Rappelons également que les données blockchain sont stockées (dupliquées) sur de nombreux nœuds du réseau, c'est-à-dire Le stockage décentralisé est utilisé. Et cela rend beaucoup plus difficile la simulation d'un blocage, car des modifications doivent être apportées à tous les nœuds du réseau.

Puisque les blocs stockent 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 des DApp distribuées peuvent être créées. Contrairement à d’autres plateformes, Ethereum permet l’utilisation de contrats dits intelligents (smart contracts), écrits dans le langage de programmation Solidity.

Cette plateforme a été créée en 2013 par Vitalik Buterin, fondateur de Bitcoin Magazine, et lancée en 2015. Tout ce que nous étudierons ou ferons dans notre formation concerne spécifiquement la blockchain Ethereum et les contrats intelligents Solidity.

L'exploitation minière ou comment les blocs sont créés

Le minage est un processus plutôt complexe et gourmand en ressources consistant à ajouter de nouveaux blocs à la chaîne blockchain, et pas du tout du « minage de crypto-monnaie ». Le minage assure la fonctionnalité de la blockchain, car c'est ce processus qui est responsable de l'ajout de transactions à la blockchain Ethereum.

Les personnes et les organisations impliquées dans l'ajout de blocs sont appelées mineurs.
Le logiciel exécuté sur les nœuds mineurs essaie de trouver un paramètre de hachage appelé Nonce pour le dernier bloc afin d'obtenir une valeur de hachage spécifique spécifiée par le réseau. L'algorithme de hachage Ethash utilisé dans Ethereum vous permet d'obtenir la valeur Nonce uniquement par recherche séquentielle.

Si le nœud mineur trouve la valeur Nonce correcte, il s'agit alors de ce qu'on appelle la preuve de travail (PoW, Proof-of-work). Dans ce cas, si un bloc est ajouté au réseau Ethereum, le mineur reçoit une certaine récompense dans la devise du réseau - l'Ether. Au moment de la rédaction de cet article, la récompense est de 5 Ether, mais celle-ci sera réduite au fil du temps.

Ainsi, les mineurs d’Ethereum assurent le fonctionnement du réseau en ajoutant des blocs, et reçoivent de l’argent cryptomonnaie pour cela. Il existe de nombreuses informations sur Internet sur les mineurs et le minage, mais nous nous concentrerons sur la création de contrats Solidity et de DApps sur le réseau Ethereum.

Résumé de la leçon

Dans la première leçon, vous vous êtes familiarisé avec la blockchain et avez appris qu'il s'agit d'une séquence de blocs spécialement composée. 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écessiterait beaucoup de ressources et de temps.

La blockchain peut être utilisée pour stocker les résultats des transactions. Son objectif principal est d'organiser des transactions sécurisées entre des parties (personnes et organisations) entre lesquelles il n'y a aucune confiance. Vous avez appris dans quels domaines d'activité spécifiques et dans quels domaines la blockchain Ethereum et les contrats intelligents Solidity peuvent être utilisés. Il s'agit du secteur bancaire, de l'enregistrement des droits de propriété, des documents, etc.

Vous avez également appris que divers problèmes peuvent survenir lors de l’utilisation de la blockchain. Il s'agit de problèmes de vérification des informations ajoutées à la blockchain, de la vitesse de la blockchain, du coût des transactions, du problème de l'échange de données entre les contrats intelligents et le monde réel, ainsi que d'éventuelles attaques d'attaquants visant à voler des fonds de crypto-monnaie sur les comptes d'utilisateurs. .

Nous avons également brièvement parlé du minage comme du processus d’ajout de nouveaux blocs à la blockchain. L’exploitation minière est nécessaire pour effectuer des transactions. Les personnes impliquées dans le minage assurent le fonctionnement de la blockchain et reçoivent pour cela une récompense en cryptomonnaie.

Leçon 2. Préparer un environnement de travail sous Ubuntu et Debian OSSélection du système d'exploitation
Installation des utilitaires nécessaires
Installer Geth et Swarm sur Ubuntu
Installer Geth et Swarm sur Debian
Préparation préliminaire
Téléchargement de la distribution Go
Définition des variables d'environnement
Vérification de la version Go
Installer Geth et Swarm
Créer une blockchain privée
Préparation du fichier genesis.json
Créer un répertoire pour le travail
Créer un compte
Démarrage de l'initialisation du nœud
Options de lancement de nœud
Connectez-vous à notre nœud
Gestion minière et vérification du solde
Arrêt de la console Geth
Résumé de la leçon

Leçon 3. Préparer l'environnement de travail sur Raspberry Pi 3Préparer le Raspberry Pi 3 au travail
Installation de Rasberian
Installation de mises à jour
Activation de l'accès SSH
Définition d'une adresse IP statique
Installation des utilitaires nécessaires
Installation de Go
Téléchargement de la distribution Go
Définition des variables d'environnement
Vérification de la version Go
Installer Geth et Swarm
Créer une blockchain privée
Vérifier votre compte et votre solde
Résumé de la leçon

Leçon 4. Comptes et transfert de fonds entre comptesAfficher et ajouter des comptes
Afficher une liste de comptes
Ajouter un compte
options de commande du compte geth
Mots de passe du compte
Crypto-monnaie en Ethereum
Unités monétaires Ethereum
Nous déterminons le solde actuel de nos comptes
Transférer des fonds d'un compte à un autre
Méthode eth.sendTransaction
Afficher le statut de la transaction
Reçu de transaction
Résumé de la leçon

Leçon 5. Publier votre premier contratContrats intelligents dans Ethereum
Exécution de contrats intelligents
Machine virtuelle Ethereum
Environnement de développement intégré Remix Solidity IDE
Compilation en cours
Appel de fonctions de contrat
Publier un contrat sur un réseau privé
Obtenir la définition ABI et le code binaire du contrat
Publication du contrat
Vérification du statut de la transaction de publication du contrat
Appel de fonctions de contrat
Solc du compilateur de lots
Installer Solc sur Ubuntu
Installer solc sur Debian
Compilation du contrat HelloSol
Publication du contrat
Installer solc sur Rasberian
Résumé de la leçon

Leçon 6. Contrats intelligents et Node.jsInstallation de Node.js
Installation sur Ubuntu
Installation sur Debian
Installer et exécuter Ganache-cli
Installation Web3
Installation de solc
Installer Node.js sur Rasberian
Script pour obtenir une liste de comptes dans la console
Script pour publier un contrat intelligent
Lancer et obtenir les paramètres
Obtenir les options de lancement
Compilation de contrat
Débloquer votre compte
Chargement de l'ABI et du code binaire du contrat
Estimation de la quantité de gaz requise
Créez un objet et commencez à publier un contrat
Exécuter le script de publication du contrat
Appel de fonctions de contrat intelligent
Est-il possible de mettre à jour un contrat intelligent publié ?
Travailler avec Web3 version 1.0.x
Obtenir une liste de comptes
Publication du contrat
Appel de fonctions de contrat
Transférer des fonds d'un compte à un autre
Transférer des fonds sur le compte du contrat
Mise à jour du contrat intelligent HelloSol
Créez un script pour afficher le solde de votre compte
Ajoutez un appel à la fonction getBalance au script call_contract_get_promise.js
Nous rechargeons le compte de contrat intelligent
Résumé de la leçon

Leçon 7. Introduction à la truffeInstallation de Truffe
Créer un projet HelloSol
Création du répertoire et des fichiers du projet
Répertoire des contrats
Migrations de catalogue
Test d'annuaire
fichier truffle-config.js
Compilation du contrat HelloSol
Commencer à publier un contrat
Appel de fonctions de contrat HelloSol dans une invite Truffle
Appel des fonctions du contrat HelloSol à partir d'un script JavaScript exécutant Node.js
Installation du module truffe-contrat
Appel des fonctions contractuelles getValue et getString
Appel des fonctions de contrat setValue et setString
Modification du contrat et republication
Travailler avec Web3 version 1.0.x
Apporter des modifications au contrat intelligent HelloSol
Scripts pour appeler des méthodes de contrat
Tests à la Truffe
Essai de solidité
Test JavaScript
Résumé de la leçon

Leçon 8. Types de données SolidityContrat d'apprentissage 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
Annonce
Des structures
Cartographie des dictionnaires
Résumé de la leçon

Leçon 9. Migration des contrats vers le réseau privé et vers le réseau RinkebyPublication d'un contrat de Truffle sur le réseau privé Geth
Préparation d'un nœud de réseau privé
Préparer un contrat de travail
Compilation et migration d'un contrat vers le réseau Truffle
Démarrage de la migration du réseau local geth
Obtenir des artefacts truffes
Publication d'un contrat de Truffle sur le testnet Rinkeby
Préparer un nœud Geth pour fonctionner avec Rinkeby
Synchronisation des nœuds
Ajouter des comptes
Recharger votre compte Rinkeby avec de l'éther
Lancement de la migration contractuelle vers le réseau Rinkeby
Consultation des informations contractuelles sur le réseau Rinkeby
Console Truffle pour le réseau Rinkeby
Un moyen plus simple d'appeler des fonctions de contrat
Appel de méthodes de contrat à l'aide de Node.js
Transférer des fonds entre comptes dans la console Truffle pour Rinkby
Résumé de la leçon

Leçon 10. Stockage de données décentralisé Ethereum SwarmComment fonctionne l’Ethereum Swarm ?
Installer et lancer Swarm
Opérations avec des fichiers et des répertoires
Télécharger un fichier sur Ethereum Swarm
Lecture d'un fichier depuis Ethereum Swarm
Afficher le manifeste d'un fichier téléchargé
Chargement de répertoires avec sous-répertoires
Lire un fichier à partir d'un répertoire téléchargé
Utiliser une passerelle publique Swarm
Accéder à Swarm à partir des scripts Node.js
Perl Net :: Ethereum :: module Swarm
Installation du module Net::Ethereum::Swarm
Écriture et lecture de données
Résumé de la leçon

Leçon 11. Framework Web3.py pour travailler avec Ethereum en PythonInstallation de Web3.py
Mise à jour et installation des packages nécessaires
Installation du module easysolc
Publier un contrat à l'aide de Web3.py
Compilation de contrat
Connexion à un fournisseur
Exécuter la publication du contrat
Enregistrer l'adresse du contrat et l'abi dans un fichier
Exécuter le script de publication du contrat
Appel de méthodes de contrat
Lire l'adresse et l'abi d'un contrat à partir d'un fichier JSON
Connexion à un fournisseur
Création d'un objet de contrat
Appel de méthodes de contrat
Truffe et Web3.py
Résumé de la leçon

Leçon 12. OraclesUn contrat intelligent peut-il faire confiance aux données du monde extérieur ?
Les oracles comme intermédiaires d'informations blockchain
La 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 OracleTauxUSD
Mettre à jour le taux de change dans un contrat intelligent
Utilisation d'un fournisseur de socket Web
En attente de l'événement RateUpdate
Gestion de l'événement RateUpdate
Lancer une mise à jour des données dans un contrat intelligent
Résumé de la leçon

Source: habr.com

Ajouter un commentaire