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
.
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.
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.
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
.
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.
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.