メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
LaunchLab は、Initialize で選択される 3 つのカーブ形状をサポートします:constant-product(最も一般的で、標準的な x · y = k カーブの仮想リザーブ形式)、linear-price、および fixed-price。卒業スレッショルド式は、すべての 3 つに共通しています。このページでは constant-product の数学を詳細に説明します。linear と fixed の形式は最後に要約されています。

LaunchState に保存されるパラメータ

フィールド意味
curve_type0 = constant-product(仮想リザーブ)、1 = fixed-price、2 = linear-price。
base_supply_maxカーブがミントできるベーストークンの総量。
base_supply_graduation卒業に到達するために売却する必要があるベーストークン。通常 0.8 × base_supply_max。残りの 20% は卒業後プールの初期 LP になります。
quote_reserve_target卒業をトリガーするクオート額。Initialize でカーブパラメータ + base_supply_graduation から導出されます。
virtual_base / virtual_quoteconstant-product カーブの仮想リザーブシード。
migrate_type卒業ターゲットを選択:AMM v4 対 CPMM。instructions を参照してください。
fees.buy_numerator / buy_denominator買値側のフィー、例えば 100 / 10_000 = 1.00%
fees.sell_numerator / sell_denominator売値側のフィー。通常は買値と同じ。
fees.protocol_sharefees.creator_sharefees.lp_share上記の分割。合計は denominator。
Rust 構造体のフィールド名は、accounts に記載された PoolState フィールドと一致します。上記の単位は概念的です。

仮想リザーブを使用した constant-product カーブ(curve_type = 0

デフォルトで最も使用されるカーブ。Pump スタイルのローンチはすべてこの形式を使用します。カーブは、最初から 仮想クオートリザーブ V_q仮想ベースリザーブ V_b が存在すると想定します(PoolStatevirtual_quotevirtual_base として保存)。そのため、実質的なプールはこれらのリザーブを持つ CPMM のように見えます。買値は x · y = k の計算に従います:
(V_q + real_quote_in_after_fee) × (V_b + real_base_remaining − base_out) = V_q × V_b
base_out について解くと:
base_out = (V_b + real_base_remaining) × quote_in_after_fee / (V_q + real_quote_in_after_fee)
ベース売却 s での実効価格:
price(s) = (V_q + real_quote_in(s)) / (V_b + real_base_remaining(s))
LaunchLab が卒業前に適用する同じ x · y = k インバリアントは、卒業後は文字通り CPMM(または AMM v4)カーブになるため、卒業のハンドオフは機械的にシームレスです:base_sold = base_supply_graduation での限界価格は、(quote_vault, base_vault_remaining) をリザーブとして卒業後プールがオープンする価格と等しい。

固定価格カーブ(curve_type = 1

フラット価格カーブ。すべての買値・売値は定数価格で発生します。これは Initialize で設定可能です:
price(s) = virtual_quote / virtual_base    (すべての s で定数)
チームが購入タイミングに関係なく、すべての参加者に対して均一の価格設定を希望するフェアローンチに役立ちます。base_supply_graduation が売却されると卒業がトリガーされます(線形コスト関係により quote_reserve_target の導出は簡単です)。

線形価格カーブ(curve_type = 2

価格は base_sold に応じて線形に上昇します:
price(s) = a · s     (a = スロープ、virtual_base / virtual_quote から導出)
統合コスト:
cost(s_0, s_1) = a · (s_1² − s_0²) / 2
base_sold に関して二次式です。早期の購入者はほぼゼロを支払い、後期の購入者は大幅に多く支払います。限界価格は常に固定スロープで上昇しています。オンチェーン実装は curve/linear_price.rs に存在します。

カーブ形状の比較

価格
  │   linear(急な尾部)               linear (curve_type = 2)
  │       ╱
  │      ╱
  │     ╱            const-product (curve_type = 0)
  │    ╱            ╱
  │   ╱           ╱
  │  ╱         ╱
  │ ╱       ╱
  │╱_____╱_______________________  fixed-price (curve_type = 1)
  └──────────────────────────────── base_sold
  0                  S_grad         S_max

卒業スレッショルド

quote_reserve_targetInitialize で計算され、base_sold を 0 から base_supply_graduation へ駆動するために必要なクオートです:
quote_reserve_target = cost(0, base_supply_graduation) × (1 + buy_fee_rate)
                                                         ^^^^^^^^^^^^^^^^^
                                                         近似値;正確な
                                                         形式は Buy で使用される
                                                         フィー丸め処理に一致。
ローンチは quote_vault.balance ≥ quote_reserve_target になるとすぐに卒業します。買値は離散サイズで来るため、卒業時の実際のバランスはターゲットをわずかに超える可能性があります。剰余は結果的な CPMM プールのクオート側の追加流動性になります。

ワークスルー例 — 二次ローンチ

パラメータ:
  • base_supply_max = 1_000_000_000(10 億ベーストークン、6 デシマル)
  • base_supply_graduation = 800_000_000 (80% 売却で卒業トリガー)
  • k = 40(価格スケール)
  • フィー:買値 1%、売値 1%、分割 lp:creator:protocol = 60:20:20
初期価格s = 0):0(純粋な二次カーブはゼロで開始)。 50% 売却時の価格s = 500_000_000):
price = 40 × (500e6 / 1e9)² = 40 × 0.25 = 10  (ベースあたりのクオート、6 デシマル)
卒業時の価格s = 800_000_000):
price = 40 × (800e6 / 1e9)² = 40 × 0.64 = 25.6
卒業に到達するために必要なクオート(統合コスト):
cost(0, 800_000_000) = (40 / (3 × 1e18)) × ((800e6)³ − 0)
                     = (40 / 3e18) × 5.12e26
                     ≈ 6.827e9
したがって、約 6.827 クオート ネイティブ単位(設定されたどのような 6 デシマルクオートミント、例えば USDC がクオートの場合は約 6,827 USDC)。 適用されるフィー
quote_reserve_target ≈ 6.827e9 × 1.01 ≈ 6.895e9  (6,895 USDC)
最初の購入 10 USDC
  • 仮想状態:s = 0quote_vault = 0
  • フィーを差し引く:quote_after_fee = 10 × 0.99 = 9.9
  • (40 / (3e18)) × s³ = 9.9 を解く ⇒ s ≈ 6.22e6 ベーストークンを購入。
  • 1% フィー(0.1 USDC)の分割:lp 0.06、creator 0.02、protocol 0.02。lp シェアは quote_vault に残ります。その他は各自のアクルーアルカウンターにルーティングされます。
75% 売却時の購入(卒業に近づく): 同じ 10 USDC は、カーブが急なため、現在ははるかに少ないベースを購入します。s₀ = 750e6 での Newton 解を quote_in_after_fee = 9.9 で求めると、約 ∆s ≈ 0.4e6 です。これは最初の購入と比べてベース / USDC が約 15 倍減少しています。

カーブ段階中のフィーメカニクス

すべての Buy について:
gross_fee      = ceil(quote_in_gross × buy_numerator / buy_denominator)
lp_share       = gross_fee × fees.lp_share / fees.total_share
protocol_share = gross_fee × fees.protocol_share / fees.total_share
creator_share  = gross_fee × fees.creator_share / fees.total_share
  • lp_sharequote_vault に残ります。これが実効カーブをより厳しくする(同じベース供給に対してより多くのクオートリザーブ)理由です。
  • protocol_shareLaunchState.state_data.protocol_fees_quote を増加させます。
  • creator_shareLaunchState.state_data.creator_fees_quote を増加させます。
Sell ではアウトバウンド quote_out からフィーが取得され、同じ分割が適用されます。 両方のカウンターは CollectFees(管理者またはクリエイター。各自のカウンターへ)でスイープされます。

精度

  • ベース側の金額:u64
  • クオート側の金額:u64
  • 中間の立方体 / 積:u128
  • 「正確なクオートを買う」および「正確なクオートを売る」ための Newton 解は、設定可能な最大反復回数(デフォルト 10)で u128 固定小数点で反復します。フェイルモードは NotConverged です。卒業直前のエッジケースの外では珍しい。

CPMM へのハンドオフ

Graduate が発火するとき:
cpmm_quote_reserve = quote_vault − swept_protocol_fees − swept_creator_fees
cpmm_base_reserve  = base_vault                       // つまり base_supply_max − base_sold
cpmm_initial_price = cpmm_quote_reserve / cpmm_base_reserve
二次カーブの場合、cpmm_initial_price は機械的には price(base_sold) です(ハンドオフの瞬間の限界カーブ価格です)。CPMM プールはまさにその価格で開きます。そのため、カーブ UI から CPMM UI に切り替わるオブザーバーは価格のジャンプを見ません。

次のステップ

ソース: