Comment apprendre la solidité et démarrer la programmation Blockchain

La programmation blockchain est devenue l’une des sphères logicielles les plus payantes et les plus stimulantes de la dernière décennie. Bien que les blockchains soient indépendantes du langage et que de nombreux langages existants, tels que C ++ et JavaScript (JS), soient utilisés par les ingénieurs de la blockchain, certaines tâches ne pouvaient pas être facilement réalisées par les langages existants, ce qui a ouvert la demande de nouveaux, options spécifiques à la cryptographie. L’un de ces langages est Solidity.

La solidité est née comme un élément central de l’écosystème Ethereum. Il a absorbé C ++, JavaScript et Python. Il possède de nombreuses fonctionnalités contemporaines telles que les bibliothèques et l’héritage. Solidity est conçu pour écrire des programmes qui interagissent avec les comptes Ethereum, appelés contrats intelligents. Les contrats intelligents sont exécutés sur la machine virtuelle Ethereum (EVM), permettant aux utilisateurs qui les utilisent d’effectuer des tâches telles que le financement participatif, les enchères à l’aveugle, le vote et bien d’autres de manière décentralisée. L’application tueur la plus célèbre des contrats intelligents était le financement décentralisé dans les ICO, qui a lancé le rallye haussier sur les marchés de la cryptographie en 2017.

Que vous soyez un développeur expérimenté ou que vous débutiez dans la crypto, c’est une bonne idée de commencer à apprendre Solidity, car les contrats intelligents sont devenus un élément crucial de l’écosystème de la blockchain. En plus d’être activement implémentés par les dApps, ils sont activement intégrés dans les blockchains de la couche infrastructure et même dans Bitcoin via des fournisseurs comme RSK. En sachant comment construire des contrats intelligents, vous rendrez votre carrière blockchain plus durable et serez en mesure de produire des solutions de meilleure qualité. Ne nous en tirons plus et nous salissons les mains avec le codage!

Comprendre les bases d’un contrat intelligent

Un compte de contrat intelligent se compose de trois sections: solde, stockage et code. Le solde représente la quantité d’Ethereum d’un contrat intelligent. Le stockage contient des données telles que des chaînes et des tableaux spécifiques à une application. La section de code contient le code machine brut qui est compilé à partir de ce que nous écrivons dans Solidity.

Contrairement aux comptes d’utilisateurs, les comptes de contrats intelligents ne sont pas externes aux réseaux respectifs. En d’autres termes, vous pouvez utiliser votre portefeuille avec divers réseaux tels que Kovan et Ropsten, mais vous ne pouvez pas le faire avec un contrat intelligent. Les contrats intelligents sont internes.

Chaque contrat intelligent a une source, qui est stockée sur l’appareil et les instances d’un auteur, qui sont stockées sur la blockchain. Afin de créer une instance (compte) d’un contrat intelligent, nous devons le déployer sur le réseau. Cela ressemble beaucoup à la relation entre les classes et les instances dans la programmation orientée objet (POO) traditionnelle et les langages qui la représentent (JS, Ruby). Pour vous donner une représentation plus visuelle, créons une classe “Vélo” et ajoutons-en une instance.

Cours de vélo & amp; exempleImage par Utoday

Ce que nous allons écrire est une définition de contrat, qui sera ensuite exécutée via un compilateur qui produira deux fichiers: le bytecode et l’interface binaire d’application (ABI). Le bytecode est ce qui sera réellement transmis à l’EVM et ABI est une couche entre le bytecode et le code JavaScript normal qui permet de créer une interface utilisateur (UI)..

Choisir un IDE & version de Solidity

Avant de commencer, nous avons besoin d’un environnement de développement intégré (IDE) approprié. En d’autres termes, nous avons besoin d’un terminal pratique avec les outils nécessaires pour écrire notre code. Pour les besoins de ce didacticiel, nous choisirons Remix, un IDE créé par la fondation Ethereum qui permet d’écrire, de tester, de déboguer, de lancer des contrats intelligents et beaucoup plus. Vous pouvez l’utiliser directement dans le navigateur ou le télécharger localement si vous le souhaitez.

