Skip to main content
이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
이 페이지는 런칭별 계정 그래프를 문서화합니다: PoolState (한 번의 런칭을 위한 루트 상태 계정), 두 개의 볼트, 권한 PDA, 그리고 런칭이 정산될 때 얻게 되는 졸업 후 참조입니다.모든 런칭을 제한하는 프로토콜 수준 설정은 products/launchlab/global-config를 참조하세요. 플랫폼별 오버레이는 products/launchlab/platform-config를 참조하세요. 베스팅 계정 (PoolStateVestingSchedule, 수혜자별 VestingRecord)은 products/launchlab/vesting을 참조하세요.

계정 목록

SDK의 raydium.launchpad.getLaunchByIdPoolState와 런칭이 졸업했는지 여부를 나타내는 플래그를 반환합니다. 졸업했다면 마이그레이션 후 풀 ID가 포함됩니다.

PoolState

런칭별 루트 상태입니다. 아래 필드 이름은 온체인 Rust 구조체 (states/pool.rs)와 일치합니다. 일부 값은 가독성을 위해 단순화되었으므로 정확한 메모리 레이아웃은 소스를 참조하세요.
PoolStatus 값 (Anchor IDL에서):
통합자 대면 필드:
  • status — 세 가지 값, 단조 (Funding → Migrate → Migrated). 읽기는 항상 안전하며, 쓰기는 제한됩니다.
  • real_base, real_quote — 현재 곡선 상태. virtual_base / virtual_quote와 함께 볼트에 접근하지 않고도 현물 가격을 계산하기에 충분합니다. bonding-curve를 참조하세요.
  • total_base_sell vs real_base — UI를 위한 “졸업까지의 진행률” 비율.
  • migrate_type — 새 초기화에는 1 (CPSWAP)이 필요합니다. 저장된 0은 CPMM 전용 적용 이전에 생성된 기존 런칭에서만 의미가 있습니다.
  • amm_creator_fee_on — 졸업 후 CPMM 풀에서 creator_fee_on = OnlyQuoteToken (0) 또는 BothToken (1)을 선택합니다. 마이그레이션 대상을 선택하지 않습니다. creator-fees를 참조하세요.
  • token_program_flag — 부울이 아닌 비트필드입니다. Bit0은 기본 민트이고 bit1은 인용 민트이며, 각각 SPL Token의 경우 0, Token-2022의 경우 1이므로 바이트는 네 가지 값을 취합니다: 0 (둘 다 레거시), 1 (Token-2022 기본), 2 (Token-2022 인용), 3 (둘 다 Token-2022). (token_program_flag >> bit) & 1로 하나의 민트를 읽습니다. 전체 바이트를 0과 비교하여 기본 민트를 분류하면 2가 잘못된 프로그램으로 해석됩니다. Bit1은 Token-2022 인용 민트가 지원될 때까지 상수 0이었습니다.
  • quote_protocol_fee / platform_fee / migrate_fee — 세 개의 독립적인 수수료 카운터. 각각 자체 청구 명령이 있습니다. instructions를 참조하세요.
  • vesting_schedule — 모든 PoolState에 존재하지만 total_locked_amount == 0일 때 비활성화됩니다. 전체 라이프사이클은 vesting을 참조하세요.

권한 PDA

LaunchLab은 런칭별 시드 없이 모든 런칭에서 단일 권한 PDA를 사용합니다:
이 단일 PDA는:
  • 모든 런칭의 base_vaultquote_vault의 권한입니다.
  • 각 런칭의 base_mintmint_authority (졸업 전).
  • CPMM 졸업 CPI 및 기존 상태에 대한 레거시 AMM v4 졸업의 서명자입니다.
  • ClaimVestedToken 기본 볼트 외부 전송의 서명자입니다.
  • Token-2022 기본 민트의 TransferFeeConfigtransfer_fee_config_authority (전체 졸업 전 단계) — 그리고 withdraw_withheld_authority도 있지만, 플랫폼이 PlatformConfig.transfer_fee_extension_auth를 설정하지 않은 경우에만 해당합니다.
mint_authorityMigrateToCpswap 또는 레거시 MigrateToAmm 호출 직후 취소되므로 공급은 영구적으로 고정됩니다. 두 개의 추가 PDA가 수수료 볼트를 제어합니다:
이들은 ClaimCreatorFeeClaimPlatformFeeFromVault 중에 해당 수수료 볼트에서 전송할 때 서명합니다.

기본 민트

Initialize로 인라인 생성되며:
  • mint_authority = authority (졸업 시 취소).
  • freeze_authority = None.
  • supply = supply, 전체가 base_vault로 민팅됨.
  • decimalsInitialize에서 크리에이터가 선택 (일반적으로 6).
전체 공급이 사전 민팅되므로 base_mint.supply는 런칭 기간 동안 상수입니다. 곡선 구매는 토큰을 base_vault에서 구매자로 이동하지만 mint_to를 호출하지 않습니다. Initialize / InitializeV2는 SPL Token 기본 민트를 생성합니다. 전용 InitializeWithToken2022 명령어는 기본 민트가 Token-2022 민트 (선택적 TransferFeeConfig 포함)가 되도록 합니다. 세 가지 초기화 경로 모두 CPMM 졸업이 필요합니다. InitializeWithToken2022TransferFeeConfig를 첨부할 때, 민트는 transfer_fee_config_authority = authoritywithdraw_withheld_authority = PlatformConfig.transfer_fee_extension_auth로 생성되며, 플랫폼이 해당 필드를 설정하지 않은 경우 authority로 폴백됩니다. 두 권한 모두 졸업 시 플랫폼 키로 재할당되며, 철회 측은 PDA가 여전히 보유하고 있는 경우에만 해당됩니다. platform-config를 참조하세요. 인용 민트는 기본 민트와 독립적이며 자체적으로 Token-2022 민트일 수 있습니다 — InitializeV2InitializeWithToken2022는 인용 프로그램 슬롯에서 두 프로그램을 모두 수락합니다. 더 이상 사용되지 않는 Initialize는 그렇지 않습니다. 인용 프로그램 계정은 여전히 SPL Token으로 입력되므로 인용 민트가 Token-2022인 설정은 다른 두 가지를 통해서만 시작할 수 있습니다. 인용 민트는 LaunchLab에서 생성되지 않습니다. GlobalConfig.quote_mint가 지정하는 것입니다. global-configreference/token-2022-support를 참조하세요.

볼트

base_vaultquote_vault 모두 LaunchLab authority PDA가 소유한 토큰 계정이며, 각각 자신의 민트를 소유한 프로그램에서 생성됩니다 — 따라서 런칭은 레거시 기본 볼트와 Token-2022 인용 볼트, 또는 다른 조합을 가질 수 있습니다. token_program_flag는 어느 것이 어느 것인지 기록합니다. 주소는 PoolState에 저장되며 다음과 같이 파생될 수도 있습니다:
(프로덕션에서 파생에 의존하기 전에 소스의 Initialize 계정 구조에서 정확한 시드 접두사를 확인하세요.)

수수료 볼트

두 개의 PDA가 런칭 전체에서 수수료를 집계합니다:
  • 크리에이터 수수료 볼트 — 시드 [creator, quote_mint]의 PDA. 동일한 인용 민트에서 동일한 크리에이터 수수료를 얻는 모든 런칭은 동일한 볼트로 흘러갑니다. 크리에이터는 ClaimCreatorFee를 통해 정산합니다.
  • 플랫폼 수수료 볼트 — 시드 [platform_config, quote_mint]의 PDA. 동일한 플랫폼을 통해 라우팅되고 동일한 인용 민트를 사용하는 모든 런칭은 동일한 볼트로 흘러갑니다. 플랫폼의 platform_fee_walletClaimPlatformFeeFromVault를 통해 정산합니다. 런칭별 정산 변형 (ClaimPlatformFee)도 있으며, 이는 집계된 볼트를 거치지 않고 런칭의 quote_vault에서 직접 끌어옵니다.
둘 다 수수료를 누적하는 첫 번째 스왑에서 인용 민트를 소유한 프로그램에서 지연 생성됩니다. 레거시 및 Token-2022 인용 민트 모두에 대해 런칭을 실행하는 크리에이터 또는 플랫폼은 두 개의 서로 다른 레거시 민트에 대해 이미 했던 것처럼 민트당 하나의 볼트를 끝냅니다. 집계된 볼트 패턴은 대량의 크리에이터 또는 플랫폼이 많은 런칭에 걸쳐 수수료 누적의 임차료 비용을 분할할 수 있게 해줍니다.

인용 볼트 ↔ real_quote

quote_vault.balancePoolState.real_quote는 동기화 상태를 유지해야 합니다. 세 개의 보류 중인 수수료 카운터 (quote_protocol_fee, platform_fee, migrate_fee)의 합계만큼 드리프트할 수 있으며, 이들은 볼트에 있지만 수수료 카운터에 속하며 곡선 준비금이 아닙니다. 곡선 수학은 항상 real_quote를 사용하며 원시 볼트 잔액은 사용하지 않습니다. 졸업 전 불변식:

PlatformCurveRule

(PlatformConfig, GlobalConfig) 쌍당 하나의 계정으로, 해당 설정에서 플랫폼이 허용하는 런칭 형태를 보유합니다. PDA 시드는 [b"platform_curve_rule", platform_config, global_config]입니다.
계정은 그룹 없이 생성되고 모든 그룹 변경 시 크기가 조정되므로 길이는 150 + Σ(14 + 18 × constraints)이고 디코더는 고정 크기를 가정하면 안 됩니다. 그룹은 OR됩니다: 한 그룹의 제약이 모두 유지되는 즉시 런칭이 허용됩니다. 0개 그룹은 제한이 없음을 의미합니다. 소유 PlatformConfig.restrict_curve_param1일 때만 읽습니다 — 0에서 프로그램은 계정을 무시하고 오래된 규칙이 거기에 있을 수 있습니다. 필드 ID, 연산자 및 플레이북은 products/launchlab/curve-rules에 있습니다.

라이프사이클 계정 전환

다음으로 이동

소스:
  • raydium-launch/programs/launchpad/src/states/pool.rsPoolState, PoolStatus, VestingSchedule, AmmCreatorFeeOn.
  • raydium-launch/programs/launchpad/src/lib.rs — PDA 시드 상수 (AUTH_SEED, CREATOR_FEE_VAULT_AUTH_SEED, PLATFORM_FEE_VAULT_AUTH_SEED).
  • Raydium SDK v2 launchpad 모듈.