Votação descentralizada refere-se a um sistema de votação que opera numa cadeia de blocos. A ideia chave aqui é alavancar 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 cadeia de blocos que pode ser vista por todos os participantes mas só pode ser modificada pelo eleitor até que o voto seja dado. Uma vez que uma votação é emitida, é gravada na cadeia de blocos e não pode ser alterada, fornecendo um mecanismo de votação transparente e inviolável.
O Remix IDE (Integrated Development Environment) é uma poderosa ferramenta de código aberto concebida especificamente para o desenvolvimento de contratos inteligentes Ethereum. Funciona diretamente no seu navegador web, por isso não precisa de instalar nada no seu computador.
Pode aceder ao IDE Remix em https://remix.ethereum.org. Quando abre o Remix no seu navegador, vai encontrar três painéis:
Painel Esquerdo: É aqui que pode criar, importar e gerir os seus ficheiros Solidity. Também inclui vários plugins para compilar, testar, depuração e implementar os seus contratos.
Painel Central: Este é o seu editor de código. Aqui vai escrever e editar o seu código Solidity.
Painel direito: Este painel fornece várias ferramentas para compilar os seus contratos, implementá-los na rede Ethereum (seja numa rede Ethereum real ou numa simulação de VM JavaScript) e interagir com os seus contratos implementados.
Vamos começar com um simples contrato de “eleitor”. Este contrato irá acompanhar os eleitores no nosso sistema.
No IDE Remix, vá para “Explorador de Ficheiros” e clique no ícone “+” para criar um novo ficheiro. Dá o nome Voter.sol
.
Agora, vamos começar a escrever o nosso contrato:
Solidez
//Identificador de licença SPDX: GPL-3.0
solidez do pragma > < =0.7.0 0.9.0;
contrato Eleitor {
//Uma estrutura para representar uma pessoa
Pessoa estruturada {
bool voted; // if true, that person already voted
uint vote; // index of the voted proposal
}
//Um mapeamento para acompanhar todos os eleitores
mapeamento (morada = > Pessoa) eleitores públicos;
//Uma função para registar um eleitor
função registerVoter () public {
voters[msg.sender].voted = false;
}
}
Identificador de Licença SPDX: A linha //SPDX-License-identificador: GPL-3.0 indica que o nosso contrato utiliza a GNU General Public License v3.0
. Esta é uma licença de software livre comumente usada que garante aos utilizadores finais a liberdade de executar, estudar, partilhar e modificar o software.
Diretiva Pragma: A solidez do pragma > =0.7.0 & lt; 0.9.0;
a declaração especifica que o contrato está escrito numa versão da Solidity que é maior ou igual a 0.7.0 e menor que 0.9.0. Ajuda a impedir que o contrato seja compilado com uma versão de compilador mais recente e incompatível.
Definição do Contrato: O bloco de eleitores {...}
do contrato define um novo contrato denominado Eleitor. É aqui que especificamos as variáveis de estado e as funções do contrato.
Definição de estrutura: Dentro do contrato, definimos uma Pessoa estruturada que representa uma pessoa
no nosso sistema de votação. Cada pessoa
tem um booleano votado
que indica se já votou e um número inteiro de votos
que acompanha a proposta em que votou.
Variável de Estado: O mapeamento (endereço = > Pessoa) eleitores públicos;
declaração declara uma variável de estado eleitores
que cria uma ligação entre um endereço Ethereum e uma estrutura Pessoa
. Isto permitir-nos-á acompanhar quem é elegível para votar no sistema e qual é o seu voto. A palavra-chave pública
cria automaticamente uma função de melhor para os eleitores
.
Definição de Função: A função registerVoter () public {...}
block define uma função pública que permite aos utilizadores registarem-se como eleitores no sistema. Os eleitores [msg.sender] .votou = false;
declaração define o status votado do novo
eleitor como
falso.
É 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 o seu código para garantir que tudo está a funcionar conforme o esperado. No IDE Remix, pode compilar o seu contrato clicando no ícone do compilador Solidity na barra lateral esquerda (o terceiro a partir do topo) e, em seguida, clicando no botão “Compilar”.
Na próxima lição, aprenderemos como permitir que os eleitores registados votem e implementem a lógica para um sistema de votação. Mas por enquanto, brinque com o contrato e familiarize-se com o ambiente Remix. Acabou de dar o seu primeiro passo no mundo do desenvolvimento de contratos inteligentes!
Votação descentralizada refere-se a um sistema de votação que opera numa cadeia de blocos. A ideia chave aqui é alavancar 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 cadeia de blocos que pode ser vista por todos os participantes mas só pode ser modificada pelo eleitor até que o voto seja dado. Uma vez que uma votação é emitida, é gravada na cadeia de blocos e não pode ser alterada, fornecendo um mecanismo de votação transparente e inviolável.
O Remix IDE (Integrated Development Environment) é uma poderosa ferramenta de código aberto concebida especificamente para o desenvolvimento de contratos inteligentes Ethereum. Funciona diretamente no seu navegador web, por isso não precisa de instalar nada no seu computador.
Pode aceder ao IDE Remix em https://remix.ethereum.org. Quando abre o Remix no seu navegador, vai encontrar três painéis:
Painel Esquerdo: É aqui que pode criar, importar e gerir os seus ficheiros Solidity. Também inclui vários plugins para compilar, testar, depuração e implementar os seus contratos.
Painel Central: Este é o seu editor de código. Aqui vai escrever e editar o seu código Solidity.
Painel direito: Este painel fornece várias ferramentas para compilar os seus contratos, implementá-los na rede Ethereum (seja numa rede Ethereum real ou numa simulação de VM JavaScript) e interagir com os seus contratos implementados.
Vamos começar com um simples contrato de “eleitor”. Este contrato irá acompanhar os eleitores no nosso sistema.
No IDE Remix, vá para “Explorador de Ficheiros” e clique no ícone “+” para criar um novo ficheiro. Dá o nome Voter.sol
.
Agora, vamos começar a escrever o nosso contrato:
Solidez
//Identificador de licença SPDX: GPL-3.0
solidez do pragma > < =0.7.0 0.9.0;
contrato Eleitor {
//Uma estrutura para representar uma pessoa
Pessoa estruturada {
bool voted; // if true, that person already voted
uint vote; // index of the voted proposal
}
//Um mapeamento para acompanhar todos os eleitores
mapeamento (morada = > Pessoa) eleitores públicos;
//Uma função para registar um eleitor
função registerVoter () public {
voters[msg.sender].voted = false;
}
}
Identificador de Licença SPDX: A linha //SPDX-License-identificador: GPL-3.0 indica que o nosso contrato utiliza a GNU General Public License v3.0
. Esta é uma licença de software livre comumente usada que garante aos utilizadores finais a liberdade de executar, estudar, partilhar e modificar o software.
Diretiva Pragma: A solidez do pragma > =0.7.0 & lt; 0.9.0;
a declaração especifica que o contrato está escrito numa versão da Solidity que é maior ou igual a 0.7.0 e menor que 0.9.0. Ajuda a impedir que o contrato seja compilado com uma versão de compilador mais recente e incompatível.
Definição do Contrato: O bloco de eleitores {...}
do contrato define um novo contrato denominado Eleitor. É aqui que especificamos as variáveis de estado e as funções do contrato.
Definição de estrutura: Dentro do contrato, definimos uma Pessoa estruturada que representa uma pessoa
no nosso sistema de votação. Cada pessoa
tem um booleano votado
que indica se já votou e um número inteiro de votos
que acompanha a proposta em que votou.
Variável de Estado: O mapeamento (endereço = > Pessoa) eleitores públicos;
declaração declara uma variável de estado eleitores
que cria uma ligação entre um endereço Ethereum e uma estrutura Pessoa
. Isto permitir-nos-á acompanhar quem é elegível para votar no sistema e qual é o seu voto. A palavra-chave pública
cria automaticamente uma função de melhor para os eleitores
.
Definição de Função: A função registerVoter () public {...}
block define uma função pública que permite aos utilizadores registarem-se como eleitores no sistema. Os eleitores [msg.sender] .votou = false;
declaração define o status votado do novo
eleitor como
falso.
É 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 o seu código para garantir que tudo está a funcionar conforme o esperado. No IDE Remix, pode compilar o seu contrato clicando no ícone do compilador Solidity na barra lateral esquerda (o terceiro a partir do topo) e, em seguida, clicando no botão “Compilar”.
Na próxima lição, aprenderemos como permitir que os eleitores registados votem e implementem a lógica para um sistema de votação. Mas por enquanto, brinque com o contrato e familiarize-se com o ambiente Remix. Acabou de dar o seu primeiro passo no mundo do desenvolvimento de contratos inteligentes!