まだまだわからないことだらけなので、シンプルに考える。
要は複数取引所で鞘が取れそうなルートを検出して、実際に取引をするシステムを構築できれば良い。
必要な要素
取引所の選定
jupyterはsolana上のいくつかの取引所のなかで最適なswapルートを見つけてくれるもの。
jupyterのリストに入っていないものを対象としたほうが本当は良いけれど、現状で最適解を目指すのは流石に無理ゲーなので、対象取引所はこのリストの中から選ぶこととした。(調査ではなく開発実装に時間をかけるフェイズだと思うので)
最適ルートの検出
考え方としては2パターンあるように見えた。
パターン1:対象取引所のトークン価格をwebsocketで常時通信して取得し、価格差を検知する
シンプルな考え方。websocket導入が難しそうであれば、何秒かに一回とかでも良い
パターン2:swapの見積もりを取得する
あまり良くわかってないが、プール(トークンが溜まっているイメージ?)に対してスワップの見積もりを取得できるっぽい
チュートリアルでは特定取引所のsdkを使ったものだったので、別取引所でどう実装するのかという問題がある。
またどれぐらいの頻度でスワップ見積もりを取得する問題もあるように思えた。
---
書いてみて思ったけど、パターン1で目星をつけて、パターン2で実際にswapするかどうかを決定するみたいな感じなんじゃないかと思った。見積もりが厳しいならswapをやめるみたいな実装ができるはず
交換
あとは単純に価格差を取ればok
課題
課題はやはり、各取引所からどうやって価格を取得してswapするのかだと思う。またAMMの値付けロジックなどもわかってないのでそのあたりも調べる必要がある
取引所によってはドキュメントすら見当たらないケースもザラなので、ひとまずドキュメントが存在する取引所に対応していくのを目標とするのが良さそう
参考
パブリックブロックチェーンなので他アビトラをしている人のトランザクションを見ることができる。solscanで検索
dune analyticsでquery作成
これも使える(Arbitrageタブから参考トランザクションを探す)
defilamaは調査に使えそう
分かんなすぎワロタ
jupiter core
とっかかりにしたい