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
string
que 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
,string
eaddress
de 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.