WEB3DEV

Cover image for Diagramação de Contratos Inteligentes para Segurança: Uma Abordagem Visual | Sm4rty
Fatima Lima
Fatima Lima

Posted on

Diagramação de Contratos Inteligentes para Segurança: Uma Abordagem Visual | Sm4rty

Diagramação de Contratos Inteligentes para Segurança: Uma Abordagem Visual | Sm4rty

Image description

Olá, eu sou Samrat Gupta, também conhecido como Sm4rty, um auditor independente de contratos inteligentes e caçador de bugs em tempo parcial. Nos últimos meses, observei uma tendência crescente de pessoas compartilhando diagramas de bases de código de protocolo durante as auditorias.
Neste artigo, explorarei a importância dos diagramas no contexto da auditoria de contratos inteligentes e como podemos criar diagramas semelhantes para nossa próxima auditoria.

Vamos começar:

Por que desenhar diagramas?

Image description

  1. Melhora a compreensão do código: Os diagramas podem ajudar os auditores a obter uma compreensão mais profunda da base de código e de seu funcionamento interno.
  2. Ajuda a descobrir problemas críticos: Como sabiamente observado por gPersoon, "problemas interessantes geralmente surgem somente depois de se obter uma compreensão abrangente do protocolo.” Os diagramas, especialmente benéficos para pessoas com aptidão visual, ajudam a descobrir essas questões cruciais
  3. Facilita a comunicação efetiva: Os diagramas são uma ferramenta poderosa para entender sistemas complexos. Eles podem ajudar as equipes de auditoria e os desenvolvedores de protocolos a entender melhor o sistema, identificar possíveis vulnerabilidades e comunicar suas descobertas uns aos outros.
  4. Agrega valor ao protocolo: Os diagramas podem agregar um valor significativo durante os engajamentos de segurança, fornecendo representações arquitetônicas claras. Isso beneficia não apenas a equipe de auditoria, mas também os desenvolvedores de protocolos, expandindo seus recursos de documentação.

Ferramentas para a Criação de Diagramas:

Image description

Existem basicamente algumas ferramentas automatizadas para criar diagramas.

Ferramentas automatizadas: As ferramentas automatizadas podem gerar diagramas de forma rápida e fácil, mas nem sempre são precisas ou completas. Algumas ferramentas automatizadas populares incluem:

  • Solidity Metrics
  • Surya

Ferramentas manuais: As ferramentas manuais exigem mais esforço, mas podem ser mais precisas e completas. Algumas ferramentas manuais populares incluem:

  • Miro
  • PowerPoint
  • Draw.io
  • Qualquer outra ferramenta on-line de UML/quadro branco.
  • Papel e caneta físicos ou quadro branco.

Ferramentas automatizadas versus Desenho Manual?

  • As ferramentas automatizadas podem ser uma boa opção para criar diagramas rápidos e básicos. Elas podem ser mais rápidas e fáceis de usar, mas nem sempre são tão precisas ou completas quanto os diagramas criados manualmente.
  • As ferramentas manuais podem ser uma opção melhor para criar diagramas precisos e completos, especialmente para sistemas complexos. A criação manual de diagramas exige mais esforço, mas pode ajudar os auditores a entender melhor o sistema e a identificar problemas mais sérios.

Tipos de Diagramas:

1.Diagramas de Estado:
Os diagramas de estado mostram o estado atual de um contrato inteligente e as transições entre diferentes estados ao interagir com o contrato. Pense em "ir de um estado para outro" ao interagir com um contrato. Eles podem ser úteis para visualizar como os contratos passam de um estado para outro durante diferentes interações.
2.Diagramas de Contrato:
Os diagramas de contrato fornecem uma visão geral dos contratos individuais em um ecossistema, delineando suas funções e relacionamentos. Eles também podem mostrar chamadas de função, o que pode ajudar a visualizar como diferentes funções em diferentes contratos inteligentes interagem e trabalham juntas.

Criando Diagramas de Contrato

Um diagrama de contrato é uma representação visual das relações entre os diferentes contratos inteligentes em um projeto.

Nesta demonstração, desenharemos um diagrama de contrato para a disputa do Beam Auction em Sherlock usando Miro. Para acompanhar o processo, é recomendável dar uma olhada rápida na base de código.

1.Entenda a visão geral do projeto: Leia os documentos, como especificações e materiais do projeto, e entenda as relações entre todos os componentes do contrato inteligente. Isso lhe dará uma compreensão básica do projeto e de como os contratos se interligam.
2.Mapeie os contratos: Analise todos os contratos do projeto. Para cada contrato, desenhe um retângulo em seu diagrama. Isso criará uma representação visual de todos os contratos do projeto.

