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 (tipo string)

    • power: Poder do herói (tipo int)

    • active: Herói está ativo? (tipo bool)

  • 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 (tipo string)

    • type: Tipo do equipamento (tipo string, por exemplo, "armadura", "arma", "poção")

    • price: Preço do equipamento (tipo int)

  • 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 e address 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.