---
title: "ハンターを狩る：エアドロップハンターの見つけ方"
description: "Hop Exchangeのエアドロップに先立ち、AlchemyのIssac LauとTrace APIを使ってSybil攻撃を行うエアドロップハンターを見つける方法を、Hop ExchangeのAirdrop Hunter Bounty施策の中で学びます。"
---

# ハンターを狩る：エアドロップハンターの見つけ方

歴史的に、プロトコルやブロックチェーンネットワークは、プロダクトマーケットフィット達成後にトークンを提供するという約束によってユーザーと流動性を惹きつけてきました。これらのトークンは主に2つのインセンティブを表しています。

1. プロダクトの方向性を統治する権利
1. 金銭的な配分

web2に対する最も一般的な批判の一つは、ユーザーが自分たちが貢献し、参加しているネットワークやアプリケーションに対して所有権を持っていないというものです。

Web3はこれに対する代替案として、コミュニティベースの所有権モデルを提供しており、トークンはこの新しいパラダイムの重要な一部を担っています。

トークン配布を考える上でコミュニティ志向の考え方が重要であることから、web3プロジェクトは、プロダクトの成功に利害関係を持つアクティブなコミュニティ参加者にトークンをエアドロップ（すなわち配布）することを目指しています。

誰が「アクティブなコミュニティメンバー」とみなされるかについては活発かつ妥当な議論がありますが、客観的に見て悪質な行為者と言える存在が一つあります。それがsybil攻撃を行うユーザーやボットです。

## sybil攻撃とは何か
sybil攻撃とは、単一のネットワークノードを使い、Peer-to-Peer（P2P）ネットワーク内で多数の偽のアイデンティティを、しばしば同時に運用する攻撃手法です。

sybil攻撃は、少数のネットワーク行為者が不当な影響力を得る結果を招きます。これはエアドロップの文脈では、ガバナンストークンのより大きなシェアを得ることを意味します。

エアドロップハンティングの文脈で言えば、これはプロトコルやコントラクトに対して不正な形で相互作用を行うことを意味します。

## Hop exchangeのエアドロップハンター対策
これまでの多くのエアドロップは悪質な行為者を実質的に取り締まることができていませんでしたが、Hop Exchangeはコミュニティメンバーの力を活用してsybil攻撃の影響を軽減する新しい仕組みを導入しました。

<CalloutBlock>

_"We are accepting reports of Sybil addresses that have not yet been uncovered. When _[_Hop DAO_](https://hop.mirror.xyz/AI5fOUR0X_l0mktShDOx3mwr-hsB24gp8GvTWtS-MBc)_ is live, we will make a proposal to reward those who reported Sybil addresses with 25% of the tokens saved — subject to a 1-year lockup. Reports will be reviewed, and rewards will be tallied on a first-come, first-serve basis."_

</CalloutBlock>

エアドロップハンターを狩るハンターに報酬を与える、最初期のコミュニティ主導の取り組みの一つとして、Hopはweb3開発者コミュニティの力を存分に引き出しました。私自身もその一人です。

[Hop DAOの分散化への私の貢献](https://github.com/hop-protocol/hop-airdrop/issues/377)について詳しく見ていきましょう。

### エアドロップハンターの発見
これは、sybil攻撃の一部として私が特定したアドレスを図示したものです。

<ImageBlock
  src="https://media.alchemy.com/1704708401-sybil-attack-visualization.png"
  alt="Sybil攻撃の可視化。"
  width={1409}
  height={1373}
  caption="Sybil攻撃の可視化。"
/>

**sybil攻撃の可視化図の読み方:**

各アドレスはグラフ内のノードであり、表示されている全てのアドレスは、各エッジで示されるオンチェーン送金によって互いに接続されています。

このsybil攻撃者は2つの異なるパターンを示しており、青色のエッジは**パターン1**、緑色のエッジは**パターン2**を表しています。

オレンジ色のノードは、送金が行われた全てのsybilアカウント間をオンチェーンで接続するアドレスを示しており、本レポートで概説した2つの主要パターンから逸脱している点から提出セットに含まれています。

#### パターン#1
青色のエッジで接続された全てのアドレスは、Hop Exchangeを使ってGnosis Chain（旧xDai）とPolygonの間を行ったり来たり（ピンポン）していました。

各アドレスには、約1000 $USDC建てのHop取引（うち1件は$USDT建て）が顕著に見られ、取引ごとに±250ドルの変動幅を持ちながら、あるチェーンから別のチェーンへ、そして再び元のチェーンへと順に行き来していました。

さらに、各アドレス内の取引バッチは非常に短い時間枠（1〜3時間程度）で行われていました。

<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,
      },
    ],
  }}
