Skip to main content
이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
PlatformConfigGlobalConfig 위에 놓인 플랫폼 레벨 오버레이입니다. GlobalConfig가 프로토콜 전체 규칙을 정의한다면 (“거래 수수료는 1%, 공급량은 최소 10M, 이 지갑만 졸업 가능”), PlatformConfig는 각 런칭 플랫폼(pump.fun, Raydium의 자체 UI, 써드파티 런치패드)이 자신의 수수료를 추가하고, 졸업 후 LP의 지분을 청구하고, 런칭이 선택할 수 있는 곡선 형태를 제한하고, 온체인에 브랜딩(이름, 웹사이트, 이미지)을 표시하는 데 사용합니다.

개요

PlatformConfig 계정은 플랫폼을 위한 다섯 가지 핵심 기능을 소유합니다:
  1. 브랜딩 — 이름, 웹사이트, 이미지 링크가 모두 인라인으로 저장되어 모든 익스플로러나 애그리게이터가 토큰을 런칭한 플랫폼을 표시할 수 있습니다.
  2. 플랫폼 수수료 — 프로토콜의 trade_fee_rate 위에 추가되는 거래 수수료(fee_rate)입니다. 플랫폼의 platform_fee_wallet에 누적됩니다. GlobalConfig.max_share_fee_rate에 의해 100 bps로 제한됩니다.
  3. LP 마이그레이션 분배 — 세 개의 저장된 정수(platform_scale, creator_scale, burn_scale)로 1_000_000을 합산합니다. 2026-08-17 업그레이드 이전에는 creator scale이 별도의 creator Fee Key를 생성했습니다. 업그레이드 후 실행된 마이그레이션은 처음 두 개를 플랫폼 소유의 잠금 LP 지분으로 결합하고, 나머지는 소각합니다.
  4. 곡선 매개변수 화이트리스트(supply, total_base_sell, total_quote_fund_raising, migrate_type, migrate_cpmm_fee_on, vesting_params...) 조합 중 이 플랫폼에서 허용되는 것을 나열하는 Vec<PlatformCurveParam>입니다. 벡터가 비어 있거나 모든 항목이 유효하지 않으면 모든 조합이 허용됩니다. 그렇지 않으면 런칭이 항목 중 하나와 정확히 일치해야 합니다.
  5. 글로벌 설정 허용 목록 — 선택된 GlobalConfig에 대해 플랫폼이 생성한 PlatformAllowConfig를 요구하는 선택적 제한입니다.
PDA 유도:
(정규 시드 목록은 소스의 create_platform_config를 참조하세요.)

레이아웃

platform_scale + creator_scale + burn_scale1_000_000과 같아야 합니다. 2026-08-17 업그레이드 이전에는 creator_scale이 별도로 잠금되었고 그 Fee Key는 토큰 생성자에게 갔습니다. 업그레이드 후 실행된 마이그레이션의 경우, 이는 platform_scale에 추가되고 잠금 LP 권리는 플랫폼으로 이동합니다. 업데이트된 로직의 예상 결과:
  • (0, 100_000, 900_000) — 90% LP 소각, 10% 플랫폼에 잠금.
  • (50_000, 100_000, 850_000) — 85% 소각, 15% 플랫폼에 잠금.
  • (0, 0, 1_000_000) — 완전 소각, NFT 민팅 없음. 엄격한 “내부자 없음” 런칭.

브랜딩 필드

name, web, img는 크기 상수까지 0으로 패딩된 인라인 바이트 배열입니다. 이들을 문자열로 읽으려면 첫 번째 \0까지 슬라이스하세요:
상수는 의도적으로 넉넉합니다(name: 64, web: 256, img: 256). 플랫폼이 익스플로러와 애그리게이터를 위해 충분한 메타데이터를 포함할 수 있으면서도 오프체인 스토리지를 건드리지 않습니다. 이 크기를 초과하는 것은 CreatePlatformConfig에서 InvalidInput으로 되돌립니다.

수수료 메커니즘

