Unidade 2 / 11

Suporte para redação de contratos inteligentes: rascunho de Solidity/Vyper e geração segura de código

Ganhos:

  • Capacidade de usar inteligência artificial para produzir estruturas, testes e revisar rascunhos baseados em bibliotecas comprovadas (por exemplo, OpenZeppelin) e entender que os humanos garantem a segurança da produção
  • Capacidade de verificar a versão do código, padrão e controle de acesso produzido pela inteligência artificial através de compilação, testes e testnet
  • Ser capaz de distinguir que compilação não significa ser seguro e que testnet e auditoria são essenciais.

Escrever um contrato inteligente é diferente de um software comum: o código que você escreve é ​​público, imutável e um programa que movimenta dinheiro diretamente. Nesta unidade, você aprenderá como usar a IA como assistente de desenvolvimento de contratos inteligentes; Aprenderemos desde a produção do rascunho até a redação do teste, desde a recuperação de padrões até a otimização do gás (taxa de transação). Mas sejamos claros desde o início: a IA produz projetos; Os humanos garantem o código seguro que entra em produção.

Base primeiro: linguagem e ambiente

A linguagem de contrato inteligente mais comum é Solidity (a linguagem de Ethereum e EVM – Ethereum Virtual Machine, a máquina virtual na qual os contratos são executados – cadeias compatíveis). A alternativa é Vyper (uma linguagem semelhante ao Python que pretende ser mais restrita e legível). Seu código consome gás (o custo de cada transação para o blockchain); Código ineficiente é caro. Manter esses termos claros no contexto fornecido à IA é fundamental para obter resultados precisos.

Onde a IA é mais valiosa não é “escrever do zero”, mas sim produzir a estrutura + um bom molde: um começo compatível com os padrões, um modelo ao qual você pode adicionar sua experiência.

Camadas de uso de IA na codificação

1. Gerando esqueletos. A IA explora rapidamente o esqueleto de um token padrão (ERC-20) ou NFT (ERC-721 – um padrão exclusivo de ativos digitais). Mas certifique-se de fazer com que a IA use uma biblioteca comprovada: por exemplo, OpenZeppelin (a biblioteca de contratação padrão auditada e confiável da comunidade). A regra é usar o bloco testado em vez de escrever a segurança do zero.

2. Descrição e revisão da função. Explicar uma função existente para a IA permite detectar erros lógicos antecipadamente.

3. Geração de testes. A IA é boa na geração de casos de teste para casos extremos: entrada zero, número muito grande, chamada não autorizada, chamada repetida. Isso lembra um dos cenários que se pula.

4. Gás e legibilidade. A IA sinaliza padrões caros, como gravações de armazenamento desnecessárias, e sugere alternativas.

Dica: instrua a IA a “desenvolver os contratos auditados do OpenZeppelin e reescrever a segurança do zero”. É muito mais arriscado para uma IA escrever código de segurança original do que usar uma biblioteca testada.

Alerta fraco / Alerta forte

Alerta fraco:

Escreva-me um contrato simbólico.

Este prompt é perigoso: não está claro qual padrão, qual cadeia, qual biblioteca, qual requisito de segurança. A IA gera código aleatório, possivelmente desatualizado ou inseguro.

Alerta poderoso:

Sua função: desenvolvedor sênior do Solidity. Gere um rascunho de token ERC-20 para uma cadeia compatível com EVM. Regras:- Com base nos contratos ERC20 e Ownable auditados do OpenZeppelin.- Escreva explicitamente a versão e a linha de licença (SPDX) do Solidity.- Somente o proprietário tem permissão para cunhar; adicione uma tampa contra pressão infinita. - Adicione comentários NatSpec a cada função. - Escreva segurança do zero; Use o bloco padrão. - Adicione um aviso no final: "Este é um rascunho; auditoria e testes são necessários". Marque as áreas sobre as quais você não tem certeza com // TODO.

Diferença: um prompt forte fornece expectativas claras de função, padrão, biblioteca, limite de segurança, documentação e validação.

Quatro modelos copiáveis

1) Esqueleto baseado em padrões:

Sua função: Desenvolvedor Solidity. Gere estrutura de contrato [ERC-20 / ERC-721 / staking] com base na biblioteca auditada OpenZeppelin. Escreva a licença SPDX e a versão pragma. Adicione controle de acesso (quem pode ligar) a cada função externa. Reinventando a segurança; Use blocos padrão. Este é um rascunho.

2) Revisão de função:

Examine a seguinte função como um desenvolvedor sênior: o que ela faz, quais estados ela muda, quem pode chamá-la? Marque possíveis erros lógicos e riscos de segurança como HIPÓTESES, vinculando cada um a uma linha do código. Não diga “seguro” imediatamente; basta listar os pontos de atenção.

3) Rascunho do cenário de teste:

Propor casos de teste para este contrato (pode ser um rascunho para Foundry/Hardhat). Cobre especificamente casos limites: entrada zero, número muito grande, chamada não autorizada, chamada reentrante, fundos insuficientes. Escreva O QUE cada teste confirma.

4) Revisão de gás e legibilidade:

Neste contrato marque os padrões que podem reduzir o custo do gás: escrita desnecessária de armazenamento, chamada externa no loop, cálculo repetitivo. Explique a diferença antes/depois em cada sugestão. Recomendar otimizações que quebram a segurança; Se não estiver claro, diga “pergunte ao auditor”.

Três mini cases (em números)