Une fois que vous lancez Remix, vous verrez l’éditeur de code au centre, le gestionnaire de fichiers à gauche et un compilateur à droite.

Fenêtre Remix initialeImage par Utoday

Il y aura du code pré-écrit – nous n’en aurons pas besoin. Pour créer le tout premier contrat intelligent, appuyez sur l’icône du petit plus dans le coin supérieur gauche du terminal et donnez-lui un nom.

Créer un nouveau projet dans RemixImage par Utoday

Comme nous avons le document blank.sol maintenant, nous devons spécifier la version de Solidity que le compilateur exécutera. Au moment de ce tutoriel, la dernière version est la 0.5.7. Si vous n’êtes pas sûr de la version à utiliser, vous pouvez spécifier une plage de versions.

2 types de spécification de la version de SolidityImage par Utoday

Enfin, donnons un nom à notre contrat intelligent, suivi d’une parenthèse.

Nommage de contrat intelligentImage par Utoday

Rédaction de votre premier contrat intelligent

Une fois que notre canevas est prêt, il est temps de définir les blocs de construction de base – les variables. Bien que les ingénieurs logiciels expérimentés n’aient aucun problème à comprendre ce concept, nous le présenterons brièvement aux débutants. Les variables sont des espaces réservés pour des blocs d’informations qui sont référencés ultérieurement par un programme qui les exécute.

Créons quelques variables: une chaîne (une séquence de symboles) et un entier (un nombre). Dans le cas d’Ethereum, les variables sont stockées dans la blockchain avec le reste des parties des contrats et peuvent donc être consultées et mises à jour de n’importe où. Une autre caractéristique clé des variables Solidity est que vous pouvez les rendre privées en écrivant «privé» à côté des variables. Enfin, pour les entiers, Solidity a deux types: signé (peut être positif & négatif) et non signé (ne peut être que positif). Pour spécifier une variable non signée, nous devons simplement mettre «u» devant elle.

Une chaîne privée et un entierImage par Utoday

Une fois que nous avons la variable «nom», nous devons écrire les méthodes de réglage et de l’obtenir. Cela ressemble à une fonction JS. N’oubliez pas que Solidity est typé statiquement, nous devons donc définir des types de variables. Désormais, toute valeur que nous mettons dans “setName” définira la chaîne “name”. Pour le getter, nous utiliserons ‘getName’ et spécifierons la variable que nous nous attendons à voir. Il est maintenant temps de faire de même pour la variable «âge». La méthode est construite de la même manière que «getName».

Déterminants et obtenteurs de nom / d'âgeImage par Utoday

Testons notre petit morceau de code. Accédez à l’onglet “Exécuter” du compilateur et appuyez sur “Déployer” sous le nom de votre contrat. Tout en bas du compilateur, vous verrez maintenant la section «Contrats déployés» qui contient nos méthodes. Afin de passer un nom à la valeur “newName”, nous devons nous assurer que notre chaîne est écrite en JSON, sinon, le “getName” ne retournera rien. Pour le «setAge», indiquez simplement votre âge sans guillemets. Comme vous le voyez, nous pouvons désormais définir et recevoir les variables «nom» et «âge» via notre contrat intelligent.

Compilateur, avec un nom et un âgeImage par Utoday

Définir Wei et Gas

L’une des caractéristiques les plus remarquables des contrastes intelligents est que pour les déployer sur le réseau Ethereum, vous devrez lancer une transaction, ce qui coûte une somme d’argent payée en Ether. Il est essentiel de comprendre comment les frais sont utilisés dans le système, car ils seront déduits chaque fois que vous interagissez avec EVM.

Qu’est-ce que Wei?

Supposons qu’en lisant jusqu’ici notre tutoriel, vous avez utilisé Bitcoin au moins une fois. Vous avez probablement effectué une petite transaction qui était bien inférieure à 1 BTC. Dans ce cas, vous avez utilisé des Satoshis, qui sont quelque chose comme des centimes pour un dollar. Wei est comme un Satoshi – c’est la plus petite partie de 1 Ether. Si nous y pensons en termes de programmation, il s’agit du plus petit entier non signé du réseau. En interagissant avec le réseau, vous rencontrerez principalement Gwei, qui fait référence à Gigawei et équivaut à 1 milliard de Wei.

Qu’est-ce que le gaz?

Le gaz est un élément essentiel du mécanisme d’exécution intelligente des contrats. Il a deux valeurs pour chaque transaction: le gaz consommé et son prix. Il est à noter qu’un utilisateur qui lance une transaction définit ces valeurs. Cependant, si la valeur définie de Gaz ne suffit pas pour traiter une opération spécifique, alors le Gaz sera consommé, mais la transaction échouera. De plus, si le prix du gaz est fixé à un niveau trop bas pour le réseau à un moment donné, la transaction ne sera pas traitée par les nœuds, ce qui finira par la rendre infructueuse. Il existe plusieurs services pour vérifier les valeurs optimales de vos transactions, l’un d’entre eux étant ethgasstation.info. Pour mieux comprendre le gaz et pourquoi il coûte de l’argent, codons-en une partie par nous-mêmes.

Revenez à votre fenêtre Remix et lancez un nouveau fichier. Dans notre exemple, nous l’appellerons «Gaz» et créerons un contrat portant le même nom. Gardez à l’esprit que plus nous aurons besoin de données pour stocker sur la blockchain, plus nous aurons besoin de gaz. Cela étant dit, dans le cadre de ce tutoriel, nous allons créer un contrat bon marché; plus vous y ajouterez, plus les frais seront élevés.

Il y aura une fonction qui renvoie un entier qui est une somme de deux entrées. Pour le rendre le plus léger possible, nous préciserons que notre contrat ne stockera rien sur la blockchain, et pour cela nous mettrons «pur» à côté de la fonction.

Contrat bon marchéImage par Utoday

Vous pouvez maintenant le déployer dans le compilateur et saisir deux nombres quelconques pour obtenir l’entier «c». Pour vérifier le prix de notre transaction, nous devons jeter un œil au terminal situé sous la section code. Il y a un coût de transaction et un coût d’exécution. Le premier fait référence à la quantité de données dont dispose une transaction. Le second fait référence à la quantité de puissance d’EVM requise par la transaction.

Coût du contrat bon marchéImage par Utoday

Il s’agit d’une transaction extrêmement basique qui ne coûte presque rien pour le réseau. En écrivant des contrats intelligents significatifs, vous ajouterez plus de détails, ce qui augmentera leur poids et donc les frais de transaction..

Création & déployer votre propre token ERC20

Regardons les choses en face, la majorité des développeurs de blockchain qui débutent sont impatients de jouer gros et de créer leurs propres blockchains et jetons. Bien qu’il s’agisse d’un sujet extrêmement difficile qui a attiré certains des meilleurs ingénieurs en logiciel d’autres domaines, la création d’un jeton ERC20 de base n’est pas sorcier..

Tout d’abord, nous devons créer un autre fichier dans Remix et télécharger l’interface ERC20, qui est la suivante:

Norme ERC20Image par Utoday

La fonction «totalSupply» nous permet de voir combien de jetons nous avons au total. La fonction «balanceOf» est utilisée pour obtenir des quantités de jetons sur des adresses spécifiques. La fonction «transfert» permet aux utilisateurs d’effectuer des transactions entre eux. Les fonctions “transferFrom”, “Allow” et “approve” sont là pour permettre aux utilisateurs de laisser d’autres utilisateurs initier des transactions en leur nom. Les événements sont les outils de journalisation du grand livre.

En plus de l’interface elle-même, nous aurons besoin d’un fichier.sol séparé pour notre nouveau jeton. Ici, nous allons importer l’interface ERC20 et spécifier le symbole, le nom et les décimales de notre jeton.

Jeton uTodayImage d’Utoday

