Visibilidade em Solidity: Como isso Impacta a Segurança da Aplicação

Bellum Galaxy
bellum-galaxy-community
3 min readApr 9, 2024

Esse artigo foi escrito por Barba.

Nas últimas semanas, exploramos diversos aspectos cruciais do desenvolvimento seguro em blockchain, desde as práticas básicas até a importância de uma auditoria robusta. Hoje, mergulharemos em um conceito fundamental, porém crítico para o ecossistema de blockchains: a visibilidade de funções e variáveis no Solidity.

Imagem gerada por AI.

Visibilidade no Solidity: Um Pilar para Segurança de Contratos

Solidity, a linguagem de programação predominante para escrever contratos inteligentes, oferece diferentes níveis de visibilidade para funções e variáveis. Esses níveis determinam como e de onde uma função ou variável pode ser acessada, sendo crucial para a segurança do contrato.

Funções

  • Externa: Acesso exclusivo fora do contrato.
  • Pública: Acessível dentro e fora do contrato.
  • Interna: Acesso permitido apenas dentro do contrato e por contratos derivados.
  • Privada: Acesso estritamente limitado ao contrato que a declara.

Variáveis

  • Pública: Similar às funções públicas, com a adição de uma função de busca criada automaticamente pelo Solidity.
  • Interna: Acessível apenas dentro do contrato e seus derivados.
  • Privada: Acesso restrito ao contrato que a declara.

Por padrão, variáveis são internas, sublinhando a preferência de Solidity pela restrição de acesso como medida de segurança. Mas, o que acontece quando queremos armazenar informações sensíveis, como senhas, em variáveis privadas? Embora a variável em si seja inacessível diretamente por outros contratos, é fundamental entender que todos os dados no blockchain são públicos. Portanto, a visibilidade controla o acesso ao invés da visibilidade dos dados em si.

Implementando Visibilidade: Boas Práticas

A seleção cuidadosa do nível de visibilidade é mais do que uma questão de sintaxe; é uma decisão de design crítica que impacta a segurança e a integridade dos contratos inteligentes.

Variáveis e Funções: Detalhando a Visibilidade

  • Variáveis Internas e Privadas: São essenciais para manter o estado interno do contrato seguro e inacessível de fora, protegendo a lógica e os dados sensíveis do contrato.
  • Variáveis Públicas: Facilitam a leitura de estados do contrato sem comprometer a segurança, graças as funções de busca criadas automaticamente pelo Solidity.
  • Funções Externas: Otimizam o uso de gás quando chamadas de fora do contrato, mas não podem ser chamadas internamente, forçando uma clara separação de lógica externa e interna.

Conclusão: A Arte da Visibilidade em Solidity

A escolha do nível de visibilidade não é trivial; ela reflete um balanceamento entre segurança, funcionalidade e eficiência de gás. Como desenvolvedores, nosso objetivo é aproveitar essas opções para construir contratos inteligentes não apenas funcionais, mas seguros.

Lembre-se: a transparência é a alma da blockchain, mas a visibilidade deve ser meticulosamente controlada. Com as práticas corretas, você estará bem equipado para contribuir para um ecossistema de blockchain mais seguro e confiável.

Precisa de orientação para melhorar a qualidade dos seus testes, preparar o seu projeto para uma auditoria, ou está procurando por um auditor independente?

Entre em contato comigo no LinkedIn.

Conecte-se Conosco:

Visite nosso site, junte-se ao nosso Discord, siga-nos no X, Instagram e no LinkedIn para ficar por dentro de nossas aventuras e insights.

--

--

Bellum Galaxy
bellum-galaxy-community

An educational community to bring science and technology to all.