PlatformConfig에 바인딩된 곡선의 스왑은 세 개의 계층화된 수수료를 부과합니다:
  • trade_fee는 프로토콜의 protocol_fee_owner에 누적됩니다(CollectFee를 통해 청구).
  • platform_fee는 플랫폼별 금고에 누적됩니다(ClaimPlatformFee 또는 ClaimPlatformFeeFromVault를 통해 청구; instructions 참조).
  • creator_fee는 생성자의 공개키 + 인용 민트로 키된 생성자별 금고에 누적됩니다(ClaimCreatorFee를 통해 청구).
creator_fee_rateMAX_CREATOR_FEE_RATE = 5000(50 bps)으로 제한됩니다. fee_rate(플랫폼 수수료)는 GlobalConfig.max_share_fee_rate에 의해 10000(100 bps)으로 제한됩니다.

NFT 마이그레이션 분배 (CPMM 전용)

런칭이 CPMM으로 졸업할 때, 마이그레이션 명령어는 CPMM::InitializeWithPermission에 의해 민팅된 LP 토큰을 두 가지 방식으로 분배합니다:
lp_to_platform이 0이 아니면, LP-Lock 프로그램이 이를 platform_nft_wallet이 소유한 하나의 Fee Key NFT로 래핑합니다. 이는 별도의 플랫폼 및 생성자 Fee Key를 생성한 업그레이드 이전 동작을 대체합니다. 업그레이드 이전에 완료된 마이그레이션으로 생성된 Fee Key는 변경되지 않습니다. 이 LP 수수료 권리는 platform_cp_creator에 의해 제어되는 CPMM 생성자 수수료와 별개입니다. 소각 슬라이스는 직접 소각되므로 어떤 계정도 이를 인출하거나 해당 지분이 나타내는 LP 수수료를 청구할 수 없습니다. 저장된 migrate_type = 0을 가진 기존 런칭은 여전히 레거시 AMM v4 경로를 사용할 수 있습니다. 새로운 초기화는 해당 마이그레이션 유형을 거부합니다.

곡선 매개변수 화이트리스트

curve_params: Vec<PlatformCurveParam>은 플랫폼이 런칭이 선택할 수 있는 곡선 형태를 제한하는 메커니즘입니다. 벡터가 비어 있지 않고 최소한 하나의 항목이 유효하면, 프로그램은 Initialize에서 런칭의 매개변수가 최소한 하나의 항목과 정확히 일치하도록 강제합니다.
각 필드는 와일드카드를 의미하는 센티널 값을 가집니다(모든 값이 일치): u64 필드의 경우 u64::MAX, u8 필드의 경우 u8::MAX, supply / sell / fund-raising 필드의 경우 0. 모든 센티널을 가진 BondingCurveParam은 “모든 것 허용” — 빈 화이트리스트 동작과 동등합니다. Initialize에서의 매칭 알고리즘:
  1. curve_paramsglobal_config이 런칭의 선택된 GlobalConfig과 일치하는 항목으로 필터링합니다.
  2. 필터링된 목록이 비어 있으면, 모든 매개변수를 허용합니다(플랫폼이 이 GlobalConfig에 대해 화이트리스트를 작성하지 않았습니다).
  3. 필터링된 목록의 모든 항목이 all_is_invalid()를 가지면(모든 필드가 와일드카드), 모든 매개변수를 허용합니다.
  4. 그렇지 않으면 항목을 반복합니다. 각 항목에 대해 런칭의 매개변수를 모든 비와일드카드 필드와 비교합니다. 모든 비와일드카드 필드가 일치하면 수락하고 반환합니다.
  5. 일치하는 항목이 없으면 InvalidInput으로 되돌립니다.
이를 통해 플랫폼은 “우리는 표준 1B-supply / 800M-sold / 30k-USDC-raise / no-vesting 형태만 허용합니다”라고 말할 수 있습니다. 이 네 필드에 대해 구체적인 값을 작성하고 다른 곳에는 와일드카드를 작성하는 단일 항목으로 말입니다. 또는 더 엄격한 플랫폼은 지원되는 런칭 계층당 하나씩 세 개 또는 네 개의 이산 형태를 열거할 수 있습니다. MAX_CURVE_PARAMS = 10은 화이트리스트 크기를 제한합니다.

PlatformAllowConfig — 플랫폼 제한