Image description

3.Adicione funções ao diagrama: Em seguida, em cada caixa de contrato, desenharemos uma pequena caixa para cada função externa e interna. Isso mostrará as diferentes funções que estão disponíveis em cada contrato.

Image description

4.Desenhe as relações entre os contratos e as funções: Desenhe uma seta de cada função para todos os contratos/funções que ela chama. Isso mostrará como os diferentes contratos e funções estão relacionados entre si.

Image description

5.Otimize para obter clareza: Depois de criar inicialmente as conexões, dê um passo atrás para avaliar a clareza geral do diagrama. Pode ser necessário reorganizar os elementos para minimizar o cruzamento de linhas e melhorar a legibilidade do diagrama.

Image description

Como Criar Diagramas de Máquina de Estado?

Um diagrama de máquina de estado é uma representação gráfica dos diferentes estados em que um sistema pode estar e das transições entre esses estados.

Nesta demonstração, desenharemos um diagrama de contrato para a disputa Beam Auction em Sherlock usando Miro. Para acompanhar o processo, é recomendável dar uma olhada rápida na base de código.

1.Identifique Operações de Mudança de Estado: Comece identificando os eventos que podem causar transições entre estados. Neste exemplo, a operação que estamos considerando é a "cunhagem de um NFT".
2.Identifique Estados: Reconheça os diferentes estados em que o sistema pode existir. Neste exemplo, os diferentes estados são:

  • Estado inicial: O leilão está definido, mas ainda não foi iniciado.
  • Leilão iniciado: O leilão foi iniciado e os usuários podem cunhar NFTs.
  • Leilão encerrado: O leilão terminou.

3.Mapeie Transições de Estado: Mapeie as transições entre os estados com base nas ações identificadas. Neste exemplo, algumas transições são:

  • Estado inicial → O leilão iniciado quando o leilão é iniciado.
  • Leilão iniciado → leilão encerrado quando o leilão é finalizado.
  • MINT CAP Atingido→ Quando o limite de cunhagem é atingido.

4.Determinar os Estados Inicial e Final: Identifique o estado inicial do sistema e quaisquer estados finais que representem o término ou a conclusão do sistema. Neste exemplo, o estado inicial é o estado em que o leilão foi definido, mas ainda não foi iniciado, e o estado final é o estado de término do leilão.

5.Lidar com pontos de decisão: Representam pontos de decisão onde o próximo estado depende de determinadas condições ou escolhas. Neste exemplo, o ponto de decisão é se o leilão já começou ou não. Se o leilão ainda não tiver começado, o próximo estado será o estado de leilão iniciado. Se o leilão tiver começado, o próximo estado dependerá do fato de o limite de cunhagem ou o limite por endereço ter sido atingida.

6.Otimizar para obter clareza: Revise e refine o diagrama de estado quanto à precisão, clareza e integridade. Certifique-se de que as transições façam sentido e, em nosso exemplo, verificamos se ele representa com precisão o comportamento do Contrato de Leilão Holandês (começa com um lance alto e vai baixando) de Mérito durante a cunhagem de NFT.

Depois de concluir todas as etapas, desenhamos com êxito um diagrama de máquina de estado para cunhar um NFT em um leilão. Rastreamos algumas alterações nas variáveis de estado, como MINT_CAP, MINT_CAP_PER_ADDRESS, totalRaised etc.

Image description

Mais Alguns Exemplos:

Abaixo estão alguns exemplos que podem nos ajudar a desenhar diagramas mais complexos:

1.Diagrama SudoSwap por Gerard Persoon:

Image description

2.Diagrama de Protocolo Lukso por Gerard Persoon:

Image description

3.Diagrama de estado do Modelo Governança Composta por Jonatas Martins:

Image description

4.Diagrama AmbitFinance por *CharlesPaladin *(Desenho Físico no Quadro Branco):

Image description

5.Diagrama FrankenCoin por Flint_14si2o:

Image description

6.Diagrama TapoicaDAO por 0xStalin:

Image description

7.Diagrama de estado de metastreetxyz por Jonatas Martins:

Image description

8.Diagrama Ondo Finance por Zigtur:

Image description

Créditos

Conecte-se comigo:

[Twitter](https://twitter.com/Sm4rty) | LinkedIn | Github | Instagram_

Obrigado pela leitura. Quaisquer sugestões são sempre bem-vindas!

Image description

Esse artigo foi escrito por Sm4rty e traduzido por Fátima Lima. O original pode ser lido aqui.

Top comments (0)