Caso 1 — Esqueleto salvou 4 horas. Uma equipe explorou o esqueleto de um contrato de aquisição de direitos baseado em biblioteca auditado com IA em 30 minutos; Demorou cerca de 4 horas manualmente. A equipe dedicou tempo à segurança e aos testes. O ganho não veio da transferência de segurança, mas da aceleração do tedioso quadro.

Caso 2 — Armadilha de versão desatualizada. A IA produziu um padrão que envia Ether bruto por transferência, o que não é mais recomendado porque os dados de treinamento estão desatualizados. O desenvolvedor percebeu isso e mudou para o padrão atual baseado em chamadas e protegido por reentrada. Lição: A biblioteca/padrão da IA ​​é sempre confirmada como atualizada; A IA não sabe além da data limite do treinamento.

Caso 3 — O rascunho de teste apresentou um bug oculto. O teste de “chamador não autorizado” que a IA produziu revelou que o desenvolvedor havia esquecido o controle de acesso em uma função. onlyOwner faltando 1 linha, capturada em 5 minutos na testnet; Poderia ter havido uma perda de fundos na rede principal. Lição: A IA cobre o ponto cego humano nos testes.

Lembrando padrões de segurança com IA

A IA é boa em lembrá-lo de padrões de vulnerabilidade conhecidos, como uma lista de verificação. Os padrões mais comuns:

  • Reentrada: Realizar uma chamada externa sem atualizar o status. Solução: ordem de verificações-efeitos-interações, guarda de reentrada.
  • Falta de controle de acesso: Qualquer pessoa pode chamar a função crítica.
  • Overflow/underfall de inteiros: Modern Solidity captura a maioria deles, mas ainda é um risco em código de baixo nível.
  • Validação de entrada inadequada: Endereço zero, controle de quantidade zero.
  • Dependência Oracle: Confiança cega em dados externos (como preço).
Atenção: a IA pode recuperar esta lista, mas não pode garantir se um item da lista está em seu código específico. A lista de verificação é um começo; Não é um substituto para o controle de contêineres.

Acertando o contexto: o segredo para um bom código de IA

A qualidade do código que a IA produz depende diretamente da qualidade do contexto que você fornece. No Web3 isso é especialmente crítico porque um pequeno detalhe (qual cadeia, qual versão do Solidity, qual padrão de token) altera toda a saída. Um bom contexto inclui:

  • Cadeia alvo e ambiente: rede principal Ethereum ou Camada 2 (cadeia lateral mais barata que roda no topo da cadeia principal)? O custo do gás e alguns recursos variam de acordo com a rede.
  • Versão e biblioteca: Qual versão do Solidity, qual versão do OpenZeppelin? Se nenhuma versão for especificada, a IA poderá produzir padrões desatualizados e obsoletos.
  • Requisitos de segurança: Existe um limite, pode ser pausado, pode ser aumentado? Isso deve ser dito desde o início.
  • Restrições: Limites claros como “não usar montagem”, “evitar chamada externa”, “otimizar o gás, mas manter a legibilidade”.

Outra técnica poderosa é pedir primeiro o plano à IA e depois o código: "Primeiro liste as funções deste contrato e o que cada uma fará; escreva o código assim que eu aprová-lo." Isso detecta antecipadamente a IA indo na direção errada e permite que você retenha a decisão arquitetônica.

Dica: pergunte à IA "por que você escreveu esse código assim?" perguntar. Explicar a lógica irá acelerar seu aprendizado e trazer à tona quaisquer erros lógicos (por exemplo, uma falsa suposição de segurança). Não confie no resultado de uma IA que não consegue defender seu próprio código.

Erros comuns

  • Colocando segurança na IA do zero. Use uma biblioteca testada.
  • Não confirmando a versão/padrão produzido pela IA. Os dados de treinamento podem ser antigos.
  • Ignorando a rede de teste. Cada rascunho deve ser executado na rede de teste antes de ser lançado.
  • Não adicionando NatSpec/documentação. A inspeção e a manutenção tornam-se difíceis.
  • Equívoco "É compilado, então é seguro". Ser compilado não significa estar seguro.
  • Esquecendo o controle de acesso. É um dos erros mais comuns e caros.

Em resumo

  • Na redação de contratos inteligentes, a IA produz estruturas, testes e rascunhos de revisão; Humano garante a segurança da produção.
  • Crie segurança não do zero, mas com base em bibliotecas comprovadas (por exemplo, OpenZeppelin).
  • A atualidade das versões e padrões produzidos pela YZ é sempre confirmada.
  • Os stubs de teste são valiosos na captura de pontos cegos humanos (casos limites, controle de acesso).
  • Ser compilado não significa estar seguro; testnet e auditoria são essenciais.

Tarefa de aplicativo

Para um token ERC-20 simples, gere um rascunho usando o prompt "esqueleto baseado em padrões" acima. Então: (1) verifique se ele usa uma biblioteca verificada, (2) verifique os controles de acesso, (3) gere testes com o prompt "rascunho do caso de teste" e execute pelo menos um teste de chamador não autorizado. Encontre e anote pelo menos um ponto de segurança que a IA deixou passar.

lista de verificação

  • [] Afirmei claramente o padrão e a cadeia no prompt.
  • [] Eu queria uma produção comprovada baseada em biblioteca.
  • [] Licença SPDX e versão pragma disponíveis.
  • [ ] Existe controle de acesso em todas as funções críticas.
  • [] Criei e executei testes para casos limite.
  • [] Confirmei que a biblioteca/padrão está atualizada.
  • [ ] Marquei o código para auditoria e teste; Não entendi sem supervisão na rede principal.