Conception d’un Contrat-Wallet : Un contrat pour gérer vos Ethers

Découvrons ensemble, pas à pas, comment il est possible de développer un contrat-wallet, un Smart Contract qui peut agir comme un portefeuille standard. Dans un premier temps, nous allons découvrir comment gérer le fait de pouvoir recevoir des Ethers, de savoir combien d’Ether le contrat possède, et surtout, de faire en sorte que seul le propriétaire puisse récupérer ses Ethers.

Établissement de la Propriété

La première étape dans la création de notre Contrat-Wallet est de définir clairement la propriété. À cet égard, nous initialisons une variable de type address payable nommée “owner” pour stocker l’adresse Ethereum du propriétaire du contrat. Cela est crucial car cela établit qui a le droit de retirer les Ethers du contrat. Au moment de la construction du contrat, cette étape assure l’enregistrement de l’adresse du propriétaire.

Variable "owner" ainsi que le constructeur qui la définie dans le contrat-wallet

Réception des Ethers

Un aspect central du Contrat-Wallet est sa capacité à recevoir des Ethers de n’importe quelle adresse. Il n’est pas nécessaire de définir une fonction spécifique pour cela, car la fonction receive intégrée, toujours marquée comme externe et payable, gère ce processus. Elle est conçue pour accepter des Ethers envoyés vers l’adresse du contrat sans aucune intervention supplémentaire nécessaire.

C’est une fonction un peu spéciale, car elle ne nécessite pas qu’on la définisse via “function” contrairement aux fonctions classiques.

Fonction "receive" qui permet de recevoir les Ethers dans le contrat-wallet

Retrait Sécurisé des Ethers

Une fonction crucial nommée “withdraw” est mise en place pour permettre le retrait des fonds. Cependant, cette fonction inclut une vérification importante à travers l’instruction require pour s’assurer que seul le propriétaire légitime – celui dont l’adresse est stockée dans la variable “owner” – peut retirer les Ethers. Une fois cette vérification effectuée, le contrat peut transférer en toute sécurité le montant spécifié d’Ethers.

Fonction "withdraw" qui permet de récupérer les Ethers dans le contrat-wallet

Consultation du Solde

Pour une gestion efficace, il est important de pouvoir consulter le solde du Contrat-Wallet.

Nous créons donc une vue externe qui retourne le solde actuel des Ethers sur le contrat. Cette vue est spécifiquement marquée comme externe, permettant des appels uniquement depuis l’extérieur du contrat, et retourne un uint représentant le solde.

Il faut savoir que même sans cette fonction, un explorateur de chaine comme Etherscan permettra de consulter le solde d’Ethers du contrat. Mais cette fonction est pratique pour l’implémenter dans une dApp par exemple.

Fonction "getBalance" qui permet de connaitre le nombre d'Ethers dans le contrat-wallet

Conclusion

Le Contrat-Wallet sur la blockchain Ethereum offre un mécanisme intéressant pour gérer vos Ethers. Ce n’est qu’un aperçu des possibilités, vous pouvez intégrer des fonctionnalités supplémentaires, comme la gestion des tokens et des NFTs.

C’est un bon exercice pour s’entrainer à développer en Solidity en recopiant des concepts qui sont propres aux adresses et non au contrat. Je vous conseille de le faire si vous souhaitez devenir développeur Solidity !

Si vous souhaitez vous entretenir avec moi pour un éventuel besoin professionnel, contactez-moi.

Laisser un commentaire

%d