Langsung ke konten utama

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.

Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
LaunchLab mendukung tiga bentuk kurva yang dipilih saat Initialize: constant-product (paling umum, bentuk virtual-reserve dari kurva standar x · y = k), linear-price, dan fixed-price. Rumus ambang kelulusan dibagikan di ketiga bentuk ini. Halaman ini membahas matemnya constant-product secara detail; bentuk linear dan fixed dirangkum di akhir.

Parameter yang tersimpan di LaunchState

FieldArti
curve_type0 = constant-product (virtual-reserves), 1 = fixed-price, 2 = linear-price.
base_supply_maxTotal token base yang dapat dikurasi kurva.
base_supply_graduationToken base yang harus dijual untuk mencapai kelulusan. Biasanya 0.8 × base_supply_max; sisa 20% menjadi LP awal pool pasca-kelulusan.
quote_reserve_targetJumlah quote yang memicu kelulusan. Diturunkan saat Initialize dari parameter kurva + base_supply_graduation.
virtual_base / virtual_quoteSeed virtual-reserve untuk kurva constant-product.
migrate_typeMemilih target kelulusan: AMM v4 vs CPMM. Lihat instructions.
fees.buy_numerator / buy_denominatorBiaya sisi beli, misalnya 100 / 10_000 = 1.00%.
fees.sell_numerator / sell_denominatorBiaya sisi jual. Sering sama dengan beli.
fees.protocol_share, fees.creator_share, fees.lp_sharePembagian di atas, berjumlah denominator.
Nama field dalam struct Rust cocok dengan field PoolState yang dijelaskan di accounts; unit di atas adalah konseptual.

Kurva constant-product dengan virtual reserves (curve_type = 0)

Kurva default dan paling banyak digunakan. Semua peluncuran gaya Pump menggunakan bentuk ini. Kurva berpura-pura ada virtual quote reserve V_q dan virtual base reserve V_b dari awal (disimpan sebagai virtual_quote dan virtual_base di PoolState), jadi pool efektif terlihat seperti CPMM dengan reserve tersebut. Pembelian mengikuti matematika x · y = k:
(V_q + real_quote_in_after_fee) × (V_b + real_base_remaining − base_out) = V_q × V_b
diselesaikan untuk base_out:
base_out = (V_b + real_base_remaining) × quote_in_after_fee / (V_q + real_quote_in_after_fee)
Harga efektif pada base-terjual s:
price(s) = (V_q + real_quote_in(s)) / (V_b + real_base_remaining(s))
Invarian x · y = k yang sama yang diterapkan LaunchLab sebelum kelulusan adalah literal kurva CPMM (atau AMM v4) pasca-kelulusan, jadi penyerahan kelulusan bersifat mekanis mulus: harga marginal pada base_sold = base_supply_graduation sama dengan harga pool pasca-kelulusan dibuka dengan (quote_vault, base_vault_remaining) sebagai reserve-nya.

Kurva fixed-price (curve_type = 1)

Kurva harga datar. Setiap beli/jual terjadi pada harga konstan, dapat dikonfigurasi saat Initialize:
price(s) = virtual_quote / virtual_base    (konstan untuk semua s)
Berguna untuk peluncuran adil di mana tim menginginkan harga seragam untuk semua peserta terlepas dari kapan mereka membeli. Kelulusan dipicu saat base_supply_graduation telah terjual (hubungan biaya linear membuat derivasi quote_reserve_target sederhana).

Kurva linear-price (curve_type = 2)

Harga meningkat linier dengan base_sold:
price(s) = a · s     (a = kemiringan, diturunkan dari virtual_base / virtual_quote)
Biaya terintegrasi:
cost(s_0, s_1) = a · (s_1² − s_0²) / 2
Kuadratik dalam base_sold — pembeli awal membayar mendekati nol, pembeli terlambat membayar jauh lebih banyak, dengan harga marginal selalu naik pada kemiringan tetap. Implementasi on-chain ada di curve/linear_price.rs.

Perbandingan bentuk kurva

harga
  │   linear (ekor curam)               linear (curve_type = 2)
  │       ╱
  │      ╱
  │     ╱            const-product (curve_type = 0)
  │    ╱            ╱
  │   ╱           ╱
  │  ╱         ╱
  │ ╱       ╱
  │╱_____╱_______________________  fixed-price (curve_type = 1)
  └──────────────────────────────── base_terjual
  0                  S_grad         S_maks

Ambang kelulusan

