Dans cette section, nous discuterons du processus d'écriture d'un contrat intelligent de base en utilisant Solidity. Nous couvrirons des composants essentiels tels que les variables, les fonctions et les modificateurs. Ensuite, nous passerons en revue un exemple d'implémentation d'un contrat de jeton simple.
Variables, fonctions et modificateurs
Exemple1: Mise en œuvre d'un contrat de jeton simple
Créons un contrat de jeton simple en utilisant Solidity. Ce contrat permettra aux utilisateurs de transférer des jetons entre des comptes et de vérifier le solde de jetons de n'importe quel compte.
TypeScriptpragma solidité ^0.8.0;contrat SimpleToken { // Déclarer les variables d'état adresse publique propriétaire; mappage(adresse => uint256) soldes publics; // Initialiser le contrat de jeton constructeur(uint256 offreInitiale) { propriétaire = msg.sender; soldes[propriétaire] = offreInitiale; } // Fonction de transfert de jetons fonction transférer(adresse à, uint256 montant) public { requiert(soldes[msg.sender] >= montant, "Solde insuffisant"); soldes[msg.sender] -= montant; soldes[à] += montant; } // Fonction pour vérifier le solde du jeton d'un compte fonction balanceOf(adresse compte) public vue retourne (uint256) { retourne soldes[compte]; }}
Dans ce contrat, nous avons :
propriétaire
etsoldes
pour stocker respectivement l'adresse du propriétaire du contrat et les soldes de jetons de toutes les adresses.constructeur
fonction qui définit l'approvisionnement initial de jetons et les attribue au propriétaire du contrat.transfert
fonction qui permet aux utilisateurs de transférer des jetons vers d'autres comptes. Elle utilise le exiger
déclaration pour s'assurer que l'expéditeur a suffisamment de jetons à transférer.soldeDe
fonction qui retourne le solde du jeton d'un compte spécifié.Exemple2: Mise en œuvre d'un système de vote simple
pragma solidity ^0.8.0;contrat SystèmeDeVote { mapping (bytes32 => uint256) public votesReceived; bytes32[] public listeDesCandidats; constructor(bytes32[] memory nomsDesCandidats) { listeDesCandidats = nomsDesCandidats; } function voterPourCandidat(bytes32 candidat) public { require(candidatValide(candidat), "Candidat invalide."); votesReceived[candidat] += 1; } function totalVotesPour(bytes32 candidat) public view returns (uint256) { require(candidatValide(candidat), "Candidat invalide."); return votesReceived[candidat]; } function candidatValide(bytes32 candidat) public view returns (bool) { for (uint256 i = 0; i < listeDesCandidats.length; i++) { if (listeDesCandidats[i] == candidat) { return true; } } return false; }}
Dans cet exemple, le Système de vote
le contrat permet aux utilisateurs de voter pour l'un des plusieurs candidats en appelant le voter pour un candidat
fonction. Le contrat garde une trace du nombre de votes reçus pour chaque candidat à l'aide d'un votes reçus
le mappage, où la clé est le nom du candidat et la valeur est le nombre de votes. Le Liste des candidats
variable stocke la liste des candidats valides. totalVotesFor
la fonction peut être appelée pour vérifier le nombre de votes qu'un candidat spécifique a reçus, et le candidat valide
la fonction vérifie si un candidat est valide. Il s'agit d'un exemple simple de la façon dont Solidity peut être utilisé pour construire des applications décentralisées avec une logique complexe.
Points forts
Les variables, les fonctions et les modificateurs sont des composants essentiels des contrats intelligents Solidity.
Solidity a deux types de variables : les variables d'état et les variables locales.
Les fonctions sont utilisées pour effectuer des tâches et peuvent avoir des paramètres d'entrée et des valeurs de retour.
Les modificateurs sont utilisés pour modifier le comportement d'une fonction et améliorer la lisibilité et la gestion du code.
Le contrat SimpleToken permet aux utilisateurs de transférer des jetons et de vérifier les soldes des jetons.
Le contrat SimpleToken démontre l'utilisation de variables d'état, d'une fonction de constructeur et de fonctions comme transférer et balanceOf.
Le contrat VotingSystem permet aux utilisateurs de voter pour des candidats et de suivre les comptes de vote.
Le contrat VotingSystem montre l'utilisation de mappings, de tableaux et de fonctions comme voteForCandidate, totalVotesFor et validCandidate.
Dans cette section, nous discuterons du processus d'écriture d'un contrat intelligent de base en utilisant Solidity. Nous couvrirons des composants essentiels tels que les variables, les fonctions et les modificateurs. Ensuite, nous passerons en revue un exemple d'implémentation d'un contrat de jeton simple.
Variables, fonctions et modificateurs
Exemple1: Mise en œuvre d'un contrat de jeton simple
Créons un contrat de jeton simple en utilisant Solidity. Ce contrat permettra aux utilisateurs de transférer des jetons entre des comptes et de vérifier le solde de jetons de n'importe quel compte.
TypeScriptpragma solidité ^0.8.0;contrat SimpleToken { // Déclarer les variables d'état adresse publique propriétaire; mappage(adresse => uint256) soldes publics; // Initialiser le contrat de jeton constructeur(uint256 offreInitiale) { propriétaire = msg.sender; soldes[propriétaire] = offreInitiale; } // Fonction de transfert de jetons fonction transférer(adresse à, uint256 montant) public { requiert(soldes[msg.sender] >= montant, "Solde insuffisant"); soldes[msg.sender] -= montant; soldes[à] += montant; } // Fonction pour vérifier le solde du jeton d'un compte fonction balanceOf(adresse compte) public vue retourne (uint256) { retourne soldes[compte]; }}
Dans ce contrat, nous avons :
propriétaire
etsoldes
pour stocker respectivement l'adresse du propriétaire du contrat et les soldes de jetons de toutes les adresses.constructeur
fonction qui définit l'approvisionnement initial de jetons et les attribue au propriétaire du contrat.transfert
fonction qui permet aux utilisateurs de transférer des jetons vers d'autres comptes. Elle utilise le exiger
déclaration pour s'assurer que l'expéditeur a suffisamment de jetons à transférer.soldeDe
fonction qui retourne le solde du jeton d'un compte spécifié.Exemple2: Mise en œuvre d'un système de vote simple
pragma solidity ^0.8.0;contrat SystèmeDeVote { mapping (bytes32 => uint256) public votesReceived; bytes32[] public listeDesCandidats; constructor(bytes32[] memory nomsDesCandidats) { listeDesCandidats = nomsDesCandidats; } function voterPourCandidat(bytes32 candidat) public { require(candidatValide(candidat), "Candidat invalide."); votesReceived[candidat] += 1; } function totalVotesPour(bytes32 candidat) public view returns (uint256) { require(candidatValide(candidat), "Candidat invalide."); return votesReceived[candidat]; } function candidatValide(bytes32 candidat) public view returns (bool) { for (uint256 i = 0; i < listeDesCandidats.length; i++) { if (listeDesCandidats[i] == candidat) { return true; } } return false; }}
Dans cet exemple, le Système de vote
le contrat permet aux utilisateurs de voter pour l'un des plusieurs candidats en appelant le voter pour un candidat
fonction. Le contrat garde une trace du nombre de votes reçus pour chaque candidat à l'aide d'un votes reçus
le mappage, où la clé est le nom du candidat et la valeur est le nombre de votes. Le Liste des candidats
variable stocke la liste des candidats valides. totalVotesFor
la fonction peut être appelée pour vérifier le nombre de votes qu'un candidat spécifique a reçus, et le candidat valide
la fonction vérifie si un candidat est valide. Il s'agit d'un exemple simple de la façon dont Solidity peut être utilisé pour construire des applications décentralisées avec une logique complexe.
Points forts
Les variables, les fonctions et les modificateurs sont des composants essentiels des contrats intelligents Solidity.
Solidity a deux types de variables : les variables d'état et les variables locales.
Les fonctions sont utilisées pour effectuer des tâches et peuvent avoir des paramètres d'entrée et des valeurs de retour.
Les modificateurs sont utilisés pour modifier le comportement d'une fonction et améliorer la lisibilité et la gestion du code.
Le contrat SimpleToken permet aux utilisateurs de transférer des jetons et de vérifier les soldes des jetons.
Le contrat SimpleToken démontre l'utilisation de variables d'état, d'une fonction de constructeur et de fonctions comme transférer et balanceOf.
Le contrat VotingSystem permet aux utilisateurs de voter pour des candidats et de suivre les comptes de vote.
Le contrat VotingSystem montre l'utilisation de mappings, de tableaux et de fonctions comme voteForCandidate, totalVotesFor et validCandidate.