Langsung ke konten utama
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

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:
diselesaikan untuk base_out:
Harga efektif pada base-terjual 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:
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:
Biaya terintegrasi:
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

Ambang 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 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):
Harga saat kelulusan (s = 800_000_000):
Quote 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-nya USDC). Biaya diterapkan di atas:
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:
  • 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:
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: