今回の記事はSolana Advent Calendar 2024 12/2 記事です。
理解度がまだ浅いですが、jitobundleへの理解はsolanaを触る上で必要な知識だと思います。一緒に学んで行きましょう。
andooownさんの説明がとても分かりやすいです。
solanaでTxを通そうとすると、
⓵優先手数料(Prioritization Fees)を増やす
⓶jitobundleを使用する
⓷検知を早くする
の上記3つに分かれてると思います。
⓷は初級中級には難しい為現状できるとすれば、⓵⓶に取り組むのが良いのかなという印象。
Miner Extractable Value
Jito は MEV(Miner Extractable Value = 意訳するとバリデーターが得られる最大利益)において優先事項として、バリデーターとステーカーが MEV 報酬の取り分を最大化できるようにしながら、負の要因を最小化すること。と書かれています。
負の要因というのはネットワークの公平性の損失が考えられます。具体的に例をあげると
⓵フロントランニング
ユーザーのトランザクションをバリデーターやブロックプロデューサーが先読みして利益を得る行為(例: 他人の取引を先回りして有利な価格で売買する)
⓶サンドイッチ攻撃
ネットワークの信頼性低下
特定のトランザクションの前後に取引を挿入して利益を得る行為
被害者となるユーザーが損失を被る
jitobundle
jitobundleを使う事でSolana ブロックチェーン上で複数のトランザクションを順次かつアトミックに実行できます。その重要性を理解するために、まずいくつかの重要な特性を確認しましょう。
特性 | 説明 |
---|---|
順次実行 | bundle内のTxは、並んだ順序で実行されることが保証 |
アトミック実行 | bundle内のすべてのTxは同じスロット内で実行 |
全か無かの結果 | bundle内のいずれかのTxが失敗した場合、全てのTxが失敗 |
bundleサイズ | bundleあたり最大 5 つのTxを内包(今後増えるらしい) |
基本的な流れの図
Solanaで送信する1つのTx内の計算制限は 140 万 CU( 最大1232 バイト
1つのTxに最大1232 バイトしか詰めれないので裁量取引(アービトラージ)以外においても
不具合が起こる可能性があります。
計算リソース制限(140万CU)によるリスク
複数の処理を1つのトランザクション内で実行する必要がある場合、計算リソースの制限を超えるとトランザクションが失敗します。この結果、一部の操作が完了せず、データの整合性が崩れる可能性があります。
複雑な取引の制限
高度なロジックや複数の契約を絡めた複雑なトランザクション(例: アービトラージ取引や複数のプロトコル間のスワップ)が実行できない可能性があります。
jitobundleがある事で単純計算700万CUの処理が行える事になります。
今後のsolana上でゲームやRWA、DEPIN等の更に複雑なプロジェクトが出てきても処理が行えるjitobundle。とても重要な事が分かると思います。
例えばSOL-USDCのLPプールがあり、現在SOLしか持っていない場合だと
⓵SOL-USDCのスワップ
⓶LPへデポジット
⓷デポジット証明のNFT発行
3つの手順が必要ですが、jitobundleを使う事による単純計算700万CUの処理が行える事により、⓵⓶⓷3つのTxをアトミックに処理する事も可能になります
jitobundleを使ってみる
現在jitobundleを使ってそのまま動かせるプログラムです。
raydiumのSOL-USDCプールを指定してSWAPする内容です
テスト稼働用のウォレットで動かしましょう
git clone https://github.com/coolcode/solana-jito-swap.git
cd solana-jito-swap
mkdir markets
curl https://api.raydium.io/v2/sdk/liquidity/mainnet.json -o ./markets/raydium.json
npm install
npm start
Txが通ったらJito Explorerで確認してみましょう!!
参考資料など↓