메인 콘텐츠로 건너뛰기

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에서 선택 가능한 세 가지 곡선 형태를 지원합니다: 상수곱 (가장 일반적이며, 표준 x · y = k 곡선의 가상 자산 형태), 선형 가격, 고정 가격. 졸업 임계값 공식은 세 형태 모두에서 동일합니다. 이 페이지에서는 상수곱 수학을 자세히 설명하고, 선형 및 고정 형태는 마지막에 요약합니다.

LaunchState에 저장된 매개변수

필드의미
curve_type0 = 상수곱 (가상 자산), 1 = 고정 가격, 2 = 선형 가격.
base_supply_max곡선이 발행할 수 있는 총 베이스 토큰 개수.
base_supply_graduation졸업에 도달하기 위해 판매해야 하는 베이스 토큰 개수. 보통 0.8 × base_supply_max이며, 남은 20%는 졸업 후 풀의 초기 LP가 됩니다.
quote_reserve_target졸업을 촉발하는 인용 자산 개수. Initialize에서 곡선 매개변수 + base_supply_graduation으로부터 도출됩니다.
virtual_base / virtual_quote상수곱 곡선의 가상 자산 시드값.
migrate_type졸업 대상 선택: AMM v4 vs CPMM. instructions를 참조하세요.
fees.buy_numerator / buy_denominator매수 수수료, 예: 100 / 10_000 = 1.00%.
fees.sell_numerator / sell_denominator매도 수수료. 보통 매수와 같습니다.
fees.protocol_share, fees.creator_share, fees.lp_share위 수수료의 분배로, 분모를 합산합니다.
Rust 구조체의 필드명은 accounts에서 설명하는 PoolState 필드와 일치합니다. 위의 단위는 개념적입니다.

가상 자산을 포함한 상수곱 곡선 (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에 대해 이차 함수입니다. 초기 매수자는 거의 0에 가까운 가격을 지불하고, 후기 매수자는 훨씬 더 많은 가격을 지불하며, 한계 가격은 항상 고정된 기울기로 상승합니다. 온체인 구현은 curve/linear_price.rs에 있습니다.

곡선 형태 비교

가격
  │   선형 (가파른 꼬리)                선형 (curve_type = 2)
  │       ╱
  │      ╱
  │     ╱            상수곱 (curve_type = 0)
  │    ╱            ╱
  │   ╱           ╱
  │  ╱         ╱
  │ ╱       ╱
  │╱_____╱_______________________  고정 가격 (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 (순수 이차 함수는 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 = 0, quote_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로 전환하는 관찰자는 점프를 보지 않습니다.

다음 단계

출처: