このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
LaunchLab は
Initialize で選択できる 3 つのカーブ形状をサポートしています:constant-product(最も一般的で、標準的な x · y = k カーブの仮想リザーブ形式)、linear-price、fixed-price。卒業閾値の公式は 3 つすべてで共通です。このページでは constant-product の数学を詳しく説明し、linear 形式と fixed 形式は最後にまとめています。LaunchState に保存されるパラメータ
Rust 構造体のフィールド名は
accounts で説明されている PoolState フィールドと一致します。上記の単位は概念的なものです。
仮想リザーブを使用した constant-product カーブ(curve_type = 0)
デフォルトで最も使用されるカーブです。Pump スタイルのローンチはすべてこの形式を使用します。カーブは最初から 仮想クォートリザーブ V_q と 仮想ベースリザーブ V_b が存在すると想定し(PoolState の virtual_quote と virtual_base として保存)、有効なプールは これらのリザーブを持つ CPMM のように見えます。買いは x · y = k の数学に従います:
base_out について解くと:
s での有効価格:
x · y = k 不変量は、卒業後の CPMM カーブでもあるため、ハンドオフは機械的にシームレスです:base_sold = base_supply_graduation での限界価格は、卒業後プールが (quote_vault, base_vault_remaining) をリザーブとして開く価格と等しくなります。
Fixed-price カーブ(curve_type = 1)
フラット価格カーブです。すべての買い・売りは定数価格で発生し、Initialize で設定可能です:
base_supply_graduation が売却されたときに卒業がトリガーされます(線形コスト関係により quote_reserve_target の導出は簡単です)。
Linear-price カーブ(curve_type = 2)
価格は base_sold に対して線形に増加します:
base_sold に対して二次関数です。早期の買い手はほぼゼロを支払い、後期の買い手は大幅に多く支払い、限界価格は常に固定スロープで上昇します。オンチェーン実装は curve/linear_price.rs にあります。
カーブ形状の比較
卒業閾値
quote_reserve_target は Initialize で計算され、base_sold を 0 から base_supply_graduation に駆動するために必要なクォートです:
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):
s = 800_000_000):
10 USDC:
- 仮想状態:
s = 0、quote_vault = 0。 - フィーを差し引く:
quote_after_fee = 10 × 0.99 = 9.9。 (40 / (3e18)) × s³ = 9.9を解く ⇒s ≈ 6.22e6ベーストークンが買われます。- 1% フィー(
0.1 USDC)分割:lp0.06、creator0.02、protocol0.02。lp シェアはquote_vaultに留まります。他の 2 つはそれぞれのアクルーアルカウンターにルーティングされます。
s₀ = 750e6 での Newton 解で quote_in_after_fee = 9.9 は、大体 ∆s ≈ 0.4e6 を与えます。これは最初の買いと比べて USDC あたりのベースが約 15 倍削減されています。
カーブフェーズ中のフィーメカニクス
すべてのBuy で:
lp_shareはquote_vaultに留まります。これが有効なカーブをより厳しくする(同じベース供給に対してより多くのクォートリザーブ)ものです。protocol_shareはLaunchState.state_data.protocol_fees_quoteをインクリメントします。creator_shareはLaunchState.state_data.creator_fees_quoteをインクリメントします。
Sell では同じ分割が適用されますが、フィーはアウトバウンド quote_out から取られます。
両方のカウンターは CollectFees を介してスイープされます(管理者またはクリエイター、それぞれ自分のカウンターへ)。
精度
- ベース側の量:
u64。 - クォート側の量:
u64。 - 中間の立方体・積:
u128。 - 「正確なクォートを買う」と「正確なクォートを売る」の Newton 解は、設定可能な最大反復回数(デフォルト 10)で
u128固定小数点で反復します。失敗モードはNotConvergedです。卒業直前のエッジケース外では稀です。
CPMM へのハンドオフ
Graduate が発火するとき:
cpmm_initial_price は機械的に price(base_sold) です(ハンドオフの瞬間の限界カーブ価格です)。CPMM プールはまさにその価格で開くため、カーブ UI から CPMM UI に切り替わるオブザーバーはジャンプを見ません。
次のステップ
products/launchlab/accounts— これらのパラメータを保存するLaunchStateフィールド。products/launchlab/instructions—Buy、Sell、Graduateアカウントリスト。algorithms/constant-product— 卒業後プールが使用する CPMM の数学。
- Raydium SDK v2
LaunchLabmodule - Raydium LaunchLab プログラムソース

