Leçon 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.

Clause de non-responsabilité
* Les investissements en cryptomonnaies comportent des risques importants. Veuillez faire preuve de prudence. Le cours n'est pas destiné à fournir des conseils en investissement.
* Ce cours a été créé par l'auteur qui a rejoint Gate Learn. Toute opinion partagée par l'auteur ne représente pas Gate Learn.
Catalogue
Leçon 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.

Clause de non-responsabilité
* Les investissements en cryptomonnaies comportent des risques importants. Veuillez faire preuve de prudence. Le cours n'est pas destiné à fournir des conseils en investissement.
* Ce cours a été créé par l'auteur qui a rejoint Gate Learn. Toute opinion partagée par l'auteur ne représente pas Gate Learn.