Avant de le compiler, nous devons spécifier des contraintes.

  • Commençons par l’offre totale – c’est une variable entière constante que nous rendrons privée. L’offre totale de nos jetons sera de 1 million, nous écrivons également une fonction pour renvoyer cette valeur.

  • Deuxièmement, nous devons stocker notre jeton quelque part. Pour cela, nous devrons décrire le mappage qui renverra un solde pour toute adresse spécifiée.

  • Troisièmement, il devrait y avoir une fonction pour les transferts de jetons, qui aura essentiellement une adresse d’un destinataire et une quantité de jetons transférés. Cette fonction devrait également être en mesure de vérifier si un expéditeur a ou non suffisamment de jetons sur son solde, ce qui peut être réalisé par une simple instruction if / then. De plus, nous définirons des conditions pour «_value» de manière à empêcher les utilisateurs d’envoyer des transactions avec 0 jeton, car cela ne ferait qu’inonder le réseau de courrier indésirable..

  • Quatrièmement, nous devons créer le mappage pour les fonctions restantes, qui est un mappage de mappage sur un entier.

  • Ensuite, nous allons spécifier quelques vérificateurs dans les fonctions “approuver” et “autoriser” et mettre des conditions pour le “transferFrom”.

  • Enfin, tous les jetons ne seront pas disponibles sur le marché. Certains jetons sont généralement laissés de côté pour les équipes, les fondations, les conseillers et à d’autres fins. Par conséquent, il est essentiel que nous indiquions clairement le nombre de jetons qui circuleront. Lorsque nous avons créé les jetons, l’approvisionnement en circulation équivaut à notre solde.

Contraintes de jeton uTodayImage d’Utoday

Le code est prêt, alors testons-le. Accédez à l’onglet «Exécuter» du compilateur et déployez notre contrat de jeton. Vous verrez que nous avons nos données symboliques ainsi que l’offre totale, les soldes et les quotas. Félicitations, vous méritez une tape dans le dos!

Pour que notre jeton fonctionne réellement sur le réseau, nous devons déployer le contrat intelligent (notez que c’est différent de le déployer pour le test dans Remix). Pour les besoins de ce tutoriel, nous utiliserons Remix et Metamask, mais il existe d’autres moyens de le faire. Metamask est un programme de portefeuille Ethereum simple mais efficace avec une interface utilisateur agréable qui s’intègre en tant qu’extension à certains des navigateurs les plus populaires. Dans notre cas, nous utiliserons Opera. Tout d’abord, allez à metamask.io et téléchargez l’extension. Une fois que c’est fait, vous verrez une icône de renard en haut à droite de votre navigateur.

Téléchargement de Metamask & amp; emplacement de l'icôneImage d’Utoday

Appuyez sur l’icône et suivez les instructions proposées pour créer un portefeuille. N’oubliez pas de stocker la phrase secrète! Lorsque vous avez votre portefeuille, appuyez sur l’icône Metamask et changez le réseau en «Ropsten» car nous ne voulons pas jouer avec le réseau principal d’Ethereum.

Changement de Metamask en RopstenImage d’Utoday

La dernière étape consiste à générer de l’Ether (malheureusement, vous ne pourrez pas les utiliser pour de vrais achats, mais ils sont nécessaires pour les tests). Dirigez-vous vers faucet.metamask.io et demandez 1 Ether.

Maintenant, vous êtes prêt. Revenez à votre fenêtre Remix et changez l’environnement en «Injected Web3» dans le compilateur. Jetez également un œil à l’onglet Compte – votre adresse doit être la même que celle que vous avez générée avec Metamask. Sélectionnez le contrat intelligent que vous souhaitez déployer, qui est votre contrat de jeton et non l’interface ERC20 et appuyez sur le bouton correspondant. Une fenêtre Metamask apparaîtra avec une transaction, ses détails et des options pour interagir avec elle. Soumettez la transaction et notre jeton prendra vie.

Popup MetamaskImage d’Utoday

