Skip to main content
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 (yang paling umum, bentuk virtual-reserve dari kurva standar x · y = k), linear-price, dan fixed-price. Formula ambang batas kelulusan dibagikan di ketiga bentuk. Halaman ini menjelaskan matematika constant-product secara detail; bentuk linear dan fixed dirangkum di akhir.

Parameter yang disimpan di LaunchState

Nama field dalam struct Rust cocok dengan field PoolState yang dijelaskan di accounts; unit di atas bersifat konseptual.

Kurva constant-product dengan virtual reserve (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 sejak awal (disimpan sebagai virtual_quote dan virtual_base di PoolState), sehingga pool efektif terlihat seperti CPMM dengan reserve tersebut. Pembelian mengikuti matematika x · y = k:
diselesaikan untuk base_out:
Harga efektif pada base-terjual s:
Invariant x · y = k yang sama yang diterapkan LaunchLab pra-kelulusan kemudian menjadi kurva CPMM pasca-kelulusan, sehingga perpindahan bersifat mekanis mulus: harga marginal pada base_sold = base_supply_graduation sama dengan harga pembukaan pool pasca-kelulusan dengan (quote_vault, base_vault_remaining) sebagai reserve-nya.

Kurva fixed-price (curve_type = 1)

Kurva harga datar. Setiap pembelian/penjualan terjadi pada harga konstan, dapat dikonfigurasi saat Initialize:
Berguna untuk peluncuran adil di mana tim menginginkan harga seragam untuk semua peserta terlepas dari kapan mereka membeli. Kelulusan dipicu ketika base_supply_graduation telah terjual (hubungan biaya linear membuat quote_reserve_target mudah diturunkan).

Kurva linear-price (curve_type = 2)

Harga meningkat secara linear dengan base_sold:
Biaya terintegrasi:
Kuadratik dalam base_sold — pembeli awal membayar mendekati nol, pembeli akhir membayar jauh lebih banyak, dengan harga marginal selalu naik pada slope tetap. Implementasi on-chain berada di curve/linear_price.rs.

Perbandingan bentuk kurva

Ambang batas kelulusan

quote_reserve_target dihitung saat Initialize sebagai quote yang diperlukan untuk mendorong base_sold dari 0 ke base_supply_graduation:
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 sisi quote 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):
Harga saat kelulusan (s = 800_000_000):
Quote yang diperlukan untuk mencapai kelulusan (biaya terintegrasi):
Jadi ≈ 6.827 unit quote-native (dalam mint quote 6-desimal apa pun yang dikonfigurasi, misalnya ~6.827 USDC jika quote adalah USDC). Biaya diterapkan di atas:
Pembelian pertama sebesar 10 USDC:
  • State 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 menuju counter akrual masing-masing.
Pembelian pada 75% terjual (mendekati kelulusan): 10 USDC yang sama membeli jauh lebih sedikit base sekarang karena kurva curam. Penyelesaian Newton pada 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:
  • lp_share ditinggalkan di quote_vault. Ini yang membuat kurva efektif lebih ketat (lebih banyak quote reserve terhadap supply base yang sama).
  • protocol_share menambah LaunchState.state_data.protocol_fees_quote.
  • creator_share menambah LaunchState.state_data.creator_fees_quote.
Pada Sell pembagian yang sama diterapkan tetapi biaya diambil dari quote_out keluar. Kedua counter disapu melalui CollectFees (admin atau creator, masing-masing ke counter mereka).

Presisi

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

Perpindahan ke CPMM

Ketika Graduate dijalankan:
Untuk kurva kuadratik, cpmm_initial_price adalah price(base_sold) secara mekanis (ini adalah harga kurva marginal pada saat perpindahan). Pool CPMM dibuka pada harga yang tepat, sehingga pengamat yang beralih dari UI kurva ke UI CPMM tidak melihat lompatan.

Ke mana selanjutnya

Sumber: