イーサリアムの暗い森の「プレデター」
編集者注: この記事は以下から引用しましたクリプトバレーライブ (ID:cryptovalley)クリプトバレーライブ (ID:cryptovalley)
イーサリアムの暗い森の怪物は冗談ではありません。これらの最先端のボットは、潜在的な利益を得るためにスマート コントラクトで使用したことのないスマート コントラクトの呼び出しや機能を分析できます。
、著者:Alex MenUskin、翻訳:Sherrie、Odaily の許可を得て転載。
イーサリアムの暗い森の怪物は冗談ではありません。これらの最先端のボットは、潜在的な利益を得るためにスマート コントラクトで使用したことのないスマート コントラクトの呼び出しや機能を分析できます。
これらのロボットに対する一般的な理解が不足していることを考慮して、私たちは状況をさらに学び、ロボットがどれほど一般的であるかを確認するためにサファリに出発しました。私たちはいくつかの一般的なフロントエンド ボットを「キャプチャ」し、その動作を分析することに成功しました。私たちはその効率性と、トランザクションが「狩られる」可能性を調べました。また、それらを回避するさまざまな方法もテストしました。
副題
フロントランニングとは何ですか?
フロントランニングの簡単な例はスワップ入札です。誰かが Uniswap で大量の ETH を購入しようとしているとします。これは ETH の価格を押し上げるのに十分です。この状況から利益を得る方法の 1 つは、ETH を大量に購入する前に、価格が低いうちに取引することです。そして、価格が急騰した後、ETHを売って利益を得ます。
この裁定取引の例以外にも、清算、希少な NFT の購入、単純なユーザー エラーなど、他の多くのトランザクションのフロントランニングも価値がある可能性があります。 (トランザクションまたは一連のトランザクションから抽出された値は MEV と呼ばれます)。
イーサリアムでは、フロントランニングは、トランザクションでわずかに高いトランザクション手数料を入札することによって達成され、マイナーがブロックを構築する際に、より早い段階でシーケンスを実行し、より高額なトランザクションを最初に実行するよう奨励します。したがって、同じコントラクトコールから利益を得る 2 つのトランザクションが同じブロックに配置された場合、最初のトランザクションのみが利益をもたらします。
副題
行動
Dan Robinson と Georgios Konstantopoulos は、「ETH は暗い森」に関するブログ投稿で、12,000 ドルが洗練された「捕食者」の手に落ちた、フロントランニングの試みについて説明しました。プレデターは非常に先を行っているため、イーサリアムのトランザクション プール内のあらゆる貴重なトランザクションを追跡し、フロントランニングを通じて報酬を得ることができます。
「暗い森」の物語は、最初は信じられないほど「怖い」のです。確かに、そのような「捕食者」の存在を疑う理由はあります。多数のロボットによって厳密に監視されている裁定取引プラットフォームである Uniswap から資金を引き出すにはどうすればよいでしょうか?それは「通常の」裁定取引者でしょうか?
今年初め、私たちの綿密な分析により、そうではないことが証明されました。これは普通のロボットではありません。私たちの知る限り、これまで一度も呼び出されたことがないコントラクト関数の呼び出しに成功しました。プロキシスマートコントラクトを介して取引を難読化したにもかかわらず、資金が吸い上げられた。
控えめに言っても、それはかなり心配なことだ。トランザクション プール内のトランザクションを監視できる機能は、非常に強力な武器です。心配なのは、一部のサービスが「ダーク プール」トレーディング レイヤーを公的に提供し始めていることです。
「ダーク プール」トランザクション レイヤーは、Infura などのサービスやプライベート ノードさえも使用せず、トランザクションをネットワークの残りの部分に伝播しないという約束でマイナーに直接送信し、捕食者による覗き見からトランザクションを保護します。
Samczun 氏らは、脆弱な契約から 960 万ドルを搾取しようとした際にも同様の手法を使用しました。マイナーがフロントランニングのボットを自ら使い始め、プレミアムを支払った人にのみ安全なアクセスを提供するようになるのは想像に難くありません。
開発環境やテストネットでテストできるスマート コントラクトなどのイーサリアムの他の要素とは異なり、これらのボットはイーサリアム メインネット上にのみ存在します。一部の初期トライアルを除いて、テストネット トランザクションのフロントランニングを試みることは経済的に意味がありません。また、ロジックは隠されているため、全員と同じルールに従ってプレイする必要はありません。
捕まえたフロントランナーが「本物の」一般的なフロントランナーであることを確認するには、独自のトラップが必要です。トラップは新しく作成されたコントラクトであり、SHA256 ハッシュ化された秘密文字列によって開始され、取得に利用できる資金が含まれています。ロックされた資金は、この秘密が提供された場合にのみ引き出すことができ、資金は引き出しトランザクションの送信者に直接送信されます。
そのアイデアは、正しいシークレットを提供する「おとり」トランザクションを送信し、誰かがそれを複製しようとするかどうかを確認し、その後シークレットを自分で提供することで、使用可能な資金を獲得することです。おとりトランザクションの前に誰かが資金を取得した場合、トランザクションがまだトランザクション プール l にある間に誰かがトランザクションを分析し、その関連コンテンツをコピーし、シークレット自体を提供できることを意味します。
興味深いことに、彼らはお金を得るために、これまで知らなかった秘密、見たことのない契約を持ち出すのです。
副題
平均的なフロントランナーはどのように働いているのでしょうか?
この実験の重要な部分は、フロントランナーがどのように機能するかを理解することです。ただし、誰かがお金を稼ぐマシンを構築したとしても、おそらく Github で共有されることはありません。したがって、私たちができるのは犯罪者の行動を観察し、リバースエンジニアリングすることだけです。
汎用のフロントランナーを構築するには、通常 2 つの部分があります。最初のコンポーネントは、スマート ウォレット エージェントの有無にかかわらず、変更されたトランザクションを送信できるイーサリアム アカウントです。 2 つ目は「バックエンド」、つまり操作の頭脳であり、主にオフチェーンで行われます。オペレーターはいくつかのテクニックを使用して、プール内の各トランザクションを検査し、解析し、そのパラメーター (例: tx 呼び出し元) を置き換え、利益があるかどうかを判断します。
さらに、トランザクション プール内の各トランザクション (多数ある) を分析する必要があるため、時間も重要です。イーサリアムブロックのマイニングには平均 12 秒かかります。このトランザクションのトランザクション手数料が十分に高い場合は、次のブロックが到着する前に十分な速さでトランザクション手数料を分析して置き換える必要があります。
これは確率的なプロセスであり、トランザクションがブロードキャストされるとすぐにブロックをマイニングすることが可能であり、ボットがブロックを正常に分析して実行中のトランザクションをブロードキャストする時間がありません。
これらの考慮事項と考えをもとに、ロボットが餌をつかむまでにどれくらいの時間がかかるかをテストしました。"副題"私たちの契約(受賞者)の初期残高は 0.035 ETH で、当時の価値は約 20 ドルでした。これらの資金は、コントラクトに保存されているハッシュに正しいプリイメージを提供する人なら誰でも利用できます。資金を取得し、捕食者の引き金として機能するために、別のアカウント (取得者) が適切なアカウントを提供して資金を取得しようとします。
反転画像
資金を引き出すのが好きです。
第 1 ラウンド: 契約者に直接電話する
ベースライン トラップが機能することを確認するために、まずゲッター アカウントを使用してコントラクトを呼び出します。最初の試みでは、比較的高い取引手数料(ETHフレームワークによって設定されています)を払って、なんとか資金を取り戻すことができました。
これは、マージンが低すぎて捕食者を引き付けることができないという事実、または取引の採掘が早すぎて捕食者が反応できないことが原因である可能性があります。捕食者を捕まえることが私たちの目標であるため、これは明らかに私たちが望んでいることではありません。
副題
このラウンドでは、これまで抱えていた問題を解決しました。潜在的な利益を増やし、取引手数料を下げて、取引があまりにも早くマイニングされないようにして、ボットがそれを発見する時間を与えました。この契約には 0.04 ETH も追加されました (以前より 0.005 増加)。
今度は成功しました。トランザクションはマイニングされるまで約 3 分間待機しましたが、コントラクトからの価値は得られませんでした。契約の内部取引によれば、資金が他者に流れていることがわかります。
現在のトランザクションは 25.000001111 Gwei (.000001111 Gwei は使用しているものより高い) を使用しており、試行された「抽出」と同じブロックでマイニングされました。
副題
フォロワーの育成
(ある程度の費用をかけて) ボットを見つけることができたので、興味深い洞察を得ることができます。まず、トランザクションは、コントラクトへの呼び出しが直接実行されないことを示します。ボットは、トランザクションをコピーして所有アカウントからやみくもに送信するのではなく、スマート ウォレットとして機能するプロキシ スマート コントラクトを介してトランザクションを実行し、トランザクションを実行します。
以前および将来のトランザクション アドレスを追跡して、ボットがどの程度成功しているか、またどのように動作しているかを確認できるようになりました。
逆コンパイルされたコントラクトには、次の 2 つの主な機能があります。
この機能により、代理契約は事業者にとってスマートウォレットとして機能します。外部関数の呼び出しを実行する機能に加えて、トランザクションの開始時の残高がトランザクションの終了時の残高と少なくとも同じであることも保証されます。そうでない場合は復元できるため、損失の可能性が回避されます。不明なコントラクトを呼び出すときの資金(もちろん、取引手数料は除きます。)。
Dune Analytics を使用すると、2018 年 5 月以降、ボットがどれほど成功しているかがわかります。
この特定のボットが常に同じプロキシと送信アドレスを使用してトランザクションを発行すると仮定すると、その収益は合計約 17 ETH (執筆時点で約 10,000 ドル) と推定できます。
副題
ラウンド 3: 彼らはどのくらい賢いのでしょうか?
ボットが私たちを攻撃していると確信したので、餌を抽出できるかどうかをテストしたいと思います。 (契約書には「受け取る」機能もあり、お金を返金することができます)。
私たちは ProxyTaker コントラクトをデプロイし、資金を引き出すために適切な関数を呼び出しました。プロキシを通じて資金を受け取るコストが若干高いため、付与者契約の金額は 0.055 ETH と若干高くなります。なんと、私たちの取引はすぐに別のボットによって取り消されました。
今回はさらに印象的でした。ボットは私たちの出金トランザクションを検出できるだけでなく、まったく別の契約からの内部呼び出しからそれを特定しました! この偉業は記録的な速さで達成されました。私たちの出金トランザクションは数秒以内にマイニングされました (ボットも同様)。
ボットの同じ行動パターン (アカウント A からエージェントに電話し、アカウント B に資金を送金する) とインシデントの近さを考慮すると、ボットが今回の事件でもホワイトハッカーに対する一般的な前線作戦を実行していたと考えるのが合理的です。事件。
このロボットは前のロボットよりもはるかに複雑です。 ETHだけでなく様々な裁定取引も行っています。
また、資金を集める口座残高の点でも、はるかに成功しています。現在、残高は約 300 ETH (執筆時点で約 18 万ドル) です。また、コントラクトアドレスからすべての流入と流出を差し引いて、その利回りを推定することもでき、合計で約 900 ETH になります。アカウントがその最前線のアクティビティに関係のないトランザクションを行っている可能性があるため、これは単なる概算です。 (以下は、正の値を持つすべてのボット取引のリストです)。
副題
最終ラウンド: 抽出成功
この課題をもう少し面白くするために、今回は私たちだけが使用できるプロキシ コントラクトである OwnedTaker を使用して、別の難読化を試みました。
セットアップは第3ラウンドと同様です。付与契約には 0.05 ETH が追加されました。資金も契約に残るのではなく、同じ取引で当社に返送されます。
最初の試行では、OwnedTaker コントラクトへのトランザクションのマイニングに約 1 分かかり、資金を引き出すことができました。
実験は繰り返され、今回はギバーコントラクトにこれまでに使用した最高のペイアウトである0.06 ETHを補充して、ペイアウトの低下がフロントランニング試行の欠如の理由ではないことを確認しました。
契約所有者のみが通話の実行を許可されるという要件、または通話契約とは異なる宛先に資金が送金されるという事実は、フロントランニング試行を回避するのに役立ちます。
それで、私たちは勝ったのでしょうか?
ボットは自己保存を第一に考える可能性が高く、結局のところ、ボットは未知のコントラクトを呼び出し、任意のコードを実行する可能性があります。利益が保証されない場合、不必要なリスクや取引手数料の損失を回避するのは当然です。
副題
なぜ前回は(フロントランニングに)抵抗できたのでしょうか?
結論は
言いにくい。ボットが認証されたコントラクトと通信するリスクを負わなかったか、資金が別のアドレスに転送されたのが偶然だった可能性があります。もちろん、それがフロントランナーを完全に回避する方法であるという意味ではありません。おそらく、取引プールには、そのような小さな利益を危険にさらしたくない、より高度なボットが潜んでいる可能性があります。
副題
結論は
この短い実験では、汎用のフロントランニング ボットが存在し、それが高度に洗練されていることを示すことができました。
もちろん、私たちの実験が完了や決定的なものには程遠いことは承知しています。トリガーや動作モードが大きく異なるボットは他にもたくさんあります。潜在的な上振れ、コミュニケーションパターン、最小限の複雑さ(取引手数料の制限など)などの要因が、その仕組みに影響を与える可能性があります。
しかし、私たちは、私たちの研究が概念実証を提供し、これらの汎用フロントエンド ロボットがどのように動作するかをさらに明らかにすると信じています。
したがって、現在および将来的により安全なシステムを構築できるように、これらのロボットとその動作を理解することが重要です。 Flashbot のようなプロジェクトは、MEV マイニングを民主化し、それを公共リソースにすることでこれを実現しようとしています。この研究がこの目標の達成に役立つことを願っています。
これらのボットに遭遇した場合、またはより高度な難読化技術を検討している場合は、お気軽にお問い合わせください。あなたの経験を共有することで、私たちはこれらのボットをより深く理解し、私たち全員にとってより安全な暗号コミュニティを構築することができます。
この記事の作成に協力してくれた Tal Be'ery、Omer Shlomovitz、Oded Leiba、Dan Robinson らに感謝します。
副題
付録


