이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
LaunchLab은 간결한 명령어 집합을 제공합니다: 사용자 대면 호출 6개와 소수의 관리자 기본 명령어입니다. SDK가 모든 명령어를 래핑하며, 이 페이지는 애그리게이터, 모니터링 도구, CPI가 필요한 프로그램을 위해 원본 인터페이스를 문서화합니다.2026-09 프로그램 업그레이드는 LaunchLab을 Anchor 1.0.2 / Solana 3.1.10으로 재구축했으며 세 가지 전환 메커니즘을 제거했습니다: 더 이상 사용되지 않는
Initialize는 이제 항상 실패하고, MigrateToAmm은 세 개의 인자와 모든 OpenBook 계정을 잃었으며, 여러 검사를 클록에 조건부로 만드는 get_upgrade_timestamp 게이트가 제거되었습니다. 또한 관리자 명령어 CollectExcessLamports 하나를 추가합니다. 2026-09-09 변경 로그 항목을 참조하세요.명령어 목록
“ExactIn/ExactOut” 분할은 CPMM의
SwapBaseInput / SwapBaseOutput을 반영합니다 — 온체인에서는 약간 다른 반올림을 가진 별도의 명령어 디스크리미네이터입니다.
졸업 경로 선택. 모든 새로운 InitializeV2 및 InitializeWithToken2022 호출은 migrate_type = 1 (CPSWAP)을 설정해야 합니다. 새로운 AMM v4 바운드 풀을 초기화하려는 모든 시도는 MigrateTypeNotMatch를 반환합니다. amm_creator_fee_on은 결과 CPMM 생성자 수수료가 견적 토큰에 적용되는지 또는 두 토큰 모두에 적용되는지만 선택합니다. 대상 프로그램을 선택하지 않습니다. 레거시 Initialize는 더 이상 런칭을 생성할 수 없습니다 (아래 참조).
MigrateToAmm은 이 제한이 강제되기 전에 migrate_type = 0으로 초기화된 기존 PoolState에 대해 호출 가능하게 유지됩니다. 릴리스는 기존 풀 상태를 다시 쓰거나 레거시 명령어를 제거하지 않습니다.
견적 측 토큰 프로그램. 견적 민트는 SPL Token 프로그램 또는 Token-2022 중 하나로 소유될 수 있습니다. 이를 건드리는 모든 명령어 — CreateConfig, InitializeV2, InitializeWithToken2022, 네 가지 거래 명령어, CollectFee, CollectMigrateFee, ClaimCreatorFee, ClaimPlatformFee, ClaimPlatformFeeFromVault — 는 견적 프로그램 계정 슬롯에서 소유 프로그램을 받습니다. 계정 위치는 변경되지 않았습니다. 수락된 값만 변경되었습니다. 실제로 GlobalConfig.quote_mint를 소유하는 프로그램을 전달하세요. 기존 런칭의 경우 PoolState.token_program_flag bit1에서 읽을 수 있습니다 (accounts 참조) 또는 민트 계정의 소유자에서 읽을 수 있습니다.
더 이상 사용되지 않는 Initialize는 여기서 무관합니다: 견적 프로그램 계정은 여전히 SPL Token으로 입력되며, 2026-09 업그레이드 이후 명령어는 계정을 읽기 전에 실패합니다. InitializeV2 또는 InitializeWithToken2022를 통해 런칭하세요.
MigrateToCpswap은 반대 방향의 다른 예외입니다 — 민트당 하나가 아니라 두 프로그램 모두를 무조건 받습니다. 아래 마이그레이션 계정을 참조하세요.
Initialize
새로운 런칭을 생성합니다. InitializeV2는 더 이상 사용되지 않는 Initialize에 비해 amm_fee_on 인수만 추가합니다. 계정 개수와 순서는 동일하며, 유일한 계정 수준의 차이는 quote_token_program이 Interface<TokenInterface>로 입력되어 Token-2022 quote 민트가 허용된다는 것입니다.
인수
하나의 구조체가 아닌 네 개의 위치 인수입니다. (InitializeWithToken2022는 다섯 번째 transfer_fee_extension_param: Option<TransferFeeExtensionParams>를 추가합니다. 더 이상 사용되지 않는 Initialize는 amm_fee_on을 제거합니다.)
global_config.curve_type과 일치해야 하거나 명령어가 InputNotMatchCurveConfig (6003)으로 되돌려집니다. open_time이 없고, quote_mint 인수가 없으며 (global_config에서 옵니다), fees 구조체가 없고 post_graduation_lp_policy가 없습니다 — LP 처리는 런칭별이 아닌 PlatformConfig에서 설정됩니다.
계정 — 총 18개 (선언된 16개 + #[event_cpi] 추가 2개)
전제 조건
quote_mint ∈ launch_config.allowed_quote_mints.base_supply_graduation ≤ base_supply_max.- 수수료 매개변수가
launch_config.max_*_fee_rate검사를 통과합니다. open_time ≥ now − slop(SDK는≥ now를 강제합니다. 프로그램은 약간의 역날짜를 허용합니다).curve_type이 인식됩니다.
base_mint는supply = curve_param.supply를 가지며, 모두base_vault에 있습니다.- 민트 권한은 이 동일한 명령어에서 취소됩니다 (
set_authority(MintTokens, None)) 공급이 민트된 직후 — 졸업 시점이 아닙니다. 따라서 base 민트는 영구적으로 고정 공급이며, 이후 명령어는 더 이상 민트할 수 없습니다. PoolState는status = Fund(0),real_a = 0,real_b = 0으로 초기화됩니다.total_fund_raising_b는curve_param.total_quote_fund_raising에서 직접 옵니다.TransferFeeConfig가 첨부된InitializeWithToken2022의 경우:transfer_fee_config_authority = launch_authority, 그리고withdraw_withheld_authority = PlatformConfig.transfer_fee_extension_auth(해당 필드가 설정된 경우), 그렇지 않으면launch_authority. 인출 측은 플랫폼이 졸업 전에 보류된 수수료를 수집할 수 있도록 민트 생성 시점에 기록됩니다.platform-config를 참조하세요.
NotApproved (6000, 더 이상 사용되지 않는 Initialize의 경우 무조건적), InvalidInput (6002, GlobalConfig의 공급/비율/자금 조성 하한 위반), InputNotMatchCurveConfig (6003, curve_param 변형이 global_config.curve_type과 일치하지 않음), MigrateTypeNotMatch (6007, migrate_type != 1), MathOverflow (6008), VestingRatioTooHigh (6010), NoSupportExtension (6017), NotEnoughRemainingAccounts (6018), InvalidPlatformAllowConfig (6022), CurveParamNotMatchPlatformRule (6025). 실패한 Anchor address = / constraint = 검사는 이러한 코드 중 하나가 아닌 2xxx 코드로 표시됩니다 — InvalidQuoteMint, FeeRateTooHigh 또는 InvalidCurveParams 중 어느 것도 프로그램의 오류 열거형에 존재하지 않습니다.
Buy (정규 변형: BuyExactIn)
사용자가 고정 입력 금액을 제공하고, 곡선이 출력을 계산합니다.
인수
남은 계정 — 수수료 배관, 정확한 순서로 읽음:
share_fee_receiver— 오직share_fee_rate > 0일 때만.system_program— 항상.== System::id()확인, 그렇지 않으면InvalidInput.platform_fee_vault— PDA[platform_config, quote_token_mint]. 첫 사용 시 생성됩니다.creator_fee_vault— PDA[creator, quote_token_mint]. 첫 사용 시 생성됩니다.
NotEnoughRemainingAccounts (6018)를 반환합니다. associated_token_program 슬롯이 없으며, system_program은 선언된 계정이 아닌 남은 계정입니다.
전제 조건
launch_state.status == Active.now ≥ open_time.user_quote_ata.balance ≥ quote_in.quote_in > 0.
quote_in을quote_in_after_fee와 수수료 부분으로 분할합니다.- 사후 수수료 quote에 대해
base_out에 대한 곡선을 Newton 풀이합니다. require(base_out ≥ minimum_base_out)그렇지 않으면ExceededSlippage로 되돌립니다.quote_in사용자 → 금고로 이동합니다.base_out금고 → 사용자로 이동합니다.base_sold += base_out,quote_reserve_real += quote_in_after_fee × (lp_share / total_share)를 업데이트합니다.- 수수료 카운터를 업데이트합니다 (
protocol_fees_quote,creator_fees_quote). state_data.num_buys += 1.- 업데이트 후
quote_reserve_real ≥ quote_reserve_target이면, SDK는 일반적으로 동일한 트랜잭션에서Graduateix를 연결합니다. 프로그램은Buy내에서 자동 졸업하지 않습니다 — 후속Graduate가 필요합니다.
BuyExactOut
사용자가 정확한 base_out을 지정하고, 프로그램이 quote_in을 계산합니다.
인수
BuyExactIn과 동일한 계정 및 동일한 남은 계정 계약입니다. Newton 반복 대신 폐쇄형 이차 적분 (또는 curve_type 1의 경우 CPMM 역함수)을 사용합니다.
Sell / SellExactIn / SellExactOut
Buy의 대칭 명령어입니다. 사용자가 base_in을 곡선에 반환하고 quote_out을 받습니다. 수수료는 quote_out에서 차감되므로 사용자는 원시 적분 수익보다 적게 받습니다.
사전 조건 —
user_base_ata.balance ≥ base_in.- 판매로 인해
base_sold가 0 아래로 내려갈 수 없습니다 (회계가 일관성 있으면 위의 조건과 중복). - Launch는
Active상태입니다.
Buy와 대칭입니다. base_sold는 감소하고, quote_reserve_real은 감소합니다. 수수료는 계속 누적됩니다.
Quote 측 전송 수수료
Quote 민트가TransferFeeConfig를 가지고 있으면, 볼트가 이동하는 금액과 지불자가 차감되거나 입금되는 금액이 다르며, 슬리피지 한계는 지불자 측에 대해 확인됩니다. 확장 기능이 없는 quote 민트에서는 아래의 모든 경우가 일반 레거시 민트와 동일합니다.
견적 작성에 대한 두 가지 결과:
- 민트가 수수료 없는 것처럼 계산된 한계는 거부됩니다. 수수료 없는 비용을
maximum_amount_in으로 전달하거나, 수수료 없는 수익을minimum_amount_out으로 전달하면ExceededSlippage로 되돌립니다. real_quote는 볼트에 도달한 금액만큼만 증가합니다. 5% quote 민트에서amount_in의BuyExactIn은real_quote를amount_in × 0.95만큼 이동합니다.
10000 베이시스 포인트)는 반전될 수 없으며 정확한 출력 경로에서 CalculateOverflow로 되돌립니다.
두 거래 측 민트도 일치하는 슬롯에 전달된 프로그램으로 제한되므로, 일치하지 않는 base_token_program은 이제 무시되지 않고 실패합니다. 기본 수수료 수학은 algorithms/token-2022-transfer-fees를 참조하세요.
거래 남은 계정
네 가지 거래 명령어 모두remaining_accounts를 통해 수수료 배관을 다음 순서로 처리합니다:
2026-09에서 변경됨: 마지막 세 개는 이제 무조건이며,
system_program이 검증됩니다. 이 릴리스 이전에는 프로그램이 unix_timestamp >= get_upgrade_timestamp()일 때만 읽었고, 그 시점 이전에는 플랫폼/크리에이터 수수료 분할을 완전히 건너뛰었습니다. 타임스탬프는 오래 지났으므로 메인넷의 동작은 실제로 변경되지 않았습니다 — 하지만 분기는 코드에서 제거되었고, 여전히 세 계정을 생략하는 빌더는 이제 항상 NotEnoughRemainingAccounts (6018)로 실패하며, 이전에는 컷오버 이후에만 실패했습니다. system_program 슬롯은 추가로 System::id()에 대해 검증되며, 다른 계정을 보유하면 InvalidInput (6002)을 반환합니다. 이전에는 해당 위치에서 모든 계정이 허용되었습니다.MigrateToAmm / MigrateToCpswap
곡선이 total_quote_fund_raising에 도달한 후 런칭을 거래 가능한 풀로 졸업시킵니다. 새로운 런칭은 CPMM 전용입니다. MigrateToAmm은 저장된 migrate_type이 0인 기존 풀을 위해 유지됩니다.
서명자
MigrateToAmm— 바인딩된GlobalConfig에 기록된migrate_to_amm_wallet.MigrateToCpswap— 바인딩된GlobalConfig에 기록된migrate_to_cpswap_wallet.
pool_state.status == Migrate확인 (즉,quote_reserve_target에 도달했음). 그렇지 않으면PoolMigrated(상태가 이미Migrated임) 또는PoolFunding(여전히 펀딩 중)으로 되돌립니다.pool_state.migrate_type이 명령과 일치하는지 확인 (AMM의 경우0, CPMM의 경우1). 그렇지 않으면MigrateTypeNotMatch로 되돌립니다.- 졸업 후 리저브 계산:
base_amount_out = base_vault.amount − vesting_schedule.total_locked_amountquote_amount_out = quote_vault.amount − quote_protocol_fee − migrate_fee − platform_fee
- 대상 프로그램 (
AMM v4 Initialize2또는CPMM InitializeWithPermission)으로 CPI하여 해당 리저브로 졸업 후 풀을 생성합니다. - 2026-08-17 업그레이드 이후 실행된 CPMM 마이그레이션의 경우,
platform_scale + creator_scale을 하나의 플랫폼 소유 잠금 LP 공유로 결합하고 최대 하나의 Fee Key NFT를platform_nft_wallet에 민트합니다.burn_scale나머지를 소각합니다. 업그레이드 전에는creator_scale이 별도로 잠금되었고 해당 Fee Key는 토큰 생성자에게 갔습니다. 완료된 과거 마이그레이션은 수정되지 않습니다. 레거시 AMM v4 졸업의 경우, LP 배치는 해당 명령의 기존 흐름을 따릅니다. - (민트 권한 단계 없음.
base_mint.mint_authority는 런칭 생성 시 이미None으로 설정되었습니다 — 아래 참고 참조.) pool_state.status = Migrated로 전환하고,vesting_schedule.start_time = block_time + cliff_period를 설정합니다.
TransferFeeConfig를 포함하는 Token-2022 민트이고 PlatformConfig.transfer_fee_extension_auth가 기본값이 아닌 경우, 마이그레이션은 또한 해당 확장의 권한을 플랫폼 키로 재할당합니다:
transfer_fee_config_authority는 항상 재할당됩니다. 런칭authorityPDA는 졸업 전 단계 전체에서 이를 보유하므로 항상 이동할 것이 있습니다.WithheldWithdraw는authorityPDA가 여전히 이를 보유할 때만 재할당됩니다. 2026-08-27 이후에 생성된 런칭은 이미 민트 생성 시 해당 권한에transfer_fee_extension_auth를 포함하므로 단계를 건너뜁니다. 가드는 마이그레이션이 해당 민트에서 되돌리지 않도록 하는 것입니다 — PDA는 더 이상 보유하지 않는 권한을 포기할 수 없습니다.
transfer_fee_extension_auth가 Pubkey::default()인 경우, 어느 권한도 이동하지 않으며 둘 다 authority PDA에 영구적으로 남아 있습니다. platform-config를 참조하세요.
기본 민트의 공급량은 졸업이 아닌 생성 시점부터 고정됩니다.
InitializeV2와 InitializeWithToken2022는 전체 공급량을 기본 금고에 민트한 다음 같은 명령에서 즉시 MintTokens를 취소하므로, base_mint.mint_authority는 런칭의 전체 수명 동안 None입니다. 마이그레이션은 이를 건드리지 않습니다. (이 페이지의 이전 버전은 취소를 졸업 시점에 배치했습니다. 그것은 잘못되었습니다.) 마이그레이션이 이동할 수 있는 유일한 권한은 아래에 설명된 Token-2022 전송 수수료 권한입니다.BuyExactIn, BuyExactOut, SellExactIn, SellExactOut은 이 시점부터 PoolMigrated로 거부합니다. 결과 AMM 풀은 정규이며 다른 AMM v4 / CPMM 풀처럼 거래합니다.
일반적인 오류 — PoolFunding, PoolMigrated, MigrateTypeNotMatch, InvalidCpSwapConfig, MathOverflow.
CPMM 마이그레이션 남은 계정
MigrateToCpswap을 구축하는 클라이언트는 다음 고정 remaining_accounts 인덱스를 사용해야 합니다:
명령은 최소 10개의 남은 계정이 필요합니다. 지원 민트 계정은 읽기 전용 CPI 입력입니다. 민트가 초기화된 지원 레코드가 없을 때도 두 주소를 모두 파생시킵니다. 여전히 생성자 잠금 계정을 추가하거나 인덱스 8–9를 생략하는 이전 빌더는 업데이트해야 합니다.
2026-09에서 변경됨. 두 가지 정리로, 올바른 빌더는 변경되지 않습니다:
- 권한이 있는 CPMM 경로가 이제 유일한 경로입니다.
MigrateToCpswap은unix_timestamp >= get_upgrade_timestamp()를 기반으로InitializeCpSwap과InitializeCpSwapWithPermission사이에서 선택하곤 했습니다. 타임스탬프 헬퍼와 레거시 CPI는 모두 사라졌으므로, 권한이 있는 경로 — 따라서 10개 계정 최소값 — 이 무조건 적용됩니다. - 세 개의 주소 제약이 계정 구조에서 명령 본문으로 이동했습니다.
platform_config,base_vault, 및quote_vault는 여전히PoolState에 저장된 값과 일치해야 하지만, 불일치는 이제 Anchor의address =제약이 아닌require_keys_eq!로 발생합니다. 검사는 동등하지만, 오류 표면만 다릅니다 — 계정 이름 없이 Anchor의 일반RequireKeysEqViolated(2502) 대신ConstraintAddress(2012)를 받습니다. 이 세 계정에 대해2012와 일치하는 오류 처리를 업데이트하세요.
CPMM 마이그레이션 토큰 프로그램
MigrateToCpswap은 두 토큰 프로그램을 무조건 받고 각 민트를 소유하는 프로그램을 스스로 파악합니다. 두 토큰 프로그램 계정의 이름이 변경되었습니다:
이들은 이전의
base_token_program (기본 민트를 소유한 프로그램이 무엇이든) 및 quote_token_program (항상 레거시)을 대체합니다. 위치는 변경되지 않으므로 이는 레이아웃 변경이 아닌 값 변경입니다 — 하지만 두 값은 거의 반전되며, 이전 쌍을 계속 전달하는 빌더는 어느 민트가 Token-2022 민트가 되는 즉시 레거시 프로그램이 필요한 곳에 Token-2022를 제공합니다.
CPMM LP 민트와 잠금 유동성 Fee Key NFT가 항상 레거시 프로그램에 있으므로 레거시 프로그램이 필요합니다.
플랫폼 GlobalConfig 허용 목록
PlatformConfig.restrict_global_config는 검사를 제어합니다:
0: 플랫폼은 다른 방식으로 유효한 모든GlobalConfig를 수락합니다; 허용 계정이 필요하지 않습니다.1:Initialize,InitializeV2, 및InitializeWithToken2022는remaining_accounts의 어디든 일치하는PlatformAllowConfig를 포함해야 합니다.
CreatePlatformAllowConfig 및 ClosePlatformAllowConfig로 PDA를 생성하거나 닫습니다. 시드는 [b"platform_allow_config", platform_config, global_config]입니다. 이전의 관리자 관리 PlatformGlobalAccess 명령 및 PDA는 폐기됩니다.
플랫폼 런칭 매개변수 규칙
4개의 명령이 하나의PlatformCurveRule 계정을 관리합니다. 4개 모두 PlatformConfig.curve_rule_manager 또는 플랫폼 관리자에 의해 서명됩니다 — 프로그램은 서명자에서 PlatformConfig PDA를 재파생하여 관리자를 수락하므로 별도의 계정이 이를 증명하지 않습니다. 둘 다 아닌 서명자는 InvalidCurveRuleAuthority를 반환합니다.
platform_curve_rule은 [b"platform_curve_rule", platform_config, global_config]의 PDA입니다.
Create그룹이 없는 계정을 할당합니다. 해당 상태는 아무것도 제한하지 않습니다.Update해당group_id로 그룹을 업서트하여, 존재하면 전체적으로 교체합니다. 계정 크기를 조정하므로 서명자는 증가한 렌트를 충당하고 감소한 렌트를 돌려받습니다. 10번째를 넘는 새 그룹은CurveRuleGroupsExceeded를 반환합니다; 25개 이상의 제약, 알 수 없는 필드 또는 연산자, 또는 한 그룹에서 동일한(field, op)쌍이 두 번 나타나면InvalidCurveRuleConstraint를 반환합니다; 비상수 곱 구성에서 4개의TotalSellA파생 필드는CurveRuleFieldNotSupportedByCurve를 반환합니다.RemoveID로 하나의 그룹을 삭제하여 계정을 축소하고 차이를 환불합니다. 알 수 없는 ID는CurveRuleGroupNotExist를 반환합니다.Close전체 렌트를 서명자에게 반환합니다. 그러면restrict_curve_param이1로 유지되더라도 구성이 제한되지 않습니다.
UpdatePlatformConfig::RestrictCurveParam(0 | 1)이며, 플랫폼 관리자만 호출할 수 있습니다.
런칭 경로에서. restrict_curve_param이 1인 동안, InitializeV2 및 InitializeWithToken2022는 remaining_accounts에 규칙 PDA를 요구합니다 — 존재하지 않을 때도 포함하여, 이를 생략하면 검사를 건너뛸 수 없습니다. 누락된 계정은 NotEnoughRemainingAccounts입니다; 어떤 그룹도 만족하지 않는 런칭은 CurveParamNotMatchPlatformRule입니다. 검사는 GlobalConfig의 자체 제한 전에 실행되며 이를 좁힐 수만 있습니다. 모델 및 플레이북: products/launchlab/curve-rules. 두 오류 모두 클라이언트 측에서 피할 수 있습니다 — SDK는 이 검사를 순수 함수로 미러링합니다. 전송 전에 확인을 참조하세요.
CollectFee
프로토콜이 단일 런칭에서 누적한 거래 수수료를 관리자가 회수합니다.
인자 — 없음.
계정
효과 —
quote_vault에서 recipient_token_account로 pool_state.quote_protocol_fee를 전송한 후 카운터를 0으로 설정합니다. 첫 번째 구매 이후 언제든지 호출할 수 있습니다.
CollectMigrateFee
졸업 시 누적된 마이그레이션 수수료를 관리자가 회수합니다. CollectFee와 동일한 계정 구조이지만 서명자로 protocol_fee_owner 대신 migrate_fee_owner를 사용하고 소진되는 카운터로 pool_state.migrate_fee를 사용합니다.
ClaimCreatorFee
크리에이터가 소유한 모든 런칭에서 누적된 크리에이터 수수료를 크리에이터별로 회수합니다(동일한 쿼트 민트를 사용하는). 풀별 수수료 볼트가 아닌 크리에이터별 수수료 볼트를 소진합니다.
인자 — 없음.
계정
효과 —
creator_fee_vault의 전체 잔액을 recipient_token_account로 전송합니다. 볼트가 비어 있으면 0보다 큼 확인으로 되돌립니다.
ClaimPlatformFee
런칭의 쿼트 볼트를 직접 소진하는 플랫폼별 회수입니다. 플랫폼이 집계된 플랫폼 볼트를 거치지 않고 특정 런칭에 대한 자신의 몫을 청구하려는 경우 이를 사용합니다.
인자 — 없음.
계정
효과 —
quote_vault에서 recipient_token_account로 pool_state.platform_fee를 전송하고 카운터를 0으로 설정합니다.
ClaimPlatformFeeFromVault
플랫폼별 집계 회수입니다. 플랫폼을 통해 라우팅된 모든 런칭에서 수수료를 누적하는 플랫폼의 쿼트 민트별 수수료 볼트를 소진합니다.
인자 — 없음.
계정
효과 —
platform_fee_vault의 전체 잔액을 recipient_token_account로 전송합니다. 볼트가 비어 있으면 되돌립니다.
CollectExcessLamports
LaunchLab이 제어하는 계정의 렌트 면제 최소값 이상에 있는 램포트를 관리자가 회수합니다. 2026-09 업그레이드에서 추가되어 프로토콜이 SIMD-0437 렌트 감소가 각 단계 전에 생성된 계정에 남기는 초과 자금을 회수할 수 있습니다.
초과분만 이동합니다. 토큰 잔액, 계정 데이터, 소유자, 곡선 상태 및 베스팅은 변경되지 않으며, 이미 최소값에 있는 계정에 대해서는 명령이 작동하지 않습니다 — 따라서 각 롤아웃 단계 후에 다시 실행하는 것이 안전합니다.
인자 — 없음.
계정
authority 선택
계정은 확인 없이 전달되고 프로그램에 의해 해결되며, 프로그램은 LaunchLab의 세 가지 권한 PDA를 모두 다시 파생하고 일치시킵니다:
세 가지 중 어느 것과도 일치하지 않는 키는
InvalidOwner(6001)로 전체 명령을 실패하게 합니다.
각 소스 계정이 처리되는 방식
기본 민트는 회수할 수 없습니다.
InitializeV2와 InitializeWithToken2022는 공급을 민트하는 동일한 명령에서 기본 민트의 MintTokens를 취소하므로, 어떤 키도 이에 대해 WithdrawExcessLamports에 서명할 수 없습니다 — 민트의 렌트는 영구적으로 그대로 유지됩니다.
일반적인 오류 — InvalidOwner(6001, 잘못된 서명자 또는 세 가지 PDA 중 하나가 아닌 authority), LamportsCalculateError(6031, wSOL 왕복이 0으로 정산되지 않음), 계정이 자신의 렌트 최소값보다 적게 보유할 때 프로그램 소유 경로의 InsufficientFunds.
SDK 빌더 없음. @raydium-io/raydium-sdk-v2는 이 명령에 대한 빌더를 제공하지 않으며, raydium-sdk-V2-demo 저장소도 마찬가지입니다 — 이는 관리자 경로입니다. 수동으로 인코딩하세요, solana-fundamentals/rent-and-reclaimable-rent의 지갑 측 회수가 토큰 프로그램 명령에 대해 수행하는 방식처럼.
베스팅 및 플랫폼 설정 명령
이들은 각각 자신의 상태 모델을 가지므로 전용 페이지에 문서화되어 있습니다:CreateVestingAccount,CreatePlatformVestingAccount,ClaimVestedTokenCreatePlatformConfig,UpdatePlatformConfig,CreatePlatformAllowConfig,ClosePlatformAllowConfigCreatePlatformCurveRule,UpdatePlatformCurveRule,RemovePlatformCurveRule,ClosePlatformCurveRuleCreateConfig,UpdateConfig
상태 변경 매트릭스
다음 단계
products/launchlab/code-demos— 각 명령에 대한 TypeScript 예제입니다.products/launchlab/accounts— 전체 상태 형태입니다.reference/error-codes— LaunchLab 오류 열거형입니다.
- Raydium SDK v2
LaunchLab모듈 - Raydium LaunchLab 프로그램 소스

