Lição 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.

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

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.

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.
It seems that you are attempting to access our services from a Restricted Location where Gate 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.