ゆるく始めるアトミックアービトラージ
この記事は仮想通貨botter Advent Calendar 2024 2日目の記事です。
はじめに
アトミックアービトラージは、ローリスクで魅力的な手法(とはいえ、チェーンから資金が脱出できなくなるリスクなどは存在します)として、いつか挑戦してみたいと考えていました。しかし、事前にいろいろな情報を調べる中で、この分野では他にはあまり見られない高度な技術力を駆使した激しい競争が行われている印象を受けました。
ある時、気軽に始められる方法を思いつき、実際に成功も収めることができたので、その手法を紹介したいと思います。
アトミックアービトラージとは?
ChatGPTさんに書いてもらいましたが、だいたいあってる気がします。
なぜ難しいのかを考え、難しいを回避できるかどうか考える
アトミックアービトラージの何が難しいのかを考えて、その難しいポイントを回避できるようにすれば簡単にできるのでは?と思って考えてみました。
以下がざっと思いついた難しいポイントと回避方法です。
どの組み合わせで利益が出るのかの自動探索
特定の組み合わせのみに限定する
誰よりも早く利益が取れるようにtxを取り込んでもらう
脳死でtx投げまくる
1つ目は、新しいトークンができたら自動で追加して、多数ある組み合わせからを高速に鞘を探して・・・みたいなことができれば一番良いのですが、最適パス探索の計算コストが高く、効率的に実装するのも難易度が高い部分だと思っていました。
そこで、よく鞘が発生していた組み合わせに限定して、実装コストや計算コストを削減しました。
2つ目はアトミックアービトラージの一番重要なところだと思います。ここをいかに早くするかをひたすら頑張っている印象があります。各チェーンの仕様を深く理解し、gethなどのクライアントを改造し・・・
普通の人はシンプルにRPCにtxを投げる。というのがファーストステップだと思いますが、さすがにそれだけだと勝つのが難しいと思っていたので、なにか工夫できないかと考えていました。
あるチェーンのドキュメントを見ていたところ、クライアントにtxをシミュレーションする機能がついていました。dappsに接続したウォレットでこのtxを実行すれば何がおこるのか?を見るための機能だと思います。EVMだとRabbyなどが独自に実装していますね。
そこで思いついたのが脳死でtxをシミュレーションして、txが成功する見込み(=利益が出る場合)に実際にtxを投げるという方法でした。
上記をベースに4月ごろから実際に作り始めました。
ロジック
上記でほぼ書いてありますが、改めて実際に試したbotのロジックを書きます。
トークン、DEXの組み合わせは以下のように事前に手動で定義
TokenA->DEX1->TokenB->DEX2->TokenA
TokenA->DEX1->TokenC->DEX2->TokenA
実際にアビトラを実施するtxをシミュレーション、このとき利益が一定以上でる場合成功するようにしておく。
もしシミュレーション結果が成功だった場合、txを投げる
稼働開始してからの記録
自分と他者の利益をモニタリングしながら、探索対象を手動でコツコツ増やしていきました。
あぁ、このチェーン支配したわ。そう思っていた時期もありました。
そんなに甘くなかったです。大きな鞘を取っているライバルが見つけたときはレベルの違いを見せつけられました。
以後、6月以降は停止しました。ちょっとだけ10月に再稼働したときに様子を見てみましたがrival_fがいまだに大きな利益をとっていました。
稼働開始してから改善した点
脳死アトミックアービトラージアービトラージから少し賢いアトミックアービトラージにするため、少しロジックを改善しました。
一部ルートをreservedから利益最大化するルートの探索
下記Noteを参考に実装しました
利益が増えたというよりもtxシミュレーションする分のCPUリソース使用量が減りました
tx取り込まれやすくするようにネットワーク改善
公式ドキュメントを読みながら色々試してみましたがライバルになかなか勝てず・・・
まとめ
実際にアトミックアービトラージを実装・実行してみて学びは多かったです。大きな利益を得ることはできませんでしたが、その可能性が見えました。
無数のmemeコインなどが生まれるチェーンでない場合、手動でトークン、DEX登録する方式でも十分なルート網羅率になる
ライバルを監視し、盗める技術は盗む。
今回は非EVM系で行っていたので、scanを見るだけでも学べることは多かったです。
最後はやっぱり速度勝負
いかに早くtxを取り込んでもらうか・・・