Le premier concept que nous aborderons est celui de l'interaction contractuelle. L'interaction contractuelle fait référence à la manière dont les contrats communiquent et partagent des informations. Dans Solidity, les contrats peuvent appeler les fonctions d'autres contrats, créer d'autres contrats et même envoyer de l'Ether à d'autres contrats ou adresses.
Nous avons déjà constaté l'interaction des contrats dans notre système de vote. Chaque fois qu'un vote est émis, le contrat de vote interagit avec lui-même pour mettre à jour le statut de l'électeur et le décompte des voix pour la proposition. Toutefois, dans le cas d'un système plus complexe, vous pouvez avoir des contrats distincts qui doivent interagir les uns avec les autres.
Voici un exemple simple d'interaction contractuelle :
Solidity
pragma solidity >=0.7.0 <0.9.0 ;
contrat CalledContract {
uint public x ;
function setX(uint _x) public {
x = _x;
}
}
contrat CallerContract {
function callSetX(address _calledContractAddress, uint _x) public {
CalledContract calledContract = CalledContract(_calledContractAddress);
calledContract.setX(_x);
}
}
Dans cet exemple, CallerContract
interagit avec CalledContract
en appelant sa fonction setX
.
Passons maintenant à l'enregistrement des événements. Les événements sont un moyen pour votre contrat de communiquer que quelque chose s'est produit dans le monde extérieur. Dans notre système de vote, par exemple, nous pourrions vouloir émettre un événement à chaque fois qu'un vote est émis. Voici comment procéder :
Solidity
// SPDX-License-Identifier : GPL-3.0
pragma solidity >=0.7.0 <0.9.0 ;
contract Voter {
// Définition de l'événement
event VoteCast(address voter, uint proposal) ;
// Reste du contrat...
function vote(uint _proposal) public {
Person storage sender = voters[msg.sender];
require(!sender.voted, "Already voted.");
sender.voted = true;
sender.vote = _proposal;
proposals[_proposal].voteCount += 1;
// Emit event
emit VoteCast(msg.sender, _proposal);
}
// Reste du contrat...
}
Dans la fonction de vote
mise à jour, nous émettons un événement VoteCast
chaque fois qu'un vote est émis. L'événement enregistre l'adresse de l'électeur et la proposition pour laquelle il a voté.
Dans cette leçon, nous avons appris à connaître l'interaction entre les contrats et l'enregistrement des événements, deux concepts essentiels dans Solidity. Avec les connaissances que vous avez acquises dans ce cours, vous êtes maintenant équipé pour commencer à développer des applications décentralisées plus complexes sur Ethereum.
Nous vous félicitons ! Vous avez terminé avec succès le cours "Construire un système de vote décentralisé".
Tout au long de ce cours, vous avez appris les concepts de base d'un système de vote décentralisé et comment l'implémenter en utilisant Solidity sur l'IDE Remix. En commençant par comprendre ce qu'est le vote décentralisé et pourquoi il est important, nous avons commencé à coder nos propres contrats intelligents pour l'inscription des électeurs, le vote et le décompte des voix. Nous avons également appris à interagir avec nos contrats et à simuler l'ensemble du processus de vote dans l'IDE Remix. Enfin, nous avons étudié comment les contrats interagissent entre eux et comment enregistrer les événements pour suivre les activités sur la blockchain.
Les compétences et les connaissances que vous avez acquises dans ce cours ne se limitent pas à la création de systèmes de vote, mais peuvent également être appliquées à d'autres types d'applications décentralisées. Continuez à pratiquer, à expérimenter et à construire.
Le premier concept que nous aborderons est celui de l'interaction contractuelle. L'interaction contractuelle fait référence à la manière dont les contrats communiquent et partagent des informations. Dans Solidity, les contrats peuvent appeler les fonctions d'autres contrats, créer d'autres contrats et même envoyer de l'Ether à d'autres contrats ou adresses.
Nous avons déjà constaté l'interaction des contrats dans notre système de vote. Chaque fois qu'un vote est émis, le contrat de vote interagit avec lui-même pour mettre à jour le statut de l'électeur et le décompte des voix pour la proposition. Toutefois, dans le cas d'un système plus complexe, vous pouvez avoir des contrats distincts qui doivent interagir les uns avec les autres.
Voici un exemple simple d'interaction contractuelle :
Solidity
pragma solidity >=0.7.0 <0.9.0 ;
contrat CalledContract {
uint public x ;
function setX(uint _x) public {
x = _x;
}
}
contrat CallerContract {
function callSetX(address _calledContractAddress, uint _x) public {
CalledContract calledContract = CalledContract(_calledContractAddress);
calledContract.setX(_x);
}
}
Dans cet exemple, CallerContract
interagit avec CalledContract
en appelant sa fonction setX
.
Passons maintenant à l'enregistrement des événements. Les événements sont un moyen pour votre contrat de communiquer que quelque chose s'est produit dans le monde extérieur. Dans notre système de vote, par exemple, nous pourrions vouloir émettre un événement à chaque fois qu'un vote est émis. Voici comment procéder :
Solidity
// SPDX-License-Identifier : GPL-3.0
pragma solidity >=0.7.0 <0.9.0 ;
contract Voter {
// Définition de l'événement
event VoteCast(address voter, uint proposal) ;
// Reste du contrat...
function vote(uint _proposal) public {
Person storage sender = voters[msg.sender];
require(!sender.voted, "Already voted.");
sender.voted = true;
sender.vote = _proposal;
proposals[_proposal].voteCount += 1;
// Emit event
emit VoteCast(msg.sender, _proposal);
}
// Reste du contrat...
}
Dans la fonction de vote
mise à jour, nous émettons un événement VoteCast
chaque fois qu'un vote est émis. L'événement enregistre l'adresse de l'électeur et la proposition pour laquelle il a voté.
Dans cette leçon, nous avons appris à connaître l'interaction entre les contrats et l'enregistrement des événements, deux concepts essentiels dans Solidity. Avec les connaissances que vous avez acquises dans ce cours, vous êtes maintenant équipé pour commencer à développer des applications décentralisées plus complexes sur Ethereum.
Nous vous félicitons ! Vous avez terminé avec succès le cours "Construire un système de vote décentralisé".
Tout au long de ce cours, vous avez appris les concepts de base d'un système de vote décentralisé et comment l'implémenter en utilisant Solidity sur l'IDE Remix. En commençant par comprendre ce qu'est le vote décentralisé et pourquoi il est important, nous avons commencé à coder nos propres contrats intelligents pour l'inscription des électeurs, le vote et le décompte des voix. Nous avons également appris à interagir avec nos contrats et à simuler l'ensemble du processus de vote dans l'IDE Remix. Enfin, nous avons étudié comment les contrats interagissent entre eux et comment enregistrer les événements pour suivre les activités sur la blockchain.
Les compétences et les connaissances que vous avez acquises dans ce cours ne se limitent pas à la création de systèmes de vote, mais peuvent également être appliquées à d'autres types d'applications décentralisées. Continuez à pratiquer, à expérimenter et à construire.