← Últimos artigos
💻 computer science

Malicious Code Detection in Smart Contracts via Opcode Vectorization

Este artigo propõe uma abordagem baseada em aprendizado de máquina para detectar código malicioso em contratos inteligentes através da classificação e simplificação de opcodes, comparando então a eficácia dos métodos de vetorização N-Gram e TF-IDF em opcodes brutos e processados para otimizar a extração de características para o treinamento do classificador.

Autores originais: Huanhuan Zou, Zongwei Li, Xiaoqi Li

Publicado 2026-02-03
📖 5 min de leitura🧠 Leitura aprofundada

Autores originais: Huanhuan Zou, Zongwei Li, Xiaoqi Li

Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

Imagine o blockchain como um grande livro de registro digital público onde as pessoas escrevem "smart contracts" (contratos inteligentes). Pense nesses contratos não como documentos jurídicos, mas como máquinas de venda automática autogerenciáveis. Você coloca o dinheiro, a máquina verifica as regras e, se tudo estiver correto, ela te entrega um lanche. Se o código dentro da máquina estiver quebrado ou tiver uma armadilha escondida (código malicioso), você pode perder seu dinheiro, ou a máquina pode travar inteiramente.

Este artigo é como uma equipe de seguranças tentando descobrir como identificar uma máquina de venda automática quebrada ou armada antes que alguém se machuque. Aqui está como eles tentaram fazer isso, explicado de forma simples:

1. O Problema: Muitas Linguagens

Os smart contracts são escritos em código, mas o blockchain não lê a versão em "Inglês" (o código fonte) que os humanos escrevem. Ele só entende uma linguagem muito específica e robótica chamada Opcodes.

  • A Analogia: Imagine que o contrato é uma receita. Os humanos leem a receita em Inglês ("Adicione duas xícaras de farinha"). O blockchain, no entanto, só entende uma lista de comandos químicos ("Misture ingrediente A com ingrediente B").
  • O Problema: Existem centenas desses comandos químicos. Se você apenas listá-los aleatoriamente, é difícil para um computador distinguir entre uma receita segura e uma envenenada.

2. A Solução: Agrupamento e Contagem

Os autores decidiram ensinar um computador a ler esses comandos robóticos transformando-os em uma lista simples de números (vetores). Eles fizeram isso em três etapas:

  • Etapa A: Agrupando os Comandos (Simplificação)
    Em vez de tratar cada comando individual como único, eles agruparam os semelhantes.

    • Analogia: Imagine que você tem 32 tipos diferentes de botões "Push" (Push1, Push2... Push32). Em vez de lembrar 32 botões diferentes, os autores decidiram chamar todos apenas de "Push". Eles fizeram isso para outros grupos como "Jump" ou "Math". Isso reduziu o ruído e tornou a lista mais curta e fácil de estudar.
  • Etapa B: Olhando para Pares (N-Gram)
    Eles não olharam apenas para comandos individuais; eles olharam para pares de comandos que acontecem um ao lado do outro.

    • Analogia: Se você vê a palavra "Sal" em uma receita, é comum. Mas se você vê "Sal" seguido imediatamente por "Veneno", isso é um sinal de alerta. Eles observaram esses pares (como "Push" seguido de "Jump") para entender o fluxo do contrato.
  • Etapa C: Pesando a Importância (TF-IDF)
    Eles usaram um truque matemático para descobrir quais pares eram realmente importantes.

    • Analogia: Se quase todas as receitas seguras usam o par "Misturar depois Verter", esse par não é muito especial. Mas se um par específico de comandos aparece apenas nas receitas "envenenadas", esse par é uma pista enorme. Eles deram pontuações altas para os pares raros e suspeitos e pontuações baixas para os comuns.

3. O Experimento: Treinando os Detetives

Depois de transformarem os contratos nessas listas numeradas, eles os alimentaram em cinco computadores "detetives" diferentes (modelos de Machine Learning como Árvores de Decisão e Florestas Aleatórias) para ver se eles conseguiam identificar os contratos ruins.

  • O Resultado: Eles tentaram duas formas de fazer isso.
    1. Método 1: Apenas olhando para a lista bruta de comandos.
    2. Método 2: Olhando para os pares simplificados e suas pontuações de importância (o método descrito acima).
  • O Desfecho: O segundo método (olhar para os pares) funcionou ligeiramente melhor para um detetive específico (a Árvore de Decisão), mas, no geral, os resultados foram mistos.

4. O Grande Obstáculo: Não Há Exemplos Ruins Suficientes

O maior problema que os autores enfrentaram não foi a matemática; foi os dados.

  • A Analogia: Imagine que você está tentando ensinar um cachorro a reconhecer um lobo. Você mostra ao cachorro 500 fotos de ovelhas, mas você só tem 80 fotos de lobos.
  • A Realidade: No mundo real, a maioria dos smart contracts é segura. Os maliciosos são raros. Como eles tinham apenas um número minúsculo de contratos "ruins" para estudar, os modelos de computador ficaram confusos. Eles não conseguiram aprender o padrão de um "lobo" porque não tinham fotos de lobos suficientes para comparar com as ovelhas.

5. O Futuro: Construindo uma Biblioteca Maior

Os autores concluem que, embora o método de traduzir a linguagem robótica dos smart contracts em números seja uma boa ideia, eles precisam de mais dados para provar que isso funciona perfeitamente.

  • O que planejam fazer a seguir: Eles querem construir um robô (um web crawler) para coletar automaticamente milhares de contratos da internet para criar uma biblioteca muito maior. Eles também querem tentar ensinar o computador usando contratos "não rotulados" (onde o computador tem que adivinhar sozinho quais são os ruins), porque encontrar tantos contratos conhecidos como "ruins" é muito difícil.

Em Resumo:
O artigo propõe uma maneira inteligente de traduzir a linguagem robótica dos smart contracts para um formato que os computadores possam comparar facilmente. Eles descobriram que observar pares de comandos ajuda, mas bateram de frente com uma barreira porque simplesmente existem poucos exemplos de contratos "ruins" no mundo para treinar o sistema de forma eficaz. Eles precisam de mais dados antes que seu segurança possa ser totalmente confiável.

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →