Desafio Tipos em Solidity
Vamos desvendar os segredos dos tipos em Solidity!
Dica: Antes de iniciar aprenda um pouco sobre os tipos de solidity e struct.
Desafio:
Crie um contrato inteligente em Solidity que utilize os tipos int, bool, string e address para realizar as seguintes tarefas:
1. Loja de Heróis:
Inventário: Armazene informações sobre seus heróis favoritos em um array de structs. Cada struct deve conter os seguintes atributos:
name: Nome do herói (tipostring)power: Poder do herói (tipoint)active: Herói está ativo? (tipobool)
Funções:
addHero: Adicione um novo herói ao inventário.removeHero: Remova um herói do inventário.getHero: Obtenha as informações de um herói específico.activateHero: Ative um herói para que ele possa ser usado em batalhas.deactivateHero: Desative um herói para que ele descanse e treine.
2. Sistema de Voto:
Votantes: Armazene o endereço de cada votante em um array.
Votos: Registre os votos de cada votante em um mapping. A chave do mapping será o endereço do votante e o valor será um
stringque indica o voto ("Sim" ou "Não").Regras:
Apenas quem esta registrado como votantes pode votar;
Apenas o Juiz registrado no contrato pode adicionar votantes.
Registrar o final da votação apos um tempo inicial, dica ver sobre block.timestamp
Funções:
addVoter: Adicione um novo votante ao sistema.vote: Permita que um votante registre seu voto.getVoteCount: Obtenha a contagem de votos "Sim" e "Não".
3. Loja de Equipamentos:
Equipamentos: Armazene informações sobre seus equipamentos em um array de structs. Cada struct deve conter os seguintes atributos:
name: Nome do equipamento (tipostring)type: Tipo do equipamento (tipostring, por exemplo, "armadura", "arma", "poção")price: Preço do equipamento (tipoint)
Funções:
addItem: Adicione um novo equipamento à loja.removeItem: Remova um equipamento da loja.buyItem: Permita que um jogador compre um equipamento.getInventory: Obtenha a lista de equipamentos disponíveis na loja.
4. Contrato de Registro de Mensagens:
Vamos desenvolver um contrato em Solidity que permita aos usuários registrar mensagens em um blockchain. O contrato funcionará como um mural digital descentralizado e imutável, onde cada mensagem é armazenada permanentemente e pode ser visualizada por qualquer pessoa.
Funções:
Registrar de Mensagens: Os usuários podem enviar mensagens de texto livremente. As mensagens são armazenadas na blockchain de forma permanente e imutável. Cada mensagem recebe um identificador único (ID).Visualização de Mensagens: Os usuários podem visualizar todas as mensagens registradas.
Regras Gerais:
Utilize os tipos
int,bool,stringeaddressde forma correta e eficiente em cada tarefa.Siga boas práticas de codificação para garantir a clareza, legibilidade e segurança do seu contrato.
Teste o contrato com diferentes cenários para garantir que ele funcione conforme o esperado.
Dicas:
Adicione funcionalidades extras para tornar seu contrato ainda mais épico!
Compartilhe seu código com a comunidade para que todos possam aprender juntos.