Vous pouvez maintenant jouer avec toutes les fonctions que nous avons spécifiées précédemment. Examinons notre contrat d’un autre côté pour vérifier qu’il fonctionne correctement. Comme toute autre blockchain, Ethereum dispose de plusieurs explorateurs de blocs qui servent l’objectif essentiel de surveiller ce qui se passe sur le réseau. Dans notre cas, nous nous en tiendrons à étherscan, bien qu’il existe une poignée d’autres excellentes alternatives. Notez que si vous accédez simplement à etherscan, vous verrez le réseau principal. Comme nous avons besoin de voir le réseau Ropsten, vous devrez mettre «ropsten.» Avant l’adresse du site Web. Recherchez votre adresse et vous verrez deux transactions – une pour l’Ether gratuit que vous avez reçu et une autre pour le déploiement du contrat.

Adresse de l'utilisateur dans EtherscanImage d’Utoday

Pour trouver l’adresse de votre contrat, appuyez sur le TxHash et accédez au champ «À». Ici, vous pouvez vérifier les transactions, le code et les événements de votre contrat intelligent. À ce stade, nous devons vérifier et publier notre contrat. Accédez à la section “Code” et cliquez sur le lien “Vérifier et publier”. Ici, vous devrez à nouveau spécifier le nom de votre token, la version du compilateur (dans notre cas, la dernière version de Solidity que nous avons utilisée était la 0.5.7, nous allons donc nous en tenir à la version du compilateur associée). Vous devez maintenant copier le code de contrat intelligent du jeton avec le code d’interface ERC20 de votre fenêtre Remix vers etherscan et appuyer sur «Vérifier et publier» en bas de l’écran..

Vérification du contrat intelligentImage d’Utoday

Il est temps de revenir à l’adresse de votre contrat. Le code de l’onglet “Code” sera désormais vérifié. En outre, vous disposerez désormais de deux autres onglets: “Lire le contrat” & «Rédiger un contrat». Dans la section lecture, nous pouvons vérifier la fonctionnalité de notre token. Entrez votre adresse (et non celle du contrat) dans le champ «balanceOf» pour voir combien de jetons vous avez; il devrait montrer 1 million que nous avons codé en dur comme l’offre totale et l’avons donné circulant dans notre portefeuille. Cela signifie que notre token fonctionne maintenant correctement sur le testnet.

Recevoir le soldeImage d’Utoday

Résumé

Si vous cherchez à démarrer une carrière dans l’industrie de la cryptographie, vous devez comprendre que malgré sa relative simplicité dans les bases, la blockchain a une profondeur incroyable. Depuis 2017, les blockchains ont considérablement évolué et leurs cas d’utilisation vont au-delà des simples transactions financières. Avec l’avènement d’Ethereum, une toute nouvelle couche de réseaux est apparue, hébergeant diverses dApps et solutions basées sur la blockchain. L’outil derrière cette évolution était un contrat intelligent, et si vous voulez rendre votre expérience plus précieuse et plus pérenne, vous devez savoir comment cela fonctionne..

Bien que vous puissiez coder des contrats intelligents en utilisant d’autres langages, Solidity convient mieux à un tel objectif. De plus, si vous souhaitez devenir développeur Ethereum ou créer un jeton ICO / ERC20 pour votre projet, c’est votre choix. Si vous avez une certaine expérience avec C ++ ou JavaScript, le codage sur Solidity devrait être relativement facile. Vous devrez cependant comprendre certaines différences entre les modèles client-serveur et les modèles décentralisés de lancement de logiciels. Grâce à Ethereum Foundation et à certaines organisations tierces, les développeurs se voient présenter un ensemble d’outils pratiques tels que Remix et Etherscan pour coder et déployer des contrats intelligents.

Nous espérons que notre tutoriel vous a aidé à contourner la majorité des concepts de Solidity pour pouvoir démarrer votre aventure blockchain. N’oubliez pas que vous pouvez toujours consulter la dernière documentation sur Solidity. Nous vous souhaitons bonne chance et serons heureux d’utiliser certains de vos dApps un jour!