
ゆるく始めるアトミックアービトラージ
この記事は仮想通貨botter Advent Calendar 2024 2日目の記事です。
はじめに
アトミックアービトラージは、ローリスクで魅力的な手法(とはいえ、チェーンから資金が脱出できなくなるリスクなどは存在します)として、いつか挑戦してみたいと考えていました。しかし、事前にいろいろな情報を調べる中で、この分野では他にはあまり見られない高度な技術力を駆使した激しい競争が行われている印象を受けました。
ある時、気軽に始められる方法を思いつき、実際に成功も収めることができたので、その手法を紹介したいと思います。
アトミックアービトラージとは?
「アトミックアービトラージ」とは、DeFi(分散型金融)における裁定取引の手法で、価格差を活用しつつ、取引のリスクを最小限に抑えることを目的としています。通常の裁定取引では、複数の取引所間で価格差を利用する際に、途中で価格が変動したり、取引が不成立になるリスクがあります。しかし、DeFiにおける「アトミック性」(不可分性)を利用することで、これらのリスクを避けることができます。
このアトミック性とは、スマートコントラクトを利用したトランザクションが「すべての取引が成功するか、まったく実行されないか」のいずれかしか起こらないことを意味します。たとえば、ある取引所で買い、別の取引所で売る一連の取引をアトミックに実行する場合、すべてのステップが成立しなければ取引はキャンセルされるため、失敗による損失を防ぐことができます。この仕組みが、アトミックアービトラージの大きな利点であり、特にDeFiの分野で注目されています。
ChatGPTさんに書いてもらいましたが、だいたいあってる気がします。
なぜ難しいのかを考え、難しいを回避できるかどうか考える
アトミックアービトラージの何が難しいのかを考えて、その難しいポイントを回避できるようにすれば簡単にできるのでは?と思って考えてみました。
以下がざっと思いついた難しいポイントと回避方法です。
どの組み合わせで利益が出るのかの自動探索
特定の組み合わせのみに限定する
誰よりも早く利益が取れるようにtxを取り込んでもらう
脳死でtx投げまくる
1つ目は、新しいトークンができたら自動で追加して、多数ある組み合わせからを高速に鞘を探して・・・みたいなことができれば一番良いのですが、最適パス探索の計算コストが高く、効率的に実装するのも難易度が高い部分だと思っていました。
そこで、よく鞘が発生していた組み合わせに限定して、実装コストや計算コストを削減しました。
2つ目はアトミックアービトラージの一番重要なところだと思います。ここをいかに早くするかをひたすら頑張っている印象があります。各チェーンの仕様を深く理解し、gethなどのクライアントを改造し・・・
普通の人はシンプルにRPCにtxを投げる。というのがファーストステップだと思いますが、さすがにそれだけだと勝つのが難しいと思っていたので、なにか工夫できないかと考えていました。
あるチェーンのドキュメントを見ていたところ、クライアントにtxをシミュレーションする機能がついていました。dappsに接続したウォレットでこのtxを実行すれば何がおこるのか?を見るための機能だと思います。EVMだとRabbyなどが独自に実装していますね。
そこで思いついたのが脳死でtxをシミュレーションして、txが成功する見込み(=利益が出る場合)に実際にtxを投げるという方法でした。
上記をベースに4月ごろから実際に作り始めました。
思いつきで脳死atomic arb作ってみたけどうまいこと行きそう
— 5000e12.eth | かんた | .lens (@5000e12) April 17, 2024
とりあえずガス負けする程度の試作品はできた
ロジック
上記でほぼ書いてありますが、改めて実際に試したbotのロジックを書きます。
トークン、DEXの組み合わせは以下のように事前に手動で定義
TokenA->DEX1->TokenB->DEX2->TokenA
TokenA->DEX1->TokenC->DEX2->TokenA
実際にアビトラを実施するtxをシミュレーション、このとき利益が一定以上でる場合成功するようにしておく。
もしシミュレーション結果が成功だった場合、txを投げる
稼働開始してからの記録
黄色が自分で緑がライバル、まだまだ伸ばせるぞ✊ pic.twitter.com/auMB5hw0ad
— 5000e12.eth | かんた | .lens (@5000e12) April 17, 2024
自分と他者の利益をモニタリングしながら、探索対象を手動でコツコツ増やしていきました。
手動でルート追加をちまちましてたら、かなりの割合取れるようになってきた pic.twitter.com/DCNFsi1Bcm
— 5000e12.eth | かんた | .lens (@5000e12) May 8, 2024
あぁ、このチェーン支配したわ。そう思っていた時期もありました。
新しいライバル見つけたけど、段違いに強かった・・・井の中の蛙 pic.twitter.com/MNCs3j6ngE
— 5000e12.eth | かんた | .lens (@5000e12) May 21, 2024
昨日までは上位陣並に利益取れてていい感じと思ってた
— 5000e12.eth | かんた | .lens (@5000e12) May 22, 2024
今日追加した強敵(rival_f)も並べると、底辺の戦いだったことに気付かされた🤮🤮🤮 pic.twitter.com/a5QWOa0LYj
そんなに甘くなかったです。大きな鞘を取っているライバルが見つけたときはレベルの違いを見せつけられました。
以後、6月以降は停止しました。ちょっとだけ10月に再稼働したときに様子を見てみましたがrival_fがいまだに大きな利益をとっていました。

稼働開始してから改善した点
脳死アトミックアービトラージアービトラージから少し賢いアトミックアービトラージにするため、少しロジックを改善しました。
一部ルートをreservedから利益最大化するルートの探索
下記Noteを参考に実装しました
利益が増えたというよりもtxシミュレーションする分のCPUリソース使用量が減りました
tx取り込まれやすくするようにネットワーク改善
公式ドキュメントを読みながら色々試してみましたがライバルになかなか勝てず・・・
まとめ
実際にアトミックアービトラージを実装・実行してみて学びは多かったです。大きな利益を得ることはできませんでしたが、その可能性が見えました。
無数のmemeコインなどが生まれるチェーンでない場合、手動でトークン、DEX登録する方式でも十分なルート網羅率になる
ライバルを監視し、盗める技術は盗む。
今回は非EVM系で行っていたので、scanを見るだけでも学べることは多かったです。
最後はやっぱり速度勝負
いかに早くtxを取り込んでもらうか・・・