Yield Aggregator for Solana.

Basics



Meteora: Make Solana Liquid Again, トランプ大統領みたいだな.

Make America Great Again - Donald Trump

🪣Meteora DLMM

Meteora Dynamic Liquidity Market Maker(Dynamic CLMM).

特徴

  • dynamic fee
  • Pool作成時にVolatility Strategyを選択
    • spot
    • curve
    • bid/ask

ref. DLMM Walk Through w/ Ben - YouTube

API

PoolInfo

新規pool

initializeLbPair

Preset Parameterのtx履歴を取得する.

https://solscan.io/account/83XWJx8TNDYtiKA15EbCBKSTvNZ3h2jGjHz87CXncRVH

SDK

kamino financeのsdk利用例

Kamino financeがMeteoraDlmm解読に役に立つ. しかも, MeteoraのSDKを使わずに独自でチェーンから情報取得して解析しているようだ.

🏢Kamino Finance

sdk code reading

  • DLMM Class
    • tokenX/tokenY: APIからの情報取得で構築できる.
    • binArrayBitmapExtention: 初期化のタイミングではbinArrayBitmapExtionはnullが許されている.
  • create(): DLMM ClassのObject作成/初期化.
    • これは初期化のタイミングでチェーンからaccount infoを取得してparseするので通信発生に注意.
      • Connection を引数で渡す必要もある.
      • jupiterのcacheをのぞいてもキャッシュしていないようだ.
    • createMultipleで複数Objをまとめて作成
      • chunkedGetMultipleAccountInfosは 100ごとのchunkでgetMultipeAccountInfoを呼ぶ.
    • DLMM オブジェクト生成に必要な情報
      • tokenX/tokenY
        • reserveX/reserveY/tokenXMint/tokenYMint - pubkeyをdecodeして取得.
        • apiでも取れる.
      • lbpair
        • pubkeyのaccountinfoをdecodeした情報
      • binArrayBitMapExtention
        • binArrayBitMapExteitionPubkeyをつかってgetAccountInfoした情報をdecode
        • binArrayBitMapExteitionPubkeyはLPのPubkeyから生成
        • http getでも取得できるけどデータ量的にきつそう, allはないので: https://dlmm-api.meteora.ag/pair/%7Baddress%7D/bin_arrays
        • ここがそもそもnullの場合もある. おそらくstrategyの設定.
  • refetchStates() : DLMMの中にある情報のupdate
    • createとやっていることは似ている.
    • pubkey->lpPairのbin array.
    • binArrayBitmapExtentionPubkey:
      • maxサイズはIDLに定義されている. 現状は512.
      • つまり1024のbinを超えるとbitArraybitMapExtentionが使われる. それ以外はnull.
      • 大抵の場合はnull.
    • lbPair.reserveX->実体はamountの更新.
    • lbPair.reserveY->実体はamountの更新.
  • swapQuote: 価格見積りはこれ
    • binArraysをinputにする必要あり.
      • getBinArray: 単なるarrayを返すだけ.
  • getBinArrayForSwap:
    • 最大size=4のBinArray listを返す.
    • binが50とかあるpoolもあるので for swapで4つだけ取り出す.
    • accountsToFetch: binArraysからから必要なものだけを計算している.
    • binArrayPubkeyをfetchしてる. quoteで必要.
  • chunkedGetMultipleAccountsInfo
    • チェーンと通信しているのはこの関数.

Meteora Pools(AMM)との違いは?

AMMbot

🏢Kamino Financeは Meteora DLMMのLPのリバランス自動化をしてる.

自力 market makingもサンプルコードがある. https://github.com/MeteoraAg/dlmm-sdk/tree/684db32038eb3b763a8211e11b55c5bd6114105f/market_making

Hermes

Meteoraにおける🤖Keeper Bot.

  • Yield Optimizer
  • Key Metrics Tracker
  • Risk Monitoring

🪣Meteora Dynamic Vaults

🪣Meteora Dynamic AMM Pools

旧Mercurial Dynamic AMM.

dev

APIs

https://amm-v2.meteora.ag/swagger-ui/


depricated?

LST Pools

Dynamic Poolsの一部としてLST Poolsが分割管理されている?

https://app.meteora.ag/#lstpools

all pools

getAllPoolState https://github.com/MeteoraAg/mercurial-dynamic-amm-sdk/blob/ae46f2a44edbd8231467effd530c1eeecc231a1b/ts-client/src/amm/index.ts#L88

new pools

🪣Meteora M3M3

https://m3m3.meteora.ag/

<2024-12-06 Fri> より. ミームコイン用.

🪣Meteora Multitokens

Mercurial Stable Swapのリブランド. Meteora v1, 🪣Multitoken Pools

<2024-12-06 Fri 12:49>

🪣Mercurial Stable Swap

Meteoraの旧名称.

https://github.com/MeteoraAg/stable-swap-n-pool-instructions