메인 콘텐츠로 건너뛰기

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은 Raydium의 1차 시장 출시 플랫폼입니다. 프로젝트가 토큰 공급을 본딩 곡선에 예치하면, 구매자가 SOL(또는 다른 인용 민트)로 곡선과 거래하고, 졸업 임계값에 도달하면 곡선의 자산이 자동으로 CPMM 풀로 마이그레이션되어 토큰이 자유롭게 거래됩니다. 이 페이지는 프로젝트 입장에서 전체 흐름을 설명합니다.

필요한 것

  • 토큰 민트 — 판매하려는 토큰. 다음 조건으로 새로 발행되어야 합니다:
    • 전체 공급이 지갑에 발행됨 (곡선에 예치할 수 있도록).
    • 출시 전에 민트 권한 취소됨 (그렇지 않으면 새로운 민트로 곡선 가격을 조작할 수 있음).
  • 메타데이터 — 이름, 심볼, 이미지, 소셜 링크. Metaplex 메타데이터 또는 유사한 형식.
  • 지갑 — 생성 렌트 + 볼트 펀딩 + 우선순위 수수료를 위해 약 1 SOL (졸업 자체는 졸업자가 지불함, 당신이 아님).
  • 다음 항목에 대한 결정:
    • 곡선 유형 (이차 vs 가상 예비금 CPMM).
    • 졸업 임계값.
    • LP 처분 정책 (소각 / 잠금 / 생성자에게).
    • 초기 가격 및 한도.

곡선 선택

LaunchLab은 두 가지 곡선 계열을 지원합니다:

이차 (curve_type = 0)

판매된 공급에 따라 가격이 이차적으로 증가합니다. 고전적인 “공정한 출시” 느낌 — 초기 구매자가 가격 우위를 얻고, 후기 구매자가 더 많이 지불하고, 가격이 부드럽게 가속합니다.
price(s) = a * s^2 + b * s + c
여기서 s는 판매된 공급입니다. 일반적으로 a > 0 (볼록). 초기 가격과 졸업 가격 간 차이는 a, b, c 및 한도에 따라 결정론적입니다. 최적: 신규 출시, 밈, 커뮤니티 주도 프로젝트.

가상 예비금 CPMM (curve_type = 1)

가상 예비금을 사용하여 상수곱 AMM을 모방합니다 — 곡선은 x * y = k CPMM처럼 동작하지만 풀은 절대 인출되지 않는 합성 토큰으로 시작합니다.
price = virtual_quote_reserve / virtual_base_reserve
구매자가 구매하면 virtual_base_reserve는 감소하고 virtual_quote_reserve는 증가합니다 — 곡선은 졸업 후 CPMM과 동일하게 보입니다. 더 부드러운 전환. 최적: 예측 가능한 졸업 후 가격 연속성을 원하는 출시.

UI 안내

raydium.io/launchpad/create에서:
  1. 토큰. 민트 주소 붙여넣기. UI가 메타데이터를 가져와 표시합니다.
  2. 곡선 유형. 이차 또는 가상-CPMM 선택; UI가 각각에 대한 가격 차트 미리보기를 표시합니다.
  3. 졸업 임계값. 기본값: 곡선은 total_base_supply 전체가 판매된 후 종료됩니다. 대안: 특정 graduation_quote_amount에서 종료 (예: 85 SOL).
  4. 인용 민트. SOL (기본값), USDC 또는 다른 민트. SOL이 표준입니다.
  5. LP 처분 정책:
    • 소각 — LP 토큰이 졸업 시 사용할 수 없는 주소로 전송됩니다. 생성자가 유동성을 인출할 수 없으며, 사용자는 영구적으로 풀을 신뢰합니다.
    • 잠금 — LP 토큰이 lock_duration 동안 시간 잠금 에스크로로 전송됩니다.
    • 생성자에게 — LP 토큰이 생성자에게 전송됩니다. 가장 유연하고 신뢰 최소화가 가장 적습니다.
    가장 존경받는 출시는 소각을 사용합니다.
  6. 검토. UI가 다음을 요약합니다: 예상 가격 범위, 곡선이 팔리면 초기 모금액, 졸업 CPMM 설정.
  7. 서명. 하나의 트랜잭션이 출시 상태 + 기본 볼트 + 인용 볼트를 생성하고 total_base_supply를 지갑에서 기본 볼트로 전송합니다.

프로그래머 방식 안내

import { Raydium, TxVersion } from "@raydium-io/raydium-sdk-v2";
import { PublicKey } from "@solana/web3.js";
import BN from "bn.js";

const raydium = await Raydium.load({ connection, owner, cluster: "mainnet" });

const baseMint  = new PublicKey("MyNewToken...");
const quoteMint = new PublicKey("So11111111111111111111111111111111111111112"); // SOL

const { execute, extInfo } = await raydium.launchpad.createLaunchpad({
  programId:      LAUNCHPAD_PROGRAM_ID,
  baseMint,
  quoteMint,
  curveType:      0,                           // quadratic
  totalBaseSupply:    new BN("1000000000000000000"),   // 1B tokens with 9 decimals
  graduationQuoteAmount: new BN("85000000000"),         // 85 SOL
  lpDisposalPolicy:   "Burn",
  priceCurveParams: {
    a: new BN("1"),
    b: new BN("0"),
    c: new BN("0"),
  },
  startTime: new BN(Math.floor(Date.now() / 1000) + 300),  // start in 5 min
  txVersion: TxVersion.V0,
  computeBudgetConfig: { units: 400_000, microLamports: 50_000 },
});

const { txId } = await execute({ sendAndConfirm: true });
console.log("Launch ID:", extInfo.launchId.toBase58());
console.log("Base vault:", extInfo.baseVault.toBase58());
console.log("Quote vault:", extInfo.quoteVault.toBase58());

졸업 전 모니터링

API를 통해 활동을 추적합니다:
const status = await fetch(
  `https://api-v3.raydium.io/launchpad/status?launchId=${launchId}`
).then(r => r.json());

console.log("Sold so far:",       status.baseSold.toString());
console.log("Quote raised:",      status.quoteRaised.toString());
console.log("Current price:",     status.currentPriceUsd);
console.log("Graduation progress:", status.graduationProgress, "%");
또는 온체인 상태를 직접 디코딩합니다:
const launchState = await raydium.launchpad.fetchLaunchState(launchId);
console.log({
  baseSold:   launchState.baseSold.toString(),
  quoteHeld:  launchState.quoteHeld.toString(),
  graduated:  launchState.graduated,
});

모니터링할 지표

  • 소진율: 판매된 기본의 백분율. 졸업 임계값은 일반적으로 80-100% 판매 시입니다.
  • 현재 가격: 현재 baseSold에서 곡선에서 도출됨.
  • 고유 구매자: 인덱서를 통한 서로 다른 지불자의 개수.
  • 매입 대 매도 비율: 초기 출시는 무거운 매입 압박을 보이며 이후 감소합니다.
24시간 후 소진율이 <10%인 경우 마케팅이 충분한지 고려하세요. LaunchLab은 마케팅이 부족한 출시를 구제하지 않습니다.

졸업

졸업은 별도의 트랜잭션으로 누구나 호출할 수 있습니다 (일반적으로 임계값에 도달한 것을 처음 발견한 사람이 작은 graduation_bounty를 얻습니다). 생성자로서 초기 설정 외에 필요한 조치가 없습니다.

졸업이 하는 일

  1. 볼트 잔액을 읽습니다.
  2. 곡선을 종료합니다 (더 이상의 매입/매도 불가).
  3. 볼트 잔액을 초기 유동성으로 하는 새로운 CPMM 풀을 생성합니다.
  4. 볼트 잔액을 기준으로 초기 LP 토큰을 발행합니다.
  5. 설정된 정책에 따라 LP 토큰을 처분합니다 (소각 / 잠금 / 생성자에게).
졸업 후 CPMM 풀이 활성화되고 일반 Raydium 라우팅을 통해 거래합니다.

졸업 모니터링

const launchState = await raydium.launchpad.fetchLaunchState(launchId);
if (launchState.graduated) {
  const cpmmPoolId = launchState.graduatedCpmmPool;
  console.log("Graduated to CPMM pool:", cpmmPoolId.toBase58());
}

수동 졸업

아무도 보너스를 청구하지 않고 졸업을 강제하려는 경우 직접 호출할 수 있습니다:
await raydium.launchpad.graduate({
  launchId,
  txVersion: TxVersion.V0,
  computeBudgetConfig: { units: 600_000, microLamports: 100_000 },
});
졸업에는 상당한 CU가 사용되므로 600k를 예산으로 정하세요.

