Desafio Solidity: Implementação de um Token

Objetivo

O objetivo deste desafio é implementar um contrato de token que siga a interface fornecida. Este exercício ajudará a entenderem melhor os conceitos de Solidity, como interfaces, eventos, e funções de leitura e escrita.

Interface do Token

A interface IToken define os métodos que o contrato de token deve implementar. Abaixo está a interface que vocês devem seguir:

interface IToken {
    // Getters
    function totalSupply() external view returns(uint256);
    function getName() external view returns (string memory);
    function getSymbol() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);

    // Functions
    function transfer(address recipient, uint256 amount) external returns (bool);
    
    // Event
    event Transfer(address indexed from, address indexed to, uint256 value);
}

Requisitos

  1. Nome e Símbolo do Token:

    • O token deve ter um nome (name) e um símbolo (symbol).

  2. Total Supply:

    • O token deve ter um total de tokens emitidos (totalSupply).

  3. Saldo de Tokens:

    • Cada endereço pode possuir um saldo de tokens (balanceOf).

  4. Transferência de Tokens:

    • Deve ser possível transferir tokens de um endereço para outro (transfer).

  5. Evento de Transferência:

    • O contrato deve emitir um evento Transfer sempre que uma transferência de tokens for realizada.

Tarefas

  1. Entender a Interface:

    • Compreender os métodos definidos na interface IToken.

  2. Implementar o Contrato:

    • Implementar o contrato MyToken que segue a interface IToken.

  3. Testar o Contrato:

    • Testar o contrato.

    • Verificar se os métodos de leitura (totalSupply, getName, getSymbol, balanceOf) funcionam corretamente.

    • Realizar transferências de tokens e verificar se o evento Transfer é emitido corretamente.

Checklist para Verificação

  • Conformidade com a Interface: O contrato deve implementar todos os métodos definidos na interface IToken.

  • Corretude: O contrato deve funcionar conforme esperado, sem erros ou bugs.

  • Eventos: O evento Transfer deve ser emitido corretamente durante as transferências de tokens.

  • Código Limpo: O código deve ser bem organizado e comentado, seguindo as melhores práticas de programação Solidity.

Boa sorte com o desafio! Este exercício irá ajudá-los a dominar os conceitos fundamentais de Solidity e a prática de implementação de contratos inteligentes.