---
title: "Caçando os caçadores: como encontrar caçadores de airdrop"
description: "Aprenda a encontrar caçadores de airdrop que realizam um ataque sybil antes do airdrop da Hop Exchange, com Issac Lau, da Alchemy, e a Trace API, durante a iniciativa Airdrop Hunter Bounty da Hop Exchange."
---

# Caçando os caçadores: como encontrar caçadores de airdrop

Historicamente, tanto protocolos quanto redes blockchain atraem usuários e liquidez com a promessa de tokens após o product-market fit. Esses tokens representam dois incentivos principais:

1. A capacidade de governar a direção do produto
1. Alocação monetária

Uma das críticas mais comuns à web2 é que seus usuários não têm nenhuma posse sobre as redes e aplicações para as quais contribuem e das quais fazem parte.

A Web3 oferece uma alternativa, um modelo de propriedade baseado em comunidade, no qual os tokens fazem parte essencial desse novo paradigma.

Dada a importância de uma mentalidade voltada à comunidade ao pensar em distribuição de tokens, projetos web3 buscam garantir que fazem airdrop \(ou seja, distribuem\) tokens a participantes ativos da comunidade que têm interesse direto no sucesso do produto.

Embora haja um debate válido e ativo sobre o que constitui um "membro ativo da comunidade", há uma parte que é objetivamente um mau agente—usuários e bots que realizam ataques sybil.

## O que é um ataque sybil?
Ataques sybil usam um único nó de rede para operar diversas identidades falsas, muitas vezes simultaneamente, dentro de uma rede Peer-to-Peer \(P2P\).

Um ataque sybil faz com que um pequeno número de atores da rede obtenha uma parcela indevida de influência, o que, no contexto de um airdrop, significa uma parcela maior de tokens de governança.

Em termos de caça a airdrops, isso significa interagir de forma inautêntica com protocolos e contratos.

## A estratégia da Hop Exchange contra caçadores de airdrop
Embora muitos airdrops passados ainda não tenham conseguido de fato reprimir maus agentes, a Hop Exchange introduziu um novo mecanismo que aproveita os membros de sua comunidade para reduzir o impacto de ataques sybil:

<CalloutBlock>

_"Estamos aceitando denúncias de endereços Sybil que ainda não foram descobertos. Quando a _[_Hop DAO_](https://hop.mirror.xyz/AI5fOUR0X_l0mktShDOx3mwr-hsB24gp8GvTWtS-MBc)_ estiver ativa, faremos uma proposta para recompensar aqueles que denunciaram endereços Sybil com 25% dos tokens economizados — sujeito a um bloqueio de 1 ano. As denúncias serão analisadas, e as recompensas serão apuradas por ordem de chegada."_

</CalloutBlock>

Como uma das primeiras iniciativas baseadas na comunidade a recompensar caçadores de caçadores de airdrop, a Hop liberou todo o poder da comunidade de desenvolvedores web3, incluindo eu mesmo.

Vamos explorar [minha contribuição aos esforços de descentralização da Hop DAO](https://github.com/hop-protocol/hop-airdrop/issues/377).

### Descobrindo caçadores de airdrop
Esta é uma representação gráfica dos endereços que identifiquei como parte de um ataque Sybil.

<ImageBlock
  src="https://media.alchemy.com/1704708401-sybil-attack-visualization.png"
  alt="Visualização de ataque Sybil."
  width={1409}
  height={1373}
  caption="Visualização de ataque Sybil."
/>

**Veja como interpretar a visualização do ataque sybil:**

Cada endereço é um nó no grafo, e todos os endereços exibidos estão conectados por transferências on-chain entre cada endereço, denotadas por cada aresta.

O atacante sybil exibe dois padrões distintos, com as arestas na cor azul denotando o **padrão um** e as arestas na cor verde denotando o **padrão dois**.

Nós na cor laranja denotam endereços que servem como conexões on-chain entre todas as contas sybil onde ocorreram transferências, e são incluídos no conjunto submetido devido a desvios em relação aos dois padrões principais descritos neste relatório.

#### Padrão \#1
Todos os endereços conectados por arestas azuis usaram a Hop Exchange para ir e voltar repetidamente entre a Gnosis Chain \(antiga xDai\) e a Polygon.

Cada endereço apresentou de forma proeminente transações Hop denominadas em ~1000 $USDC \(1 transação em USDT\) com uma variação de ± 250 dólares entre as transações, cruzando de uma chain para outra e voltando sequencialmente.

Além disso, cada lote de transações dentro de cada endereço ocorreu em um intervalo de tempo muito curto \(da ordem de 1 a 3 horas\).

<EmbeddedTable
  table={{
    columns: [
      { key: "1", width: 200, title: "Date", dataType: "object" },
      { key: "2", width: 200, title: "Source", dataType: "object" },
      { key: "3", width: 200, title: "Destination", dataType: "object" },
      { key: "4", width: 200, title: "Transfer ID", dataType: "object" },
      { key: "5", width: 200, title: "Transfer Tx", dataType: "object" },
      { key: "6", width: 200, title: "Token", dataType: "object" },
      { key: "7", width: 200, title: "Amount", dataType: "object" },
      { key: "8", width: 200, title: "Amount USD", dataType: "object" },
    ],
    data: [
      {
        "1": { title: "<p>7 months ago</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Gnosis</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Polygon</p>", tooltip: "", icon: "" },
        "4": { title: "<p>0xc2f05f...e38d7f</p>", tooltip: "", icon: "" },
        "5": { title: "<p>0x0d641e...ef4d42</p>", tooltip: "", icon: "" },
        "6": { title: "<p>USDC</p>", tooltip: "", icon: "" },
        "7": { title: "<p>695.2042</p>", tooltip: "", icon: "" },
        "8": { title: "<p>$695.472</p>", tooltip: "", icon: "" },
        id: 0,
      },
      {
        "1": { title: "<p>7 months ago</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Polygon</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Gnosis</p>", tooltip: "", icon: "" },
        "4": { title: "<p>0x9d6c1c...bc8403</p>", tooltip: "", icon: "" },
        "5": { title: "<p>0xcc434d...eea07c</p>", tooltip: "", icon: "" },
        "6": { title: "<p>USDC</p>", tooltip: "", icon: "" },
        "7": { title: "<p>697.0148</p>", tooltip: "", icon: "" },
        "8": { title: "<p>$697.284</p>", tooltip: "", icon: "" },
        id: 1,
      },
      {
        "1": { title: "<p>7 months ago</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Gnosis</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Polygon</p>", tooltip: "", icon: "" },
        "4": { title: "<p>0x5bcd1a...53ec67</p>", tooltip: "", icon: "" },
        "5": { title: "<p>0x7664cf...052e68</p>", tooltip: "", icon: "" },
        "6": { title: "<p>USDC</p>", tooltip: "", icon: "" },
        "7": { title: "<p>698.8394</p>", tooltip: "", icon: "" },
        "8": { title: "<p>$699.109</p>", tooltip: "", icon: "" },
        id: 2,
      },
      {
        "1": { title: "<p>7 months ago</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Polygon</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Gnosis</p>", tooltip: "", icon: "" },
        "4": { title: "<p>0xe2e215...724de6</p>", tooltip: "", icon: "" },
        "5": { title: "<p>0xdf5036...189bc4</p>", tooltip: "", icon: "" },
        "6": { title: "<p>USDC</p>", tooltip: "", icon: "" },
        "7": { title: "<p>700.6709</p>", tooltip: "", icon: "" },
        "8": { title: "<p>$700.941</p>", tooltip: "", icon: "" },
        id: 3,
      },
      {
        "1": { title: "<p>7 months ago</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Gnosis</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Polygon</p>", tooltip: "", icon: "" },
        "4": { title: "<p>0x59b08c...9c0e37</p>", tooltip: "", icon: "" },
        "5": { title: "<p>0x97aed4...01b3d7</p>", tooltip: "", icon: "" },
        "6": { title: "<p>USDC</p>", tooltip: "", icon: "" },
        "7": { title: "<p>702.5039</p>", tooltip: "", icon: "" },
        "8": { title: "<p>$702.775</p>", tooltip: "", icon: "" },
        id: 4,
      },
      {
        "1": { title: "<p>7 months ago</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Polygon</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Gnosis</p>", tooltip: "", icon: "" },
        "4": { title: "<p>0xee2783...7c9c22</p>", tooltip: "", icon: "" },
        "5": { title: "<p>0xca1dcc...196bd3</p>", tooltip: "", icon: "" },
        "6": { title: "<p>USDC</p>", tooltip: "", icon: "" },
        "7": { title: "<p>704.3302</p>", tooltip: "", icon: "" },
        "8": { title: "<p>$704.602</p>", tooltip: "", icon: "" },
        id: 5,
      },
      {
        "1": { title: "<p>7 months ago</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Gnosis</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Polygon</p>", tooltip: "", icon: "" },
        "4": { title: "<p>0x1dd1ec...a9d0a4</p>", tooltip: "", icon: "" },
        "5": { title: "<p>0x526463...9b34b2</p>", tooltip: "", icon: "" },
        "6": { title: "<p>USDC</p>", tooltip: "", icon: "" },
        "7": { title: "<p>707.0044</p>", tooltip: "", icon: "" },
        "8": { title: "<p>$707.277</p>", tooltip: "", icon: "" },
        id: 6,
      },
    ],
  }}
/>

**Aqui está um exemplo desse comportamento:**

[https://explorer.hop.exchange/?account=0x4bc25a712b87c1e4a42df9ffac3662fe467b7e9a](https://explorer.hop.exchange/?account=0x4bc25a712b87c1e4a42df9ffac3662fe467b7e9a)

#### Como o padrão \#1 foi descoberto?
O padrão \#1 foi encontrado ao rastrear transferências on-chain do Ethereum usando a Alchemy Transfers API. Após investigação, um conjunto de endereços conectados, a saber, o Padrão \#2, foi conectado ao Padrão \#1 ao rastrear transferências entre o endereço central \(0xb23691043293de4deeae3b565bd33bc059f264eb\) e seus spokes associados na Avalanche mainnet.

#### Padrão \#2
Para os endereços conectados por arestas verdes, os endereços atacantes usaram a Hop Exchange múltiplas vezes ao longo de um período de várias horas, realizando trocas repetidas principalmente da Gnosis Chain \(antiga xDai\) para a Polygon.

Todas as transações normalmente utilizaram entre $200-$300 dólares em $DAI, $USDC, ou $USDT.

No agregado, o Padrão 2 ocorreu ao longo de uma semana, de 15 de janeiro de 2022 a 24 de janeiro de 2022.

<EmbeddedTable
  table={{
    columns: [
      { key: "1", width: 150, title: "Date", dataType: "object" },
      { key: "2", width: 150, title: "Source", dataType: "object" },
      { key: "3", width: 150, title: "Destination", dataType: "object" },
      { key: "4", width: 180, title: "Transfer ID", dataType: "object" },
      { key: "5", width: 180, title: "Transfer Tx", dataType: "object" },
      { key: "6", width: 120, title: "Token", dataType: "object" },
      { key: "7", width: 150, title: "Amount", dataType: "object" },
      { key: "8", width: 150, title: "Amount USD", dataType: "object" },
    ],
    data: [
      {
        "1": { title: "<p>4 months ago</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Gnosis</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Polygon</p>", tooltip: "", icon: "" },
        "4": { title: "<p>0xff8fdd...3425e0</p>", tooltip: "", icon: "" },
        "5": { title: "<p>0xd0620e...65a5d7</p>", tooltip: "", icon: "" },
        "6": { title: "<p>DAI</p>", tooltip: "", icon: "" },
        "7": { title: "<p>151.7367</p>", tooltip: "", icon: "" },
        "8": { title: "<p>$152.328</p>", tooltip: "", icon: "" },
        id: 0,
      },
      {
        "1": { title: "<p>4 months ago</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Gnosis</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Polygon</p>", tooltip: "", icon: "" },
        "4": { title: "<p>0x2b7b50...244c1f</p>", tooltip: "", icon: "" },
        "5": { title: "<p>0x74af1a...349d7d</p>", tooltip: "", icon: "" },
        "6": { title: "<p>DAI</p>", tooltip: "", icon: "" },
        "7": { title: "<p>187.0714</p>", tooltip: "", icon: "" },
        "8": { title: "<p>$187.8</p>", tooltip: "", icon: "" },
        id: 1,
      },
      {
        "1": { title: "<p>4 months ago</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Gnosis</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Polygon</p>", tooltip: "", icon: "" },
        "4": { title: "<p>0x72de10...8aed0a</p>", tooltip: "", icon: "" },
        "5": { title: "<p>0x38b797...743d8f</p>", tooltip: "", icon: "" },
        "6": { title: "<p>DAI</p>", tooltip: "", icon: "" },
        "7": { title: "<p>223.8656</p>", tooltip: "", icon: "" },
        "8": { title: "<p>$224.738</p>", tooltip: "", icon: "" },
        id: 2,
      },
      {
        "1": { title: "<p>4 months ago</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Gnosis</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Polygon</p>", tooltip: "", icon: "" },
        "4": { title: "<p>0xffd955...6f9db2</p>", tooltip: "", icon: "" },
        "5": { title: "<p>0xcb643f...26366a</p>", tooltip: "", icon: "" },
        "6": { title: "<p>DAI</p>", tooltip: "", icon: "" },
        "7": { title: "<p>275.6120</p>", tooltip: "", icon: "" },
        "8": { title: "<p>$276.686</p>", tooltip: "", icon: "" },
        id: 3,
      },
      {
        "1": { title: "<p>4 months ago</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Gnosis</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Polygon</p>", tooltip: "", icon: "" },
        "4": { title: "<p>0x2cef20...07e90d</p>", tooltip: "", icon: "" },
        "5": { title: "<p>0x6459e5...3eb30b</p>", tooltip: "", icon: "" },
        "6": { title: "<p>DAI</p>", tooltip: "", icon: "" },
        "7": { title: "<p>215.9183</p>", tooltip: "", icon: "" },
        "8": { title: "<p>$216.76</p>", tooltip: "", icon: "" },
        id: 4,
      },
      {
        "1": { title: "<p>4 months ago</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Gnosis</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Polygon</p>", tooltip: "", icon: "" },
        "4": { title: "<p>0xfc36c5...6191cc</p>", tooltip: "", icon: "" },
        "5": { title: "<p>0xdd9488...7a4c49</p>", tooltip: "", icon: "" },
        "6": { title: "<p>DAI</p>", tooltip: "", icon: "" },
        "7": { title: "<p>170.2939</p>", tooltip: "", icon: "" },
        "8": { title: "<p>$170.807</p>", tooltip: "", icon: "" },
        id: 5,
      },
      {
        "1": { title: "<p>4 months ago</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Gnosis</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Polygon</p>", tooltip: "", icon: "" },
        "4": { title: "<p>0xf4314e...f06488</p>", tooltip: "", icon: "" },
        "5": { title: "<p>0x1ed8f3...b8d68e</p>", tooltip: "", icon: "" },
        "6": { title: "<p>DAI</p>", tooltip: "", icon: "" },
        "7": { title: "<p>254.4636</p>", tooltip: "", icon: "" },
        "8": { title: "<p>$255.229</p>", tooltip: "", icon: "" },
        id: 6,
      },
      {
        "1": { title: "<p>4 months ago</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Gnosis</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Polygon</p>", tooltip: "", icon: "" },
        "4": { title: "<p>0xd41505...d09c9c</p>", tooltip: "", icon: "" },
        "5": { title: "<p>0xefc5e9...b37607</p>", tooltip: "", icon: "" },
        "6": { title: "<p>DAI</p>", tooltip: "", icon: "" },
        "7": { title: "<p>218.8310</p>", tooltip: "", icon: "" },
        "8": { title: "<p>$219.49</p>", tooltip: "", icon: "" },
        id: 7,
      },
      {
        "1": { title: "<p>4 months ago</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Gnosis</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Polygon</p>", tooltip: "", icon: "" },
        "4": { title: "<p>0x674400...b0a772</p>", tooltip: "", icon: "" },
        "5": { title: "<p>0x25c9b8...83d62a</p>", tooltip: "", icon: "" },
        "6": { title: "<p>DAI</p>", tooltip: "", icon: "" },
        "7": { title: "<p>225.7740</p>", tooltip: "", icon: "" },
        "8": { title: "<p>$226.454</p>", tooltip: "", icon: "" },
        id: 8,
      },
      {
        "1": { title: "<p>4 months ago</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Gnosis</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Polygon</p>", tooltip: "", icon: "" },
        "4": { title: "<p>0xf1f178...8306f5</p>", tooltip: "", icon: "" },
        "5": { title: "<p>0x866775...30dd94</p>", tooltip: "", icon: "" },
        "6": { title: "<p>DAI</p>", tooltip: "", icon: "" },
        "7": { title: "<p>201.0280</p>", tooltip: "", icon: "" },
        "8": { title: "<p>$201.633</p>", tooltip: "", icon: "" },
        id: 9,
      },
    ],
  }}
/>

**Aqui está um exemplo desse comportamento:**

[https://explorer.hop.exchange/?account=0x1cccff3de9b0a7c466acb31f33910691f1cb6e14](https://explorer.hop.exchange/?account=0x1cccff3de9b0a7c466acb31f33910691f1cb6e14)

### Conectando o padrão \#1 e o padrão \#2
Constatou-se que o Padrão \#1 e o \#2 estão conectados porque o atacante sybil sobrepôs transações na [Ethereum mainnet](https://www.alchemy.com/rpc/ethereum) e na Avalanche mainnet.

Especificamente, transferências entre esses endereços ocorreram em ambas as redes, denotando a conexão entre os dois padrões.

- 0x1100cc….d34e76a8e ←→ 0xb2369….59f264eb 
- 0xb23691….f264eb ←→ 0x80d….19b9 

Com mais de [30.000 endereços](https://github.com/hop-protocol/hop-airdrop/blob/master/src/data/finalDistribution.csv) para vasculhar, foi desafiador encontrar um subconjunto conectado, mas a [Transfers API](https://www.alchemy.com/enhanced-apis/?a=566c1048c9) conseguiu rastrear as transações no Ethereum de forma eficaz.

## Como encontrar caçadores de airdrop
Ao pesquisar o histórico de transferências de todos os endereços elegíveis na Ethereum e na Avalanche mainnet, conseguimos rastrear atividades on-chain compartilhadas para descobrir endereços conectados.

Para reduzir a quantidade de computação por força bruta necessária para encontrar endereços elegíveis, reduzimos o tamanho da busca de clusters ao rejeitar clusters com um número baixo de endereços compartilhados.

Depois de filtrar endereços improváveis, consultamos subgraphs da Hop Exchange em cada uma das diferentes blockchains suportadas pela Hop para gerar um perfil básico de cada cluster de endereços.

Se um perfil de cluster apresentasse comportamento repetido de endereços, ele era marcado para verificação manual.

### Como posso caçar caçadores de airdrop?
Com uma [conta gratuita na Alchemy](https://alchemy.com/?a=566c1048c9), chaves de API do Etherscan, acesso a subgraphs e alguns scripts básicos em Python, você pode se tornar um caçador de caçadores de airdrop.

Fique à vontade para entrar em contato comigo no Twitter \([@crypt0zeke](https://twitter.com/crypt0zeke)\) se tiver boas estratégias para encontrar caçadores de airdrop, tiver interesse em pesquisa cripto, ou quiser conversar sobre projetos web3.

Até lá, fique de olho em novas iniciativas da comunidade, e nos vemos todos na próxima caçada!
