メインコンテンツへスキップ

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 による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →

ボンディングカーブとは

ボンディングカーブ は、トークン価格を現在流通しているサプライ量(s は「売却済みサプライ」を意味する)に関連付ける決定論的な価格関数 p(s) です。買い手はコントラクトに担保を送ることで購入します。コントラクトは曲線によって定められた限界価格で新しいトークン単位を発行します。売り手はトークン単位を返し、統合された払い戻しを受け取ります。 CPMM プールと比較して 2 つの主要な特性があります:
  • カウンターパーティが不要。 発行するコントラクトは市場メーカーです。流動性は決定によって存在します。
  • 単調な価格。 ネット買いで上昇し、ネット売りで下落します。
ボンディングカーブは、発行元が担保で事前に AMM プールをシードしたくない場合の標準的なローンチメカニズムです。

一般的な価格計算式

任意の連続価格関数 p(s) に対して: スポット価格 (サプライ s での):
p(s) = the curve formula
購入コスト (サプライ s_0 から s_1 まで、s_1 > s_0 の場合):
cost(s_0, s_1) = ∫_{s_0}^{s_1} p(s) ds = P(s_1) − P(s_0)
ここで P(s) = ∫ p(s) ds は曲線の原始関数です。幾何学的には、costs_0s_1 の間で p の下の領域です。 売却からのリターン (サプライを s_1 から s_0 に戻す):
proceeds(s_1, s_0) = cost(s_0, s_1)
(対称性:同じ間隔での買いと売りは同じ担保を交換します — 手数料を除く。) 購入の平均価格
avg = cost(s_0, s_1) / (s_1 − s_0)

一般的な曲線ファミリー

一次曲線

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²)
価格はサプライに比例して上昇します。発行者が予測可能で適度なマークアップを生涯にわたって望む「安定した」ローンチに使用されます。

二次曲線

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³)
価格は二次的に上昇します。初期の買い手はほぼゼロの価格を取得します(平坦な開始領域)。後期の買い手はより高い報酬を支払います。これは LaunchLab がデフォルトとする曲線タイプです(curve_type = 0)。

仮想リザーブ CPMM(ポンプスタイル)

曲線は、見かけ上の初期クォートリザーブ V_q を備えた標準的な CPMM です:
effective_y = V_q + collateral_received
effective_x = S_max − s
(effective_x) · (effective_y) = V_q · S_max      // invariant
スポット価格:
p(s) = effective_y / effective_x
     = V_q · S_max / (S_max − s)² · ... (derivable via implicit differentiation)
s_0 から 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))
このバリアントは、卒業時(s = S_graduate の場合)に、限界価格がリザーブ (S_max − S_graduate, V_q + cost(0, S_graduate)) でシードされた下流の CPMM プールのオープン価格に等しくなるという優雅な特性を持っています。ハンドオフはシームレスです。LaunchLab はこれを curve_type = 1 として公開しています。

離散実装

オンチェーンでは、scost は両方とも整数(最小デノミネーション単位)です。連続積分 cost(s_0, s_1) は、1 つが存在するときは常に閉じた形式から直接計算されます(一次、二次)。閉じた形式の逆を持たない曲線(二次、cost が与えられた場合 s_1 を求める)では、ニュートン法が使用されます:
# 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 は反復を約 10 回に制限し、残差がまだ許容値を超えている場合は NotConverged で戻します。実際には、これはドメインの端でのみトリガーされます。本番スワップは 2 ~ 3 回の反復で収束します。

手数料統合

手数料は曲線コストの上に適用され、その内部ではありません。購入時:
cost_curve  = cost(base_sold, base_sold + base_out)
fee         = ceil(cost_curve · buy_numerator / buy_denominator)
quote_in    = cost_curve + fee
売却時:
proceeds_curve = cost(base_sold − base_in, base_sold)
fee            = ceil(proceeds_curve · sell_numerator / sell_denominator)
quote_out      = proceeds_curve − fee
手数料の LP 部分は quote_vault に保持され、後の買い手のために曲線をより硬くします — リザーブはサプライをさらに発行することなく成長します。プロトコルと作成者の部分は、後で掃引するための別々のカウンターで追跡されます。

卒業閾値

曲線は、現在の曲線価格に一致する価格で外部 AMM プールをシードするのに十分な担保を受け取ったときに「卒業」します。パラメーター (k, S_max, S_graduate) を持つ二次曲線の場合:
quote_to_graduate = cost(0, S_graduate) · (1 + buy_fee_rate)
                  = (k / 3) · S_graduate³ · (1 + f_buy)
quote_vault ≥ quote_to_graduate になると、Graduate 命令は以下を含む CPMM プールを作成します:
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
仮想リザーブ曲線の場合、構成上:
cpmm_initial_price == p(S_graduate)           // exact equality
二次の場合、等式は近似です。「スロップ」は S_graduate のラウンディング(通常 0.8 · S_max)と最終閾値を越える買いからの余分な担保に吸収されます。

CPMM プールと比較した無期限損失

純粋なボンディングカーブローンチは、Uniswap の意味で 無期限損失がありません:バランスを調整すべき「もう一方の側」がありません。曲線はオンデマンドでサプライを発行し、唯一の「LP」はコントラクト自体です。 卒業後、結果の CPMM プールは他の CPMM プールのような動作をします — LP が焼却されなかった場合、それらは通常の無期限損失ダイナミクスの対象となります。これが、公開ローンチ後の 焼却 ポリシーが支配的である理由です:プールを永続的に保ち、LP 引き出し駆動の価格ショックを削除します。

実例

曲線:二次、k = 40S_max = 1e9S_graduate = 0.8 · S_max = 8e8。購入手数料 1%。

s = 5e8 での価格

p(5e8) = 40 · (5e8 / 1e9)² = 40 · 0.25 = 10
ベース単位あたり 10 クォート単位。

最初の 1e6 ベースの購入のコスト

cost(0, 1e6) = (40/3) · (1e6)³
             = (40/3) · 1e18
             ≈ 1.333e19     (smallest quote units)
1% 手数料付き:
quote_in = 1.333e19 · 1.01 ≈ 1.347e19

卒業閾値

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

卒業時の価格

p(8e8) = 40 · 0.64 = 25.6

卒業後の CPMM リザーブ

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
(単位:デシマルを慎重に追跡する必要があります。例は説明的です。)

ポインター

ソース:
  • Raydium LaunchLab プログラム ソース(二次 + 仮想リザーブ曲線実装)。
  • Bancor ホワイトペーパー(線形ボンディング曲線、歴史的)。
  • Pump.fun パブリック ポストモーテム(仮想リザーブ バリアント)。