Mappings
Os mappings em Solidity são uma estrutura de dados do tipo "key-value" (chave-valor) que fornece uma forma eficiente e flexível de armazenar e acessar dados dentro de contratos inteligentes. São comparáveis a dicionários ou mapas em outras linguagens de programação, onde cada chave única está associada a um valor. Os mappings são particularmente úteis no desenvolvimento de aplicações descentralizadas (DApps) para gerenciar conjuntos de dados como saldos de contas, relações entre entidades e outros tipos de dados estruturados.
Características dos Mappings
Chaves Únicas: Cada chave em um mapping deve ser única e é utilizada para acessar um valor específico. As chaves podem ser de qualquer tipo primitivo como
address
,uint
,bytes
, etc. Tipos de dados complexos como arrays ou structs não são permitidos como chaves.Valores Dinâmicos: Os valores armazenados em um mapping podem ser de qualquer tipo, incluindo tipos primitivos, arrays, structs e até outros mappings.
Inicialização por Padrão: Os mappings não possuem um tamanho fixo e não é possível obter seu comprimento. Todos os valores possíveis estão virtualmente presentes e são inicializados por padrão com o valor padrão de seu tipo (por exemplo,
0
parauint
,false
parabool
, etc.).Privacidade: Não é possível iterar sobre os mappings nem obter uma lista de suas chaves diretamente em Solidity. Cada acesso a um valor deve ser feito através de uma chave conhecida.
Declaração
Um mapping é declarado especificando o tipo das chaves e o tipo dos valores. A sintaxe geral é:
Exemplo Básico
No exemplo acima, criamos um mapping denominado balances
formado por pares onde a chave é um address e o valor é um inteiro sem sinal.
Para atualizar o saldo de um endereço específico utilizamos a expressão.
Uso Comum de Mappings em Contratos Inteligentes
Saldos de Tokens: Para manter um registro dos saldos de criptomoedas ou tokens ERC-20 de cada endereço.
Permissões e Funções: Para gerenciar permissões ou funções específicas atribuídas a diferentes endereços.
Relações entre Entidades: Para mapear relações um-para-um ou um-para-muitos entre diferentes entidades, como usuários e seus ativos ou tarefas.
Considerações de Segurança
Ao trabalhar com mappings, é crucial gerenciar corretamente o acesso e as atualizações aos dados para prevenir vulnerabilidades de segurança. Por exemplo, ao atualizar um valor em um mapping, certifique-se de que apenas entidades autorizadas possam realizar essa atualização, utilizando modificadores de acesso ou verificações de permissões apropriadas.
Last updated