quote_reserve_target dihitung saat Initialize sebagai quote yang diperlukan untuk mendorong base_sold dari 0 ke base_supply_graduation:
quote_reserve_target = cost(0, base_supply_graduation) × (1 + buy_fee_rate)
                                                         ^^^^^^^^^^^^^^^^^
                                                         aproksimasi; bentuk
                                                         eksak cocok dengan
                                                         pembulatan biaya di Buy.
Peluncuran kelulusan segera setelah quote_vault.balance ≥ quote_reserve_target. Karena pembelian datang dalam ukuran diskrit, saldo aktual saat kelulusan dapat sedikit melebihi target — surplus menjadi likuiditas quote sisi tambahan di pool CPMM yang dihasilkan.

Contoh terperinci — peluncuran kuadratik

Parameter:
  • base_supply_max = 1_000_000_000 (1 miliar token base, 6 desimal)
  • base_supply_graduation = 800_000_000 (80% terjual memicu kelulusan)
  • k = 40 (skala harga)
  • Biaya: 1% beli, 1% jual, pembagian lp:creator:protocol = 60:20:20.
Harga awal (s = 0): 0 (kuadratik murni dimulai dari nol). Harga pada 50% terjual (s = 500_000_000):
price = 40 × (500e6 / 1e9)² = 40 × 0.25 = 10  (quote per base, 6 desimal)
Harga saat kelulusan (s = 800_000_000):
price = 40 × (800e6 / 1e9)² = 40 × 0.64 = 25.6
Quote diperlukan untuk mencapai kelulusan (biaya terintegrasi):
cost(0, 800_000_000) = (40 / (3 × 1e18)) × ((800e6)³ − 0)
                     = (40 / 3e18) × 5.12e26
                     ≈ 6.827e9
Jadi ≈ 6.827 unit quote-native (dalam mint quote 6-desimal apa pun yang dikonfigurasi, misalnya ~6.827 USDC jika quote-nya USDC). Biaya diterapkan di atas:
quote_reserve_target ≈ 6.827e9 × 1.01 ≈ 6.895e9  (6.895 USDC)
Pembelian pertama dari 10 USDC:
  • Status virtual: s = 0, quote_vault = 0.
  • Kurangi biaya: quote_after_fee = 10 × 0.99 = 9.9.
  • Selesaikan (40 / (3e18)) × s³ = 9.9s ≈ 6.22e6 token base dibeli.
  • Biaya 1% (0.1 USDC) dibagi: lp 0.06, creator 0.02, protocol 0.02. Bagian lp tetap di quote_vault; dua lainnya rute ke penghitung akrual masing-masing.
Beli pada 75% terjual (mendekati kelulusan): Sama 10 USDC membeli jauh lebih sedikit base sekarang karena kurvanya curam. Penyelesaian Newton di s₀ = 750e6 dengan quote_in_after_fee = 9.9 memberikan kira-kira ∆s ≈ 0.4e6 — pengurangan ~15× dalam base per USDC dibandingkan pembelian pertama.

Mekanika biaya selama fase kurva

Pada setiap 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_share ditinggalkan di quote_vault. Ini membuat kurva efektif lebih ketat (lebih banyak quote reserve terhadap suplai base yang sama).
  • protocol_share meningkatkan LaunchState.state_data.protocol_fees_quote.
  • creator_share meningkatkan LaunchState.state_data.creator_fees_quote.
Pada Sell pembagian yang sama berlaku tetapi biaya diambil dari outbound quote_out. Kedua penghitung disapu melalui CollectFees (admin atau creator, masing-masing ke penghitung mereka sendiri).

Presisi

  • Jumlah sisi base: u64.
  • Jumlah sisi quote: u64.
  • Kubus / produk perantara: u128.
  • Penyelesaian Newton untuk “beli exact quote” dan “jual exact quote” beriterasi dalam u128 fixed-point dengan jumlah iterasi maksimum yang dapat dikonfigurasi (default 10). Mode kegagalan adalah NotConverged — jarang di luar kasus tepi mendekati kelulusan.

Penyerahan ke CPMM

Saat Graduate diaktifkan:
cpmm_quote_reserve = quote_vault − swept_protocol_fees − swept_creator_fees
cpmm_base_reserve  = base_vault                       // yaitu base_supply_max − base_sold
cpmm_initial_price = cpmm_quote_reserve / cpmm_base_reserve
Untuk kurva kuadratik, cpmm_initial_price adalah price(base_sold) secara mekanis (ini adalah harga kurva marginal saat momen penyerahan). Pool CPMM membuka pada harga yang tepat, jadi pengamat yang beralih dari UI kurva ke UI CPMM tidak melihat lompatan.

Ke mana selanjutnya

Sumber: