Jito とは

Jitoは組織名. Jito Foundation.

SolanaにおけるMEVの課題を解決するためのDAO, ⛓Solana版の🤖Flashbots. MEVにおける主力コンポーネントは🔧Jito Bundles.

最近, MEVに加えて🔧Jito Liquid Stakingのサービスも展開してきた. そのためJitoを語るときはMEVとLiquid Staked SOL($JitoSOL)の2つがあることに注意.

🧩アーキテクチャ

Jito の構成要素. コンポーネント.

spec: Jito Labs Technical Specification - Google ドキュメント

🤖Jito Searchers

MEVを抽出する. MEV Botはここのモジュール.

🔧MempoolStream(Jito Mempool)

Solanaにはmempoolはないが, 🔧Gulf Stream(Solana)の機能を利用してトランザクションを先読みする.

ValidatorはRelyerに接続して情報をえる. Gulf SteramにアクセスするRelyersはValidatorよりも200ms早く情報を受信する. MempoolStreamをつかうと, Relyerから200ms速い情報を取得できる.

MempoolStream - Jito

ShredStream

TBD.

Geyser and RPC

A lightweight gRPC service for streaming account and slot updates to subscribers.

🔧Solana Geyser

🤖Jito Relyers

Transactionの中継モジュール. TxをJito Block EngineにForwardingする.

📝TPU(Solana)のプロキシの役割.

🤖Jito Block Engine

Jito サーバがBlock Engine. Tokyoもあるよ.

BLOCK_ENGINE_URL=https://tokyo.mainnet.block-engine.jito.wtf RELAYER_URL=http://tokyo.mainnet.relayer.jito.wtf:8100 SHRED_RECEIVER_ADDR=202.8.9.160:1002

ref. Block Engine - Jito

🧰Jito-Solana

Jito Solana Client. Jito Relyersを経由してBlock Engineにbundle Txを送信するクライアント.

  • Jitoのメインプロダクト.
  • Solana Validatorをカスタマイズしたもの.
  • このライブラリのなかのBundles機能がキモ.

🔧Jito Bundles

list of transactionsを構築してJito Block Engineに送信する機能. 複数のトランザクションを順番かつアトミックに実行.

この機能をつかって, ArbitrageやLiquidationのbotを作成する. たとえば,複数のswap txを1つにまとめて📝Atomic Swapを実行するなど.

Jito Bundleをつかっているadddressや実行ログは, 🔍Jito ExplorerのBundleというタブから確認できる.

Refs

sendBundle

Tipは txの末尾に tipの送信用ixを追加する.

    const tipIx = SystemProgram.transfer({
      fromPubkey: keypair.publicKey,
      toPubkey: tipAccount,
      lamports: tipLamports,
});

<2024-10-14 Mon 18:51> 今まで知らなかったよ… addTiptxをつかうのは間違いだった.

🔧Jito-Solana Validators

Block Engineで動作する, Bundles機能などのJito-Solana Clientからのリクエストを処理するようなサーバサイドプログラムはJito Validatorsとよばれいてる.

Jito-Solanaの部分として配布されている. Solana OriginalではなくそれをカスタマイズしたJito Validatorを利用するメリットはJito-Solana ClientのBundle機能を処理するときにTipという形で追加の収益を得ることができるから.

Tip Accounts

ライブラリで取得すると8つくらいある. みんなどのくらいtipを支払っているのかはアカウントの履歴をわかる(jito exploreが重すぎてまだつかいものにならない… ).

Jito API

🪣Jito Liquid Staking

Jitoの提供するLiqiuid Staking.


🪙JitoSOL

🪙Liquid Staking Token(LST) for Solana.

🪣Jito Restaking

🪙JTO

Jitoの🪙ガバナンストークン.

s- https://solscan.io/token/jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL

JTO AirDrop

Topics

🔍Jito Explorer

MEV Dashboard. MEVの収益機会を可視化.

アドレスから他のbotの活動の様子が検索できる. いわば, 統計情報ダッシュボードのBlock Engineフロントエンド.

💡Jito Bundlesをつかうメリット

bundleとは英語の原義から考えるとまとめるという意味, Solana の文脈だと複数のinstructionsをひとつのtxにまとめてatomic かつsequencialに送信する. これは素の機能でもできることはできる, Jito Bundles ライブラリによってまず記述が簡単にできるようになる.

さらに, bundleの送信先がJito validatorという特別なValidatorに送信することになる. さらに彼らにTipを支払うことで優先順位をあげてくれる. これはオンチェーンからMEVをしたいbotにとっては高速に処理してくれることになる. もし, bundleを使わないならば, SolanaのPriorization FeeをTransaction Feeに加えて支払うことになる.

Validatorとしても, 単純にSolana Validatorになるよりも, Jito-Solanae Validatorになったほうがbundleを送信する側からの追加報酬が発生するのでwin-winの関係. Solana チェーン全体としても, MEVはトラフィックを混雑させる悪者扱いされることがあるので, 交通整理かつ可視化(Dashboard)することで, エコシステムの健全性に貢献.

❓Atomic ArbでJitoフレームワークを使う場合と使わない場合はどうちがう?

ValidatorsはJitoフレームワークをつかううことでTipsをさらにもらえるのでインセンティブがある. それでは, Searchersは?


cf. ChorosOneのPOCでは, https://github.com/ChorusOne/solana-mev/ で, jito-solanaとの比較をしている. つまりsandwitchのようなフロントランニングではなくAtomic Arbに限定すれば, jito bundleをつかっても使わなくてもいい?

Solana-MEV does not buffer transactions. It inserts its own transactions in between user transactions, but it does not change the way in which user transactions are processed. This also means that Solana-MEV has virtually zero latency impact compared to Jito, which introduces several additional network hops in the transaction processing path.

🔧jito-labs/mev-bot

repo: https://github.com/jito-labs/mev-bot/

Code Reading

markets

For accurate calculations, the bot needs recent pool data. On startup, the bot subscribes to Geyser for all pool account changes. To perform the actual math, the bot uses Amm objects from the Jupiter SDK. These “calculator” objects are initialized and updated with the pool data from Geyser and can be used to calculate a quote. Each worker thread has its own set of these Amm objects, one for each pool (see markets/amm-calc-worker.ts).

associatedAccountsを取得してgetMultipleAccountsで更新した結果でquoteをローカル計算. ただ計算部分はjup-coreのsdkをつかってる.

Issues

❓なぜJito Explorerで確認できるatomic arbersはJupiter Swap SDK v4をつかっている?

Jitoと🏢Jupiterはどう関係するのだろか?さらに, なぜv6ではなくv4なのだろうか? v4のサンプルコードが公開されているのでそれにjito-solanaを組み合わせている人が多いということ?


おそらくここで確認できるwallet addressはSolanaチェーンでarbitrageをしているbotを独自アルゴリズムで検出して表示していて, Jito-Solanaをつかっているとは限らない, という仮説. すると, Solana Atomic ArbをしているトレーダーはJupiter AggregatorのAPIをつかっている場合が多いということか?

Jito Labs Unveils Redesigned Solana MEV Explorer: A New Frontier in Blockchain Analysis | SolanaFloor News


Jito-Solanaをつかっているaddress, つまりJito bundleをつかっているaddressは, Exploreのbundleから確認できる.


Jitoのmev botのサンプルコードでjupiterをつかってるのを発見. arbitrageのためにはmulti-hop swapsが必要?

https://github.com/jito-labs/mev-bot/blob/master/src/build-bundle.ts

The Jupiter program is used because it supports multi-hop swaps, which are necessary for executing the arbitrage route.

multihopという用語はuniswap v3の機能のようだ. Single Swapsが2つのトークンswapだとすると, multihopは3つのトークンswapということ?

Multihop Swaps | Uniswap

🔗References