Lição 4

Interactions contractuelles

Dans cette dernière leçon, nous verrons comment les contrats interagissent les uns avec les autres. Nous apprendrons également à mettre en œuvre l'enregistrement des événements pour surveiller les activités sur la blockchain.

Interagir avec les contrats

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.

Enregistrement des événements

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.

Conclusion

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.

Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.
Catálogo
Lição 4

Interactions contractuelles

Dans cette dernière leçon, nous verrons comment les contrats interagissent les uns avec les autres. Nous apprendrons également à mettre en œuvre l'enregistrement des événements pour surveiller les activités sur la blockchain.

Interagir avec les contrats

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.

Enregistrement des événements

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.

Conclusion

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.

Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.