A votação descentralizada refere-se a um sistema de votação que opera em uma blockchain. A ideia principal aqui é aproveitar a transparência, a segurança e a imutabilidade fornecidas pela tecnologia blockchain para construir um sistema de votação difícil de manipular e fácil de verificar.
Num sistema de votação descentralizado, cada voto é uma transação na blockchain que pode ser vista por todos os participantes, mas só pode ser modificada pelo eleitor até que o voto seja emitido. Uma vez emitido um voto, ele é registrado no blockchain e não pode ser alterado, proporcionando um mecanismo de votação transparente e à prova de falsificação.
Remix IDE (Ambiente de Desenvolvimento Integrado) é uma ferramenta poderosa e de código aberto projetada especificamente para o desenvolvimento de contratos inteligentes Ethereum. Ele é executado diretamente no seu navegador, então você não precisa instalar nada no seu computador.
Você pode acessar o Remix IDE em https://remix.ethereum.org. Ao abrir o Remix em seu navegador, você encontrará três painéis:
Painel Esquerdo: É aqui que você pode criar, importar e gerenciar seus arquivos do Solidity. Também inclui vários plug-ins para compilar, testar, depurar e implantar seus contratos.
Painel Central: Este é o seu editor de código. Aqui você escreverá e editará seu código do Solidity.
Painel direito: Este painel fornece várias ferramentas para compilar seus contratos, implantá-los na rede Ethereum (seja em uma rede Ethereum real ou em uma simulação de VM JavaScript) e interagir com seus contratos implantados.
Vamos começar com um simples contrato de “eleitor”. Este contrato manterá o controle dos eleitores em nosso sistema.
No Remix IDE, vá em “File Explorer” e clique no ícone “+” para criar um novo arquivo. Nomeie-o como Voter.sol
.
Agora, vamos começar a escrever nosso contrato:
Solidez
// Identificador de licença SPDX: GPL-3.0
solidez pragma >=0.7.0 <0.9.0;
contract Voter {
// Uma estrutura para representar uma pessoa
struct Person {
bool voted; // if true, that person already voted
uint vote; // index of the voted proposal
}
// Um mapeamento para rastrear todos os eleitores
mapeamento (endereço => Pessoa) eleitores públicos;
// Uma função para registrar um eleitor
function registerVoter() public {
voters[msg.sender].voted = false;
}
}
Identificador de licença SPDX: A linha // SPDX-License-Identifier: GPL-3.0
indica que nosso contrato usa a Licença Pública Geral GNU v3.0. Esta é uma licença de software livre comumente usada que garante aos usuários finais a liberdade de executar, estudar, compartilhar e modificar o software.
Diretiva Pragma: A pragma solidity >=0.7.0 <0.9.0;
A declaração especifica que o contrato foi escrito em uma versão do Solidity maior ou igual a 0.7.0 e menor que 0.9.0. Ajuda a evitar que o contrato seja compilado com uma versão mais recente e incompatível do compilador.
Definição do contrato: o bloco contract Voter {...}
define um novo contrato denominado Voter
. É aqui que especificamos as variáveis de estado e funções do contrato.
Definição de estrutura: Dentro do contrato, definimos uma estrutura Person
que representa uma pessoa em nosso sistema de votação. Cada Person
possui um booleano voted
que indica se já votou e um número inteiro vote
que acompanha a proposta em que votou.
Variável de Estado: O mapping(address => Person) public voters;
declaração declara uma variável de estado voters
que cria um link entre um endereço Ethereum e uma estrutura Person
. Isso nos permitirá acompanhar quem está qualificado para votar no sistema e qual é o seu voto. A palavra-chave public
cria automaticamente uma função getter para voters
.
Definição de função: o bloco function registerVoter() public {...}
define uma função pública que permite aos usuários se registrarem como eleitores no sistema. Os voters[msg.sender].voted = false;
declaração define o status voted
do novo eleitor como false
.
É isso para este contrato! À medida que avançamos no curso, expandiremos este contrato adicionando mais funções para o processo de votação. Lembre-se de compilar e testar regularmente seu código para garantir que tudo esteja funcionando conforme o esperado. No Remix IDE, você pode compilar seu contrato clicando no ícone do compilador Solidity na barra lateral esquerda (o terceiro a partir do topo) e depois clicando no botão “Compile”.
Na próxima lição, aprenderemos como permitir que eleitores registrados votem e implementar a lógica de um sistema de votação. Mas por enquanto, brinque com o contrato e familiarize-se com o ambiente Remix. Você acabou de dar o primeiro passo no mundo do desenvolvimento de contratos inteligentes!
A votação descentralizada refere-se a um sistema de votação que opera em uma blockchain. A ideia principal aqui é aproveitar a transparência, a segurança e a imutabilidade fornecidas pela tecnologia blockchain para construir um sistema de votação difícil de manipular e fácil de verificar.
Num sistema de votação descentralizado, cada voto é uma transação na blockchain que pode ser vista por todos os participantes, mas só pode ser modificada pelo eleitor até que o voto seja emitido. Uma vez emitido um voto, ele é registrado no blockchain e não pode ser alterado, proporcionando um mecanismo de votação transparente e à prova de falsificação.
Remix IDE (Ambiente de Desenvolvimento Integrado) é uma ferramenta poderosa e de código aberto projetada especificamente para o desenvolvimento de contratos inteligentes Ethereum. Ele é executado diretamente no seu navegador, então você não precisa instalar nada no seu computador.
Você pode acessar o Remix IDE em https://remix.ethereum.org. Ao abrir o Remix em seu navegador, você encontrará três painéis:
Painel Esquerdo: É aqui que você pode criar, importar e gerenciar seus arquivos do Solidity. Também inclui vários plug-ins para compilar, testar, depurar e implantar seus contratos.
Painel Central: Este é o seu editor de código. Aqui você escreverá e editará seu código do Solidity.
Painel direito: Este painel fornece várias ferramentas para compilar seus contratos, implantá-los na rede Ethereum (seja em uma rede Ethereum real ou em uma simulação de VM JavaScript) e interagir com seus contratos implantados.
Vamos começar com um simples contrato de “eleitor”. Este contrato manterá o controle dos eleitores em nosso sistema.
No Remix IDE, vá em “File Explorer” e clique no ícone “+” para criar um novo arquivo. Nomeie-o como Voter.sol
.
Agora, vamos começar a escrever nosso contrato:
Solidez
// Identificador de licença SPDX: GPL-3.0
solidez pragma >=0.7.0 <0.9.0;
contract Voter {
// Uma estrutura para representar uma pessoa
struct Person {
bool voted; // if true, that person already voted
uint vote; // index of the voted proposal
}
// Um mapeamento para rastrear todos os eleitores
mapeamento (endereço => Pessoa) eleitores públicos;
// Uma função para registrar um eleitor
function registerVoter() public {
voters[msg.sender].voted = false;
}
}
Identificador de licença SPDX: A linha // SPDX-License-Identifier: GPL-3.0
indica que nosso contrato usa a Licença Pública Geral GNU v3.0. Esta é uma licença de software livre comumente usada que garante aos usuários finais a liberdade de executar, estudar, compartilhar e modificar o software.
Diretiva Pragma: A pragma solidity >=0.7.0 <0.9.0;
A declaração especifica que o contrato foi escrito em uma versão do Solidity maior ou igual a 0.7.0 e menor que 0.9.0. Ajuda a evitar que o contrato seja compilado com uma versão mais recente e incompatível do compilador.
Definição do contrato: o bloco contract Voter {...}
define um novo contrato denominado Voter
. É aqui que especificamos as variáveis de estado e funções do contrato.
Definição de estrutura: Dentro do contrato, definimos uma estrutura Person
que representa uma pessoa em nosso sistema de votação. Cada Person
possui um booleano voted
que indica se já votou e um número inteiro vote
que acompanha a proposta em que votou.
Variável de Estado: O mapping(address => Person) public voters;
declaração declara uma variável de estado voters
que cria um link entre um endereço Ethereum e uma estrutura Person
. Isso nos permitirá acompanhar quem está qualificado para votar no sistema e qual é o seu voto. A palavra-chave public
cria automaticamente uma função getter para voters
.
Definição de função: o bloco function registerVoter() public {...}
define uma função pública que permite aos usuários se registrarem como eleitores no sistema. Os voters[msg.sender].voted = false;
declaração define o status voted
do novo eleitor como false
.
É isso para este contrato! À medida que avançamos no curso, expandiremos este contrato adicionando mais funções para o processo de votação. Lembre-se de compilar e testar regularmente seu código para garantir que tudo esteja funcionando conforme o esperado. No Remix IDE, você pode compilar seu contrato clicando no ícone do compilador Solidity na barra lateral esquerda (o terceiro a partir do topo) e depois clicando no botão “Compile”.
Na próxima lição, aprenderemos como permitir que eleitores registrados votem e implementar a lógica de um sistema de votação. Mas por enquanto, brinque com o contrato e familiarize-se com o ambiente Remix. Você acabou de dar o primeiro passo no mundo do desenvolvimento de contratos inteligentes!