第4课

Interacciones contractuales

En esta última lección, examinaremos cómo interactúan los contratos entre sí. También aprenderemos cómo implementar el registro de eventos para monitorear las actividades en blockchain.

Interactuar con contratos

El primer concepto que abordaremos es el de interacción contractual. La interacción contractual se refiere a cómo los contratos se comunican y comparten información. En Solidity, los contratos pueden llamar a funciones de otros contratos, crear otros contratos e incluso enviar Ether a otros contratos o direcciones.

Ya hemos visto interacción de contratos en nuestro sistema de votación. Cada vez que se emite un voto, el contrato de votación interactúa consigo mismo para actualizar el estado del votante y el recuento de votos de la propuesta. Sin embargo, para un sistema más complejo, es posible que tenga contratos separados que deban interactuar entre sí.

Aquí hay un ejemplo simple de interacción contractual:

Solidez 
 pragma solidez >=0.7.0 <0.9.0; 

 contrato CalledContract { 
 uint public x; 

 función setX(uint _x) público {
        x = _x;
    }
}

contrato CallerContract { 
 función callSetX(dirección _llamadoContractAddress, uint _x) público {
        CalledContract calledContract = CalledContract(_calledContractAddress);
        calledContract.setX(_x);
    }
}

En este ejemplo, CallerContract interactúa con CalledContract llamando a su función setX .

El registro de eventos

Ahora pasemos al registro de eventos. Los eventos son una forma en que su contrato comunica que algo ha sucedido al mundo externo. En nuestro sistema de votación, por ejemplo, es posible que deseemos emitir un evento cada vez que se emite un voto. He aquí cómo hacerlo:

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

 contrato Votante { 
 // Definición del evento 
 evento VoteCast(dirección del votante, propuesta uint); 

 // Resto del 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 del contrato... 
 }

En la función vote actualizada, emitimos un evento VoteCast cada vez que se emite un voto. El evento registra la dirección del votante y la propuesta por la que votó.

En esta lección, aprendimos sobre la interacción de contratos y el registro de eventos, dos conceptos esenciales en Solidity. Con el conocimiento que ha adquirido en este curso, ahora está equipado para comenzar a desarrollar aplicaciones descentralizadas más complejas en Ethereum.

Conclusión

¡Felicidades! Ha completado con éxito el curso "Construcción de un sistema de votación descentralizado".

A lo largo de este curso, ha aprendido los conceptos básicos detrás de un sistema de votación descentralizado y cómo implementar uno usando Solidity en Remix IDE. Comenzando por comprender qué es la votación descentralizada y por qué es importante, profundizamos en la codificación de nuestros propios contratos inteligentes para el registro de votantes, la emisión de votos y el conteo de votos. También aprendimos cómo interactuar con nuestros contratos y simular todo el proceso de votación dentro de Remix IDE. Por último, exploramos cómo interactúan los contratos entre sí y cómo registrar eventos para rastrear actividades en blockchain.

Las habilidades y conocimientos que ha adquirido en este curso no sólo se limitan a la creación de sistemas de votación, sino que también se pueden aplicar a otros tipos de aplicaciones descentralizadas. Sigue practicando, experimentando y construyendo.

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

Interacciones contractuales

En esta última lección, examinaremos cómo interactúan los contratos entre sí. También aprenderemos cómo implementar el registro de eventos para monitorear las actividades en blockchain.

Interactuar con contratos

El primer concepto que abordaremos es el de interacción contractual. La interacción contractual se refiere a cómo los contratos se comunican y comparten información. En Solidity, los contratos pueden llamar a funciones de otros contratos, crear otros contratos e incluso enviar Ether a otros contratos o direcciones.

Ya hemos visto interacción de contratos en nuestro sistema de votación. Cada vez que se emite un voto, el contrato de votación interactúa consigo mismo para actualizar el estado del votante y el recuento de votos de la propuesta. Sin embargo, para un sistema más complejo, es posible que tenga contratos separados que deban interactuar entre sí.

Aquí hay un ejemplo simple de interacción contractual:

Solidez 
 pragma solidez >=0.7.0 <0.9.0; 

 contrato CalledContract { 
 uint public x; 

 función setX(uint _x) público {
        x = _x;
    }
}

contrato CallerContract { 
 función callSetX(dirección _llamadoContractAddress, uint _x) público {
        CalledContract calledContract = CalledContract(_calledContractAddress);
        calledContract.setX(_x);
    }
}

En este ejemplo, CallerContract interactúa con CalledContract llamando a su función setX .

El registro de eventos

Ahora pasemos al registro de eventos. Los eventos son una forma en que su contrato comunica que algo ha sucedido al mundo externo. En nuestro sistema de votación, por ejemplo, es posible que deseemos emitir un evento cada vez que se emite un voto. He aquí cómo hacerlo:

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

 contrato Votante { 
 // Definición del evento 
 evento VoteCast(dirección del votante, propuesta uint); 

 // Resto del 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 del contrato... 
 }

En la función vote actualizada, emitimos un evento VoteCast cada vez que se emite un voto. El evento registra la dirección del votante y la propuesta por la que votó.

En esta lección, aprendimos sobre la interacción de contratos y el registro de eventos, dos conceptos esenciales en Solidity. Con el conocimiento que ha adquirido en este curso, ahora está equipado para comenzar a desarrollar aplicaciones descentralizadas más complejas en Ethereum.

Conclusión

¡Felicidades! Ha completado con éxito el curso "Construcción de un sistema de votación descentralizado".

A lo largo de este curso, ha aprendido los conceptos básicos detrás de un sistema de votación descentralizado y cómo implementar uno usando Solidity en Remix IDE. Comenzando por comprender qué es la votación descentralizada y por qué es importante, profundizamos en la codificación de nuestros propios contratos inteligentes para el registro de votantes, la emisión de votos y el conteo de votos. También aprendimos cómo interactuar con nuestros contratos y simular todo el proceso de votación dentro de Remix IDE. Por último, exploramos cómo interactúan los contratos entre sí y cómo registrar eventos para rastrear actividades en blockchain.

Las habilidades y conocimientos que ha adquirido en este curso no sólo se limitan a la creación de sistemas de votación, sino que también se pueden aplicar a otros tipos de aplicaciones descentralizadas. Sigue practicando, experimentando y construyendo.

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