Bài học 4

Interações contratuais

Nesta lição final, examinaremos como os contratos interagem uns com os outros. Também aprenderemos a implementar o registo de eventos para monitorizar as atividades na cadeia de blocos.

Interagir com Contratos

O primeiro conceito que abordaremos é a interação contratual. A interação do contrato refere-se à forma como os contratos comunicam e partilham 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 no nosso sistema de votação. Cada vez que é emitida uma votação, o contrato de votação interage consigo próprio para atualizar o estatuto do eleitor e a contagem de votos para a proposta. No entanto, para um sistema mais complexo, pode ter contratos separados que precisam de interagir uns com os outros.

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

Solidez
solidez do pragma > < =0.7.0 0.9.0;

contrato chamadoContrato {
 unidade pública x;

 função setX (uint _x) public {
        x = _x;
    }
}

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

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

Registo de Eventos

Agora vamos para o registo 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 é emitido. Veja como fazer isso:

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

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

 //Resto do contrato...

 função voto (uint _proposta) público {
        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 de votação atualizada, emitimos um evento VoteCast cada vez que um voto é emitido. O evento registra o endereço do eleitor e a proposta em que votou.

Nesta lição, aprendemos sobre interação de contrato e registo de eventos, dois conceitos essenciais em Solidity. Com o conhecimento que adquiriu com este curso, está agora equipado para começar a desenvolver aplicações descentralizadas mais complexas no Ethereum.

Conclusão

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

Ao longo deste curso, aprendeu os principais conceitos por trás de um sistema de votação descentralizado e como implementar um usando o Solidity no IDE Remix. Começando pela compreensão do que é a votação descentralizada e por que isso importa, mergulhamos na codificação dos nossos próprios contratos inteligentes para registo de eleitores, emissão de votos e contagem de votos. Aprendemos também a interagir com os nossos contratos e a simular todo o processo de votação dentro do Remix IDE. Por último, explorámos como os contratos interagem entre si e como registar eventos para monitorizar atividades na cadeia de blocos.

As competências e conhecimentos que adquiriu com este 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 a praticar, a experimentar e a construir.

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 uns com os outros. Também aprenderemos a implementar o registo de eventos para monitorizar as atividades na cadeia de blocos.

Interagir com Contratos

O primeiro conceito que abordaremos é a interação contratual. A interação do contrato refere-se à forma como os contratos comunicam e partilham 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 no nosso sistema de votação. Cada vez que é emitida uma votação, o contrato de votação interage consigo próprio para atualizar o estatuto do eleitor e a contagem de votos para a proposta. No entanto, para um sistema mais complexo, pode ter contratos separados que precisam de interagir uns com os outros.

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

Solidez
solidez do pragma > < =0.7.0 0.9.0;

contrato chamadoContrato {
 unidade pública x;

 função setX (uint _x) public {
        x = _x;
    }
}

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

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

Registo de Eventos

Agora vamos para o registo 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 é emitido. Veja como fazer isso:

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

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

 //Resto do contrato...

 função voto (uint _proposta) público {
        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 de votação atualizada, emitimos um evento VoteCast cada vez que um voto é emitido. O evento registra o endereço do eleitor e a proposta em que votou.

Nesta lição, aprendemos sobre interação de contrato e registo de eventos, dois conceitos essenciais em Solidity. Com o conhecimento que adquiriu com este curso, está agora equipado para começar a desenvolver aplicações descentralizadas mais complexas no Ethereum.

Conclusão

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

Ao longo deste curso, aprendeu os principais conceitos por trás de um sistema de votação descentralizado e como implementar um usando o Solidity no IDE Remix. Começando pela compreensão do que é a votação descentralizada e por que isso importa, mergulhamos na codificação dos nossos próprios contratos inteligentes para registo de eleitores, emissão de votos e contagem de votos. Aprendemos também a interagir com os nossos contratos e a simular todo o processo de votação dentro do Remix IDE. Por último, explorámos como os contratos interagem entre si e como registar eventos para monitorizar atividades na cadeia de blocos.

As competências e conhecimentos que adquiriu com este 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 a praticar, a experimentar e a construir.

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.