Chuyển đến nội dung chính

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.

Trang này được dịch tự động bằng AI. Phiên bản tiếng Anh là bản chính thức.Xem bản tiếng Anh →

Bonding curve là gì

Bonding curve là một hàm giá xác định p(s) liên hệ giá của token với số lượng hiện đang lưu hành (s đối với “supply sold” — cung ứng đã bán). Người mua mua bằng cách gửi tài sản thế chấp vào hợp đồng; hợp đồng phát hành các đơn vị token mới theo giá biên được quy định bởi đường cong. Người bán trả lại các đơn vị token và nhận lại khoản tiền theo tích phân. Hai thuộc tính chính so với pool CPMM:
  • Không cần đối tác. Hợp đồng phát hành là người tạo lập thị trường; thanibility tồn tại bất kì.
  • Giá đơn điệu. Giá tăng với mỗi lần mua ròng và giảm với mỗi lần bán ròng.
Bonding curves là cơ chế khởi động tiêu chuẩn khi thực thể phát hành không muốn khởi động sẵn pool AMM với tài sản thế chấp.

Công thức định giá chung

Đối với bất kỳ hàm giá liên tục nào p(s): Giá spot tại cung cấp s:
p(s) = the curve formula
Chi phí để mua cung cấp từ s_0 đến s_1 (với s_1 > s_0):
cost(s_0, s_1) = ∫_{s_0}^{s_1} p(s) ds = P(s_1) − P(s_0)
trong đó P(s) = ∫ p(s) ds là nguyên hàm của đường cong. Về hình học, cost là diện tích dưới p giữa s_0s_1. Lợi tức từ việc bán lại cung cấp từ s_1 về s_0:
proceeds(s_1, s_0) = cost(s_0, s_1)
(Đối xứng: mua và bán qua cùng một khoảng trao đổi tài sản thế chấp giống nhau — loại trừ phí.) Giá trung bình cho lần mua:
avg = cost(s_0, s_1) / (s_1 − s_0)

Các họ đường cong phổ biến

Tuyến tính

p(s) = a + b · s
P(s)            = a·s + (b/2)·s²
cost(s_0, s_1)  = a·(s_1 − s_0) + (b/2)·(s_1² − s_0²)
Giá tăng tỷ lệ thuận với cung cấp. Được sử dụng cho các lần phát hành “ổn định” trong đó người phát hành muốn có một mức tăng giá có thể dự đoán được, vừa phải trong suốt vòng đời.

Bậc hai

p(s) = k · s²                      // or  k · (s / S_max)² for a normalized form
P(s)            = (k / 3) · s³
cost(s_0, s_1)  = (k / 3) · (s_1³ − s_0³)
Giá tăng theo hàm bậc hai. Các nhà mua sớm nhận được giá gần bằng không (vùng khởi đầu phẳng); những nhà mua muộn trả mức chênh lệch cao hơn. Đây là loại đường cong mà LaunchLab mặc định sử dụng (curve_type = 0).

Virtual-reserves CPMM (kiểu Pump)

Đường cong là một CPMM tiêu chuẩn với dự trữ quote ban đầu giả V_q:
effective_y = V_q + collateral_received
effective_x = S_max − s
(effective_x) · (effective_y) = V_q · S_max      // invariant
Giá spot:
p(s) = effective_y / effective_x
     = V_q · S_max / (S_max − s)² · ... (derivable via implicit differentiation)
Chi phí để di chuyển từ s_0 đến s_1:
cost(s_0, s_1) = V_q · S_max / (S_max − s_1) − V_q · S_max / (S_max − s_0)
              = V_q · (s_1 − s_0) · S_max / ((S_max − s_0) · (S_max − s_1))
Biến thể này có thuộc tính thanh lịch rằng tại thời điểm tốt nghiệp (trong đó s = S_graduate), giá biên bằng giá mở của pool CPMM hạ lưu được hạt giống với dự trữ (S_max − S_graduate, V_q + cost(0, S_graduate)). Chuyển giao là liền mạch. LaunchLab hiển thị điều này dưới dạng curve_type = 1.

Triển khai rời rạc

Trên chuỗi, scost đều là số nguyên (các đơn vị ký nhỏ nhất). Tích phân liên tục cost(s_0, s_1) được tính trực tiếp từ dạng đóng bất cứ khi nào nó tồn tại (tuyến tính, bậc hai). Đối với các đường cong không có nghịch đảo dạng đóng (bậc hai, cho cost, tìm s_1), Newton iteration được sử dụng:
# Solve quadratic: (k/3)·s_1³ = (k/3)·s_0³ + cost
# Initialize with s_guess ≈ cbrt(3·cost/k + s_0³)
for i in 0..MAX_ITER:
    f    = (k/3)·s_guess³ − (k/3)·s_0³ − cost
    f'   = k·s_guess²
    step = f / f'
    s_guess -= step
    if |step| < precision_floor: break
LaunchLab giới hạn các lần lặp ở khoảng ~10 và hoàn nguyên với NotConverged nếu phần dư vẫn nằm trên dung sai. Trong thực tế, điều này chỉ kích hoạt gần các điểm cực của miền; các giao dịch sản xuất hội tụ trong 2–3 lần lặp.

Tích hợp phí

Phí được áp dụng trên chi phí đường cong, không bên trong nó. Khi mua:
cost_curve  = cost(base_sold, base_sold + base_out)
fee         = ceil(cost_curve · buy_numerator / buy_denominator)
quote_in    = cost_curve + fee
Khi bán:
proceeds_curve = cost(base_sold − base_in, base_sold)
fee            = ceil(proceeds_curve · sell_numerator / sell_denominator)
quote_out      = proceeds_curve − fee
Phần LP của phí được giữ lại trong quote_vault và về mặt hiệu quả làm cho đường cong cứng hơn đối với những người mua sau — dự trữ tăng mà không phát hành thêm cung ứng. Các phần giao thức và người sáng tạo được theo dõi trong các bộ đếm riêng biệt để lặt lại sau.

Ngưỡng tốt nghiệp

Một đường cong “tốt nghiệp” khi nó đã nhận đủ tài sản thế chấp để khởi động pool AMM bên ngoài với giá phù hợp với giá đường cong hiện tại. Đối với đường cong bậc hai có các tham số (k, S_max, S_graduate):
quote_to_graduate = cost(0, S_graduate) · (1 + buy_fee_rate)
                  = (k / 3) · S_graduate³ · (1 + f_buy)
Khi quote_vault ≥ quote_to_graduate, lệnh Graduate tạo pool CPMM với:
cpmm_base_reserve  = S_max − S_graduate        // unsold curve supply
cpmm_quote_reserve = quote_vault − accrued_fee_counters
cpmm_initial_price = cpmm_quote_reserve / cpmm_base_reserve
Đối với đường cong virtual-reserves, theo cấu trúc:
cpmm_initial_price == p(S_graduate)           // exact equality
Đối với bậc hai, sự bằng nhau là gần đúng; “phần dư” được hấp thụ vào làm tròn S_graduate (thường là 0.8 · S_max) và thặng dư tài sản thế chấp từ lần mua vượt ngưỡng cuối cùng.

Tính không lâu dài so với pool CPMM

Lần phát hành bonding-curve thuần túy có không tính không lâu dài theo ý nghĩa Uniswap: không có “phía khác” của thị trường để cân bằng lại. Đường cong phát hành cung ứng theo yêu cầu, và “LP” duy nhất là chính hợp đồng. Sau khi tốt nghiệp, pool CPMM kết quả hoạt động như bất kỳ pool CPMM nào khác — nếu LP không bị đốt, họ phải chịu các động lực impermanent-loss thông thường. Đây là lý do tại sao chính sách burn sau tốt nghiệp chiếm ưu thế trong các lần phát hành công khai: nó giữ pool vĩnh viễn và loại bỏ bất kỳ cú sốc giá nào do rút LP.

Ví dụ thực tế

Đường cong: bậc hai, k = 40, S_max = 1e9, S_graduate = 0.8 · S_max = 8e8. Phí mua 1%.

Giá tại s = 5e8

p(5e8) = 40 · (5e8 / 1e9)² = 40 · 0.25 = 10
10 đơn vị quote cho mỗi đơn vị base.

Chi phí của lần mua đầu tiên 1e6 base

cost(0, 1e6) = (40/3) · (1e6)³
             = (40/3) · 1e18
             ≈ 1.333e19     (smallest quote units)
Với phí 1%:
quote_in = 1.333e19 · 1.01 ≈ 1.347e19

Ngưỡng tốt nghiệp

cost(0, 8e8) = (40/3) · (8e8)³
             = (40/3) · 5.12e26
             ≈ 6.827e27
quote_to_graduate ≈ 6.827e27 · 1.01 ≈ 6.895e27

Giá tại tốt nghiệp

p(8e8) = 40 · 0.64 = 25.6

Dự trữ CPMM sau tốt nghiệp

cpmm_base  = 1e9 − 8e8 = 2e8
cpmm_quote ≈ 6.827e27  (less fee-counter deductions)
cpmm_price ≈ 3.41e19 per base — which matches p(8e8) after units are accounted for
(Đơn vị: các chữ số cần được theo dõi cẩn thận; ví dụ là minh họa.)

Các con trỏ

Nguồn:
  • Mã nguồn chương trình Raydium LaunchLab (triển khai đường cong bậc hai + virtual-reserves).
  • Whitepaper Bancor (bonding curves tuyến tính, lịch sử).
  • Các bài viết phân tích hậu quả công khai của Pump.fun (biến thể virtual-reserves).