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

免责声明
* 投资有风险,入市须谨慎。本课程不作为投资理财建议。
* 本课程由入驻Gate Learn的作者创作,观点仅代表作者本人,绝不代表Gate Learn赞同其观点或证实其描述。
目录
第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.

免责声明
* 投资有风险,入市须谨慎。本课程不作为投资理财建议。
* 本课程由入驻Gate Learn的作者创作,观点仅代表作者本人,绝不代表Gate Learn赞同其观点或证实其描述。