Lição: 034: Mapeamentos em Solidity
Os mapeamentos são uma das estruturas de dados mais importantes em Solidity, permitindo que você crie pares de chave-valor para armazenar e recuperar dados de forma eficiente. Nesta aula, vamos explorar como usar mapeamentos em Solidity, juntamente com exemplos práticos.
O que é um Mapeamento?
Um mapeamento é semelhante a uma tabela hash ou dicionário em outras linguagens de programação. Ele permite associar uma chave única a um valor. A sintaxe para declarar um mapeamento é a seguinte:
Onde tipoChave
é o tipo de dado da chave e tipoValor
é o tipo de dado do valor.
É importante notar que os mapeamentos não têm um comprimento pré-definido e não armazenam as chaves em si; eles apenas mantêm o controle dos valores associados a essas chaves.
Sintaxe Básica
Aqui está um exemplo de como declarar um mapeamento simples:
Neste exemplo:
- O mapeamento chamado
saldos
usa umaddress
como chave e umuint
como valor. - Esse mapeamento pode ser usado para armazenar os saldos de diferentes endereços de carteira.
Definindo Valores em um Mapeamento
Para definir valores em um mapeamento, você pode simplesmente usar o operador de atribuição =
. Veja como adicionar ou atualizar um saldo:
Nesta função, quando um usuário chama depositar
, o valor do Ether enviado é adicionado ao seu saldo no mapeamento saldos
.
Recuperando Valores de um Mapeamento
Para acessar valores armazenados em um mapeamento, você pode referenciar a chave diretamente:
Esta função retorna o saldo do usuário especificado.
Exemplo: Contrato de Token Usando Mapeamentos
Vamos olhar um exemplo completo de um contrato de token simples que usa mapeamentos para acompanhar saldos e permissões:
Explicação do Contrato de Token
-
Variáveis de Estado:
nome
,simbolo
,decimais
efornecimentoTotal
definem as características do token.- O mapeamento
saldos
é usado para acompanhar o saldo de tokens de cada usuário. - O mapeamento
permissao
rastreia quanto um endereço está autorizado a gastar de outro endereço.
-
Construtor:
- O construtor atribui o fornecimento total de tokens à conta que implanta o contrato.
-
Funções:
transferir
: Permite transferir tokens entre endereços.aprovar
: Permite que outro endereço tenha permissão para gastar tokens em nome do chamador.transferirDe
: Executa uma transferência de um endereço para outro somente se a permissão tiver sido aprovada.
Conclusão
Os mapeamentos em Solidity oferecem uma maneira poderosa de gerenciar pares de chave-valor, permitindo que os desenvolvedores implementem funcionalidades como saldos de usuários e controle de acesso de forma eficiente. Compreender como usar mapeamentos é crucial para desenvolver contratos inteligentes robustos.
Nesta aula, cobrimos a sintaxe básica dos mapeamentos, como definir e recuperar valores, além de um exemplo prático no contexto de um contrato de token simples. À medida que você continuar desenvolvendo em Solidity, aproveitar as capacidades dos mapeamentos aprimorará a funcionalidade e a eficiência de seus contratos.