Bài học 4

Interações contratuais

Nesta lição final, examinaremos como os contratos interagem entre si. Também aprenderemos como implementar o registro de eventos para monitorar atividades no blockchain.

Interagindo com Contratos

O primeiro conceito que abordaremos é a interação contratual. A interação contratual refere-se a como os contratos comunicam e compartilham informações. No Solidity, os contratos podem chamar funções de outros contratos, criar outros contratos e até enviar Ether para outros contratos ou endereços.

Já vimos interação contratual em nosso sistema de votação. Cada vez que um voto é emitido, o contrato de votação interage consigo mesmo para atualizar o status do eleitor e a contagem de votos para a proposta. No entanto, para um sistema mais complexo, você pode ter contratos separados que precisam interagir entre si.

Aqui está um exemplo simples de interação contratual:

Solidez 
 pragma solidez >=0,7,0 <0,9,0; 

 contratos CalledContract { 
 uint public x; 

 função setX (uint _x) público {
        x = _x;
    }
}

contrato CallerContract { 
 função callSetX (endereço _calledContractAddress, uint _x) público {
        CalledContract calledContract = CalledContract(_calledContractAddress);
        calledContract.setX(_x);
    }
}

Neste exemplo, CallerContract interage com CalledContract chamando sua função setX .

Registro de eventos

Agora vamos passar para o registro de eventos. Os eventos são uma forma de o seu contrato comunicar que algo aconteceu ao mundo externo. No nosso sistema de votação, por exemplo, podemos querer emitir um evento cada vez que um voto é lançado. Veja como fazer isso:

Solidez 
 // Identificador de licença SPDX: GPL-3.0 
 solidez pragma >=0.7.0 <0.9.0; 

 contrato Eleitor { 
 // Definição do evento 
 evento VoteCast(endereço do eleitor, proposta uint); 

 // Resto do contrato... 

 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);
    }

    // Resto do contrato... 
 }

Na função vote atualizada, emitimos um evento VoteCast cada vez que um voto é lançado. O evento registra o endereço do eleitor e a proposta em que votou.

Nesta lição, aprendemos sobre interação de contrato e registro de eventos, dois conceitos essenciais no Solidity. Com o conhecimento adquirido neste curso, agora você está equipado para começar a desenvolver aplicativos descentralizados mais complexos no Ethereum.

Conclusão

Parabéns! Você concluiu com sucesso o curso “Construindo um Sistema de Votação Descentralizado”.

Ao longo deste curso, você aprendeu os principais conceitos por trás de um sistema de votação descentralizado e como implementá-lo usando Solidity no Remix IDE. Começando pela compreensão do que é votação descentralizada e por que ela é importante, nos aprofundamos na codificação de nossos próprios contratos inteligentes para registro eleitoral, emissão de votos e contagem de votos. Também aprendemos como interagir com nossos contratos e simular todo o processo de votação dentro do Remix IDE. Por fim, exploramos como os contratos interagem entre si e como registrar eventos para rastrear atividades no blockchain.

As habilidades e conhecimentos que você adquiriu neste curso não se limitam apenas à criação de sistemas de votação, mas também podem ser aplicados a outros tipos de aplicações descentralizadas. Continue praticando, experimentando e construindo.

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.
Danh mục
Bài học 4

Interações contratuais

Nesta lição final, examinaremos como os contratos interagem entre si. Também aprenderemos como implementar o registro de eventos para monitorar atividades no blockchain.

Interagindo com Contratos

O primeiro conceito que abordaremos é a interação contratual. A interação contratual refere-se a como os contratos comunicam e compartilham informações. No Solidity, os contratos podem chamar funções de outros contratos, criar outros contratos e até enviar Ether para outros contratos ou endereços.

Já vimos interação contratual em nosso sistema de votação. Cada vez que um voto é emitido, o contrato de votação interage consigo mesmo para atualizar o status do eleitor e a contagem de votos para a proposta. No entanto, para um sistema mais complexo, você pode ter contratos separados que precisam interagir entre si.

Aqui está um exemplo simples de interação contratual:

Solidez 
 pragma solidez >=0,7,0 <0,9,0; 

 contratos CalledContract { 
 uint public x; 

 função setX (uint _x) público {
        x = _x;
    }
}

contrato CallerContract { 
 função callSetX (endereço _calledContractAddress, uint _x) público {
        CalledContract calledContract = CalledContract(_calledContractAddress);
        calledContract.setX(_x);
    }
}

Neste exemplo, CallerContract interage com CalledContract chamando sua função setX .

Registro de eventos

Agora vamos passar para o registro de eventos. Os eventos são uma forma de o seu contrato comunicar que algo aconteceu ao mundo externo. No nosso sistema de votação, por exemplo, podemos querer emitir um evento cada vez que um voto é lançado. Veja como fazer isso:

Solidez 
 // Identificador de licença SPDX: GPL-3.0 
 solidez pragma >=0.7.0 <0.9.0; 

 contrato Eleitor { 
 // Definição do evento 
 evento VoteCast(endereço do eleitor, proposta uint); 

 // Resto do contrato... 

 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);
    }

    // Resto do contrato... 
 }

Na função vote atualizada, emitimos um evento VoteCast cada vez que um voto é lançado. O evento registra o endereço do eleitor e a proposta em que votou.

Nesta lição, aprendemos sobre interação de contrato e registro de eventos, dois conceitos essenciais no Solidity. Com o conhecimento adquirido neste curso, agora você está equipado para começar a desenvolver aplicativos descentralizados mais complexos no Ethereum.

Conclusão

Parabéns! Você concluiu com sucesso o curso “Construindo um Sistema de Votação Descentralizado”.

Ao longo deste curso, você aprendeu os principais conceitos por trás de um sistema de votação descentralizado e como implementá-lo usando Solidity no Remix IDE. Começando pela compreensão do que é votação descentralizada e por que ela é importante, nos aprofundamos na codificação de nossos próprios contratos inteligentes para registro eleitoral, emissão de votos e contagem de votos. Também aprendemos como interagir com nossos contratos e simular todo o processo de votação dentro do Remix IDE. Por fim, exploramos como os contratos interagem entre si e como registrar eventos para rastrear atividades no blockchain.

As habilidades e conhecimentos que você adquiriu neste curso não se limitam apenas à criação de sistemas de votação, mas também podem ser aplicados a outros tipos de aplicações descentralizadas. Continue praticando, experimentando e construindo.

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Thailand, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.