/>

**この挙動の一例:**

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

#### パターン#1はどのように発見されたか？
パターン#1は、Alchemy Transfers APIを使ってEthereumのオンチェーン送金を追跡することで発見されました。調査の結果、パターン#2と呼ばれる接続されたアドレス群が、ハブアドレス（0xb23691043293de4deeae3b565bd33bc059f264eb）とAvalancheメインネット上の関連するスポークとの間の送金を追跡することで、パターン#1と関連していることが判明しました。

#### パターン#2
緑色のエッジで接続されたアドレスでは、攻撃者は数時間にわたって複数回Hop Exchangeを使用し、主にGnosis Chain（旧xDai）からPolygonへの交換を繰り返し行っていました。

すべての取引は、おおむね$DAI、$USDC、$USDTのいずれかで200〜300ドル程度の金額を使用していました。

全体として、パターン2は2022年1月15日から2022年1月24日までの1週間にわたって発生しました。

<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,
      },
    ],
  }}
/>

**この挙動の一例:**

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

### パターン#1とパターン#2の接続
パターン#1と#2は、sybil攻撃者が[Ethereumメインネット](https://www.alchemy.com/rpc/ethereum)とAvalancheメインネット上で取引を重複させていたことから、互いに接続していることが判明しました。

具体的には、これらのアドレス間の送金が両方のネットワークで発生しており、この2つのパターンの接続を示しています。

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

[30,000を超えるアドレス](https://github.com/hop-protocol/hop-airdrop/blob/master/src/data/finalDistribution.csv)を精査する必要があり、接続されたサブセットを見つけるのは困難でしたが、[Transfers API](https://www.alchemy.com/enhanced-apis/?a=566c1048c9)によってEthereum上の取引を効果的に追跡することができました。

## エアドロップハンターを見つける方法
EthereumとAvalancheメインネット上の対象アドレス全ての送金履歴を検索することで、共有されているオンチェーンの活動を追跡し、接続されたアドレスを発見することができます。

対象アドレスを見つけるために必要な総当たり計算量を減らすため、共有アドレス数が少ないクラスターを除外することでクラスター検索範囲を絞り込みました。

可能性の低いアドレスを除外した後、Hopがサポートする各ブロックチェーン上のHop Exchangeサブグラフをクエリし、各アドレスクラスターの基本的なプロファイルを生成しました。

クラスターのプロファイルに繰り返しのアドレス挙動が見られた場合、手動検証の対象としてマークしました。

### エアドロップハンターを狩るにはどうすればいいか？
[Alchemyの無料アカウント](https://alchemy.com/?a=566c1048c9)、Etherscan APIキー、サブグラフへのアクセス、そして基本的なPythonスクリプティングがあれば、あなたもエアドロップハンターを狩るハンターになれます。

エアドロップハンターを見つけるための良い戦略をお持ちの方、暗号資産リサーチに興味がある方、web3プロジェクトについて話したい方は、ぜひTwitter（[@crypt0zeke](https://twitter.com/crypt0zeke)）で私に連絡してください。

それでは、新しいコミュニティの取り組みにも注目しつつ、次のハント（狩り）でまたお会いしましょう！
