À quoi servent les contrats intelligents? – Meilleure programmation
Les jetons sont définis dans les contrats intelligents. Une fois déployé, un contrat intelligent de jeton conserve une trace de chaque adresse qui possède des jetons et combien. Il fournit également des fonctions permettant aux adresses de transférer des jetons qui leur sont attribués à d’autres adresses.
Le nombre de jetons détenus par chaque personne est détenu dans le contrat intelligent, ne pas la Blockchain sous-jacente elle-même, contrairement à l’ETH. Donc, pour savoir combien de jetons possède une adresse, nous devons interroger le contrat intelligent. C’est une distinction que nous devons reconnaître.
Lorsque nous demandons combien d’ETH possède une adresse, nous interrogeons la chaîne de blocs.
Lorsque nous demandons combien de jetons possède une adresse, nous interrogeons le contrat intelligent de ce jeton.
Par conséquent, pour connaître le nombre d’ETH et de jetons dont dispose un portefeuille, il doit connaître toutes les adresses d’où les Token Smart Contracts sont déployés sur la blockchain.
Exemple de code de jeton
Supposons que nous voulons déployer un jeton et lui donner un nom, un symbole, déterminer le nombre de décimales qu’il possède et l’approvisionnement total. Nous voulons que les détenteurs puissent transférer leurs jetons vers d’autres adresses, nous avons donc besoin d’une fonction de transfert. Nous voulons également pouvoir interroger le nombre de jetons d’une adresse.
Voilà à quoi ressemblerait ce contrat.
- Le constructeur de la ligne 12 prend les paramètres et installe la pièce.
- Pendant la construction, la ligne 17 envoie tous les jetons au déployeur du contrat (
msg.sender
du constructeur). - En utilisant
balanceOf()
sur la ligne 20 retourne combien de jetons contient l’adresse donnée. - le
transfer()
La fonction vérifie d’abord que les deux adresses sont valides, puis vérifie que l’appelant de la fonction a suffisamment de jetons à transférer. Il effectue ensuite le transfert sur les lignes 29 et 30, en réduisant le montant appartenant à l’expéditeur et en augmentant celui du destinataire.
Code portefeuille
Dans l’article précédent, nous avons écrit un contrat intelligent qui pouvait détenir, recevoir et transférer des ETH. Il n’a pas pu transférer de jetons, car comme nous l’avons mentionné précédemment, l’adresse du Token Smart Contract doit être connue pour le faire.
Le code suivant montre le original MyWallet
contrat de l’article précédent.
Ajoutons la fonctionnalité pour pouvoir transférer notre nouveau jeton.
- La ligne 8 montre une nouvelle variable d’état appelée
tokenAddress
, que nous définissons dans le constructeur lorsque nous créons le portefeuille. - Nous avons également importé la spécification du
MyToken
contrat en ligne 3. - La ligne 24 montre une nouvelle fonction appelée
sendToken()
qui utilise le importéMyToken
spécification pour charger letokenAddress
et appelez letransfer()
une fonction.
Notre portefeuille peut désormais contenir, recevoir et envoyer des ETH et notre Token!