졸업 후

CPMM 풀 확인

const pool = await raydium.cpmm.getPoolInfoFromRpc({ poolId: cpmmPoolId });
console.log("CPMM price:", pool.poolInfo.price);
console.log("CPMM TVL:  ", pool.poolInfo.tvl);
CPMM 풀은 대략 다음을 가져야 합니다:
  • 기본 토큰 잔액: total_base_supply - baseSold + 곡선 잔여물.
  • 인용 토큰 잔액: quoteRaised - graduationFee.
  • 가격: 마지막 곡선 가격과 일치.

LP 처분 확인

  • 소각: LP 민트의 공급이 1nc1nerator11111111111111111111111111111111 또는 유사한 주소로 전송됨.
  • 잠금: 잠금 해제 타임스탬프가 있는 에스크로 PDA의 LP 토큰.
  • 생성자에게: 생성자 지갑의 LP 토큰.

생성자 수수료 수집

생성자 수수료 공유를 설정한 경우 주기적으로 호출합니다:
await raydium.launchpad.collectCreatorFees({
  launchId,
  txVersion: TxVersion.V0,
});
수수료는 졸업 전 곡선 거래 및 졸업 후 졸업된 CPMM 풀에서 누적됩니다 (LP가 ToCreator인 경우).

공지 체크리스트

졸업 후 공지에는 다음이 포함되어야 합니다:
  • 졸업 트랜잭션 해시.
  • 새로운 CPMM 풀 ID.
  • LP 처분 증명 (소각 트랜잭션 / 잠금 트랜잭션 / 생성자 지갑).
  • 애그리게이터 포함 예상 시간 (지갑은 일반적으로 5분 이내에 색인화).
  • 토큰 계약 검증 (공지 채널 전체에서 민트 주소와 일치).

함정

1. 민트 권한이 취소되지 않음

baseMint.mintAuthority가 당신이 제어하는 키인 경우, 새로운 공급을 발행하고 자신의 곡선으로 판매할 수 있습니다. 권한을 취소하지 않은 출시는 일반적으로 집계자 및 상장 사이트에서 고위험 또는 미확인으로 플래그됩니다. 출시 전에 취소합니다.

2. 잘못된 곡선 매개변수

a가 너무 높은 이차 곡선은 초기 토큰을 무료로 만들고 (가격 ≈ 0) 후기 토큰을 터무니없게 만듭니다. a가 너무 낮은 곡선은 거의 선형으로 만듭니다 (“본딩” 느낌 상실). 먼저 devnet에서 매개변수를 테스트합니다.

3. 졸업 임계값이 너무 높음

졸업이 현실적인 수요보다 더 많은 자본을 요구하는 경우, 곡선이 졸업하지 않고 구매자는 곡선으로만 다시 판매할 수 있는 토큰에 갇히게 됩니다 (더 나쁜 가격으로). 실제로 달성할 수 있는 임계값을 선택합니다.

4. 인용 민트 사기

인용 민트가 사용자 정의 토큰 (SOL/USDC 아님)인 경우, 사용자가 신뢰하지 않습니다. 인용으로 SOL 또는 USDC를 사용합니다.

5. 기본 볼트 펀딩을 잊음

SDK는 생성 시 지갑에서 totalBaseSupply를 전송합니다. 지갑에 없는 경우 트랜잭션이 되돌려집니다. 서명하기 전에 잔액을 확인합니다.

6. LP 처분 = 소각은 되돌릴 수 없음

LP가 1nc1nerator로 전송되면 아무도 유동성을 인출할 수 없습니다 (당신을 포함하여). 이것이 요점입니다 — 신뢰 최소화. 확실하지 않은 경우 소각을 선택하지 마세요.

7. 졸업 후 CPMM 수수료 등급

졸업된 풀은 LaunchLab의 기본 CPMM 설정 (0.25%)을 사용합니다. 1% 또는 0.01%을 원했다면, 졸업 후 직접 두 번째 CPMM 풀을 생성하고 유동성을 마이그레이션해야 합니다 — 번거롭고 분열됩니다. 기본값을 수용하거나 LaunchLab 대신 직접 CPMM 생성으로 출시합니다.

포인터

출처:
  • Raydium SDK v2 launchpad 모듈.
  • api-v3.raydium.io 엔드포인트를 통한 출시 상태.