La votación descentralizada se refiere a un sistema de votación que opera en una cadena de bloques. La idea clave aquí es aprovechar la transparencia, la seguridad y la inmutabilidad que proporciona la tecnología blockchain para construir un sistema de votación que sea difícil de manipular y fácil de verificar.
En un sistema de votación descentralizado, cada voto es una transacción en la cadena de bloques que todos los participantes pueden ver, pero que solo el votante puede modificar hasta que se emita el voto. Una vez que se emite un voto, se registra en la cadena de bloques y no se puede modificar, lo que proporciona un mecanismo de votación transparente y a prueba de manipulaciones.
Remix IDE (Entorno de desarrollo integrado) es una poderosa herramienta de código abierto diseñada específicamente para el desarrollo de contratos inteligentes de Ethereum. Se ejecuta directamente en su navegador web, por lo que no necesita instalar nada en su computadora.
Puede acceder al IDE de Remix en https://remix.ethereum.org. Cuando abres Remix en tu navegador, encontrarás tres paneles:
Panel izquierdo: aquí es donde puede crear, importar y administrar sus archivos de Solidity. También incluye varios complementos para compilar, probar, depurar e implementar sus contratos.
Panel Central: Este es tu editor de código. Aquí escribirás y editarás tu código de Solidity.
Panel derecho: este panel proporciona varias herramientas para compilar sus contratos, implementarlos en la red Ethereum (ya sea en una red Ethereum real o en una simulación de VM JavaScript) e interactuar con sus contratos implementados.
Comencemos con un simple contrato de "votante". Este contrato realizará un seguimiento de los votantes en nuestro sistema.
En Remix IDE, vaya al "Explorador de archivos" y haga clic en el icono "+" para crear un nuevo archivo. Nómbrelo Voter.sol
.
Ahora, comencemos a escribir nuestro contrato:
Solidez
// Identificador de licencia SPDX: GPL-3.0
pragma solidez >=0.7.0 <0.9.0;
contrato Votante {
// Una estructura para representar a una persona
struct Persona {
bool voted; // if true, that person already voted
uint vote; // index of the voted proposal
}
// Un mapeo para realizar un seguimiento de todos los votantes
mapeo(dirección => Persona) votantes públicos;
// Una función para registrar un votante
función registrarVoter() public {
voters[msg.sender].voted = false;
}
}
Identificador de licencia SPDX: La línea // SPDX-License-Identifier: GPL-3.0
indica que nuestro contrato utiliza la Licencia Pública General GNU v3.0. Se trata de una licencia de software libre de uso común que garantiza a los usuarios finales la libertad de ejecutar, estudiar, compartir y modificar el software.
Directiva Pragma: La pragma solidity >=0.7.0 <0.9.0;
La declaración especifica que el contrato está escrito en una versión de Solidity que es mayor o igual a 0.7.0 y menor que 0.9.0. Ayuda a evitar que el contrato se compile con una versión del compilador más nueva e incompatible.
Definición de contrato: el bloque contract Voter {...}
define un nuevo contrato denominado Voter
. Aquí es donde especificamos las variables de estado y funciones del contrato.
Definición de estructura: dentro del contrato, definimos una estructura Person
que representa a una persona en nuestro sistema de votación. Cada Person
tiene un booleano voted
que indica si ya votó y un número entero vote
que realiza un seguimiento de la propuesta por la que votó.
Variable de estado: los mapping(address => Person) public voters;
La declaración declara una variable de estado voters
que crea un vínculo entre una dirección de Ethereum y una estructura Person
. Esto nos permitirá realizar un seguimiento de quién es elegible para votar en el sistema y cuál es su voto. La palabra clave public
crea automáticamente una función captadora para voters
.
Definición de función: El bloque function registerVoter() public {...}
define una función pública que permite a los usuarios registrarse como votantes en el sistema. Los voters[msg.sender].voted = false;
La declaración establece el estado voted
del nuevo votante en false
.
¡Eso es todo por este contrato! A medida que avancemos en el curso, ampliaremos este contrato agregando más funciones para el proceso de votación. Recuerde compilar y probar su código periódicamente para asegurarse de que todo funcione como se esperaba. En Remix IDE, puede compilar su contrato haciendo clic en el ícono del compilador Solidity en la barra lateral izquierda (el tercero desde arriba) y luego haciendo clic en el botón "Compilar".
En la siguiente lección, aprenderemos cómo permitir que los votantes registrados emitan su voto e implementar la lógica de un sistema de votación. Pero por ahora, juega con el contrato y familiarízate con el entorno Remix. ¡Acaba de dar su primer paso en el mundo del desarrollo de contratos inteligentes!
La votación descentralizada se refiere a un sistema de votación que opera en una cadena de bloques. La idea clave aquí es aprovechar la transparencia, la seguridad y la inmutabilidad que proporciona la tecnología blockchain para construir un sistema de votación que sea difícil de manipular y fácil de verificar.
En un sistema de votación descentralizado, cada voto es una transacción en la cadena de bloques que todos los participantes pueden ver, pero que solo el votante puede modificar hasta que se emita el voto. Una vez que se emite un voto, se registra en la cadena de bloques y no se puede modificar, lo que proporciona un mecanismo de votación transparente y a prueba de manipulaciones.
Remix IDE (Entorno de desarrollo integrado) es una poderosa herramienta de código abierto diseñada específicamente para el desarrollo de contratos inteligentes de Ethereum. Se ejecuta directamente en su navegador web, por lo que no necesita instalar nada en su computadora.
Puede acceder al IDE de Remix en https://remix.ethereum.org. Cuando abres Remix en tu navegador, encontrarás tres paneles:
Panel izquierdo: aquí es donde puede crear, importar y administrar sus archivos de Solidity. También incluye varios complementos para compilar, probar, depurar e implementar sus contratos.
Panel Central: Este es tu editor de código. Aquí escribirás y editarás tu código de Solidity.
Panel derecho: este panel proporciona varias herramientas para compilar sus contratos, implementarlos en la red Ethereum (ya sea en una red Ethereum real o en una simulación de VM JavaScript) e interactuar con sus contratos implementados.
Comencemos con un simple contrato de "votante". Este contrato realizará un seguimiento de los votantes en nuestro sistema.
En Remix IDE, vaya al "Explorador de archivos" y haga clic en el icono "+" para crear un nuevo archivo. Nómbrelo Voter.sol
.
Ahora, comencemos a escribir nuestro contrato:
Solidez
// Identificador de licencia SPDX: GPL-3.0
pragma solidez >=0.7.0 <0.9.0;
contrato Votante {
// Una estructura para representar a una persona
struct Persona {
bool voted; // if true, that person already voted
uint vote; // index of the voted proposal
}
// Un mapeo para realizar un seguimiento de todos los votantes
mapeo(dirección => Persona) votantes públicos;
// Una función para registrar un votante
función registrarVoter() public {
voters[msg.sender].voted = false;
}
}
Identificador de licencia SPDX: La línea // SPDX-License-Identifier: GPL-3.0
indica que nuestro contrato utiliza la Licencia Pública General GNU v3.0. Se trata de una licencia de software libre de uso común que garantiza a los usuarios finales la libertad de ejecutar, estudiar, compartir y modificar el software.
Directiva Pragma: La pragma solidity >=0.7.0 <0.9.0;
La declaración especifica que el contrato está escrito en una versión de Solidity que es mayor o igual a 0.7.0 y menor que 0.9.0. Ayuda a evitar que el contrato se compile con una versión del compilador más nueva e incompatible.
Definición de contrato: el bloque contract Voter {...}
define un nuevo contrato denominado Voter
. Aquí es donde especificamos las variables de estado y funciones del contrato.
Definición de estructura: dentro del contrato, definimos una estructura Person
que representa a una persona en nuestro sistema de votación. Cada Person
tiene un booleano voted
que indica si ya votó y un número entero vote
que realiza un seguimiento de la propuesta por la que votó.
Variable de estado: los mapping(address => Person) public voters;
La declaración declara una variable de estado voters
que crea un vínculo entre una dirección de Ethereum y una estructura Person
. Esto nos permitirá realizar un seguimiento de quién es elegible para votar en el sistema y cuál es su voto. La palabra clave public
crea automáticamente una función captadora para voters
.
Definición de función: El bloque function registerVoter() public {...}
define una función pública que permite a los usuarios registrarse como votantes en el sistema. Los voters[msg.sender].voted = false;
La declaración establece el estado voted
del nuevo votante en false
.
¡Eso es todo por este contrato! A medida que avancemos en el curso, ampliaremos este contrato agregando más funciones para el proceso de votación. Recuerde compilar y probar su código periódicamente para asegurarse de que todo funcione como se esperaba. En Remix IDE, puede compilar su contrato haciendo clic en el ícono del compilador Solidity en la barra lateral izquierda (el tercero desde arriba) y luego haciendo clic en el botón "Compilar".
En la siguiente lección, aprenderemos cómo permitir que los votantes registrados emitan su voto e implementar la lógica de un sistema de votación. Pero por ahora, juega con el contrato y familiarízate con el entorno Remix. ¡Acaba de dar su primer paso en el mundo del desarrollo de contratos inteligentes!