각 플랫폼은 런칭이 사용할 수 있는 GlobalConfig 계정을 제한할지 여부를 결정합니다. UpdatePlatformConfig::RestrictGlobalConfig(0 | 1)restrict_global_config를 설정합니다.
PDA 시드: [b"platform_allow_config", platform_config, global_config]. 플랫폼 관리자는 CreatePlatformAllowConfigClosePlatformAllowConfig를 통해 허용된 각 쌍당 하나의 계정을 생성하거나 닫습니다. 제한이 1일 때, 초기화는 remaining_accounts에서 예상 PDA를 검색하고 누락된 계정을 NotEnoughRemainingAccounts로 거부합니다. 제한이 0일 때, 허용 계정이 필요하지 않습니다. 이전 프로토콜 관리자 관리 PlatformGlobalAccess 계정 및 그 생성/닫기 명령어는 폐기됩니다. 기존 PlatformConfigGlobalConfig 크기는 변경되지 않지만, 디코더는 이전 글로벌 플래그를 새 플랫폼 플래그로 교체해야 합니다. 이전 액세스 PDA는 새 검사에 의해 소비되지 않습니다.

읽기 경로

“이 토큰은 어디서 런칭되었나”를 보여주는 UI의 경우, PoolState.platform_config는 원래 PlatformConfig를 직접 가리킵니다 — 한 번 가져와서 브랜딩을 캐시하세요.

업데이트 경로

지갑 로테이션(platform_fee_wallet, platform_nft_wallet, platform_vesting_wallet, platform_cp_creator, transfer_fee_extension_auth, cpswap_config)은 모두 UpdatePlatformConfig를 통해 진행됩니다. 정확한 param 코드는 소스의 update_platform_config 디스패치 테이블을 읽으세요.

일반적인 함정

  • 화이트리스트 센티널 잘못 설정. total_locked_amount = 0을 가진 BondingCurveParam은 와일드카드가 아닙니다 — 명시적으로 베스팅을 거부하는 런칭과 일치합니다. 해당 필드의 와일드카드는 u64::MAX입니다. 같은 함정이 cliff_periodunlock_period에 존재합니다. clear()를 사용하세요(프로그램이 노출함). 센티널을 올바르게 설정합니다.
  • NFT 분배 반올림. 세 개의 스케일은 정확히 1_000_000을 합산해야 합니다. CreatePlatformConfig에서 1 오차는 되돌립니다. 런타임에서 1 오차는 하나의 추가 LP 단위를 민팅하거나 소각할 것이고, 이것이 엄격한 동등성 검사가 있는 이유입니다.
  • 플랫폼 베스팅 이중 할당. platform_vesting_scale > 0이면, 플랫폼은 런칭의 펀드레이징이 끝난 후 한 번 CreatePlatformVestingAccount를 호출해야 합니다. 잊으면, 해당 지분은 할당되지 않고 영구적으로 휴면 상태로 남습니다(런칭의 total_locked_amount 예산은 소비되지만 플랫폼은 절대 청구하지 않습니다).
  • platform_cp_creator 모호성. Pubkey::default()로 설정되면, 런칭 생성자가 졸업 후 CPMM 풀의 pool_creator로 기록됩니다. 실제 키로 설정되면, 그 키가 대신 기록됩니다. 이는 졸업 후 CPMM 생성자 수수료의 수혜자와 원래 CPMM::CollectCreatorFee 경로에 서명할 수 있는 사람을 결정합니다. 권한 없는 수집 경로는 여전히 이 기록된 키의 정규 ATA에 지불합니다. 플랫폼 설정 생성 시 어떤 모델을 원하는지 결정하세요.
  • 허용 계정 없이 제한. 필요한 PlatformAllowConfig를 생성하기 전에 restrict_global_config를 활성화하면 해당 설정을 선택하는 새로운 런칭을 차단합니다.

참고 자료

소스:
  • raydium-launch/programs/launchpad/src/states/platform_config.rsPlatformConfig, PlatformParams, MigrateNftInfo, PlatformCurveParam, BondingCurveParam, is_valid_curve_param.
  • raydium-launch/programs/launchpad/src/states/platform_allow_config.rsPlatformAllowConfig.
  • raydium-launch/programs/launchpad/src/lib.rs — 플랫폼 설정 및 허용 설정 엔드포인트.