Skip to main content
이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
이 항목은 예정된 LaunchLab 프로그램 업데이트를 다룹니다. 배포 전에 로컬 릴리스 브랜치에 대해 검증되었습니다. 새로운 계정이나 명령어를 사용하기 전에 배포된 프로그램을 확인하세요.
플랫폼은 이미 PlatformConfig.curve_params를 통해 크리에이터가 선택할 수 있는 런칭 형태를 제한할 수 있었습니다. 그 메커니즘은 정확한 일치만 테스트했습니다: 항목이 필드를 한 값으로 고정하거나 센티널로 와일드카드 처리했습니다. 또한 플랫폼이 지원하는 모든 GlobalConfig에서 최대 10개 항목만 보유했으며, PlatformConfig 계정 자체에 있어서 항목당 491바이트씩 증가시켰습니다. 이 세 가지 특성은 프로토콜이 설정을 추가하면서 충돌했습니다. “50~200 SOL 사이의 자금 조성 목표”를 표현하려면 허용된 값마다 하나의 항목이 필요했으므로 불가능했습니다. 한편 GlobalConfig 자체의 하한선은 넓혀졌습니다 — 1 bps 요율, 99999 공급 한계 — 모든 플랫폼이 그 아래에 맞도록 하기 위해, 이는 플랫폼이 그것들을 좁힐 방법이 없다는 뜻이었습니다. 이 릴리스는 화이트리스트를 곡선 규칙으로 대체합니다: (플랫폼, 설정) 쌍당 하나의 PlatformCurveRule 계정으로, 최대 10개의 체크 그룹을 보유하며, 각 그룹은 19개의 런칭 매개변수에 대해 최대 25개의 (필드, 연산자, 값) 제약을 보유합니다. Eq, Gte, Lte, Neq 연산자를 지원합니다. 그룹 내 제약은 AND 처리되고, 그룹은 OR 처리됩니다. 범위는 같은 필드에 대한 GteLte입니다. 전체 모델과 9개의 실제 사용 사례는 새 페이지에 있습니다: products/launchlab/curve-rules.

통합자를 위한 요약

  • PlatformConfig는 크기와 모든 기존 필드 오프셋을 유지합니다. 고정 944바이트입니다. curve_params는 제거되었으며, restrict_curve_param (u8), curve_rule_manager (Pubkey), 그리고 벡터의 길이 접두사가 차지했던 4바이트가 모두 패딩에서 제거되어 107에서 78로 줄어듭니다.
  • 디코더는 후행 벡터를 제거해야 합니다. 패딩 후 Vec<PlatformCurveParam>을 여전히 예상하는 디코더는 두 개의 새 필드를 벡터 바이트로 읽을 것입니다. 패딩 전의 모든 것은 영향을 받지 않으므로, 수수료 지갑과 요율만 읽는 디코더는 변경 없이 계속 작동합니다.
  • 런칭 빌더는 플래그가 켜져 있을 때 하나의 추가 계정이 필요합니다. restrict_curve_param1인 동안, InitializeV2InitializeWithToken2022remaining_accounts에 규칙 PDA가 필요합니다 — 계정이 존재하지 않을 때도 포함하여, 이를 생략하면 체크를 건너뛸 수 없도록 합니다. 파생: [b"platform_curve_rule", platform_config, global_config].
  • 기본적으로 플랫폼은 제한되지 않습니다. restrict_curve_param은 모든 기존 계정에서 0이며, 0은 프로그램이 규칙을 전혀 읽지 않는다는 의미입니다.
  • 두 개의 명령어가 제거됩니다: UpdatePlatformCurveParamRemovePlatformCurveParam. 4개가 추가됩니다: CreatePlatformCurveRule, UpdatePlatformCurveRule, RemovePlatformCurveRule, ClosePlatformCurveRule.
  • UpdatePlatformConfig는 두 개의 변형을 얻습니다: 디스패치 인덱스 13의 RestrictCurveParam(u64)와 14의 CurveRuleManager(Pubkey). 기존 인덱스 0–12는 변경되지 않습니다.
  • 7개의 오류 코드가 추가됩니다, 60246030. 6020 CurveParamIsNotExist는 마지막 호출자가 없어도 플레이스홀더로 유지되므로 그 뒤의 것은 이동하지 않습니다. reference/error-codes를 참조하세요.
  • IDL 새로고침이 필요합니다. 새 계정 유형, 4개의 새 명령어, 2개 제거, 2개의 새 디스패치 변형, 7개의 새 오류 코드.
  • 규칙을 오프체인에서 확인한 후 전송하세요. SDK는 checkLaunchAgainstCurveRule (런칭 시간 체크를 미러링하며, 실패 폐쇄 동작 포함)과 checkCurveRuleGroupWritable (쓰기 시간 검증을 미러링)을 노출합니다. 둘 다 순수 함수입니다. 전송 전 확인을 참조하세요.
  • 메인넷에서 활성화하기 전에 데브넷에서 리허설하세요. restrict_curve_param을 켜면 크리에이터가 할 수 있는 것이 즉시 변경됩니다. 권장 시퀀스 — 규칙 계정을 정말로 통과하는 빌더를 증명하기 위해 거부되어야 하는 토큰 하나를 런칭하는 것 포함 — 은 먼저 데브넷에서 테스트에 있습니다.

화이트리스트가 표현할 수 없었던 규칙이 표현할 수 있는 것

19개 필드에는 4개의 파생 요율 — SellRateA, LockRate, MigrateRateA, FundRaisingRateB — 이 포함되어 있으며, 이것이 규칙을 공급 전체에서 이식 가능하게 만드는 것입니다.

위임된 관리

PlatformConfig.curve_rule_manager는 이 플랫폼의 규칙 계정을 생성, 업데이트, 제거, 종료할 수 있는 핫 지갑입니다. 규칙 편집은 일상적이며 플랫폼 관리자 키는 보통 멀티시그입니다. 이것이 멀티시그를 루프 밖으로 유지하는 필드입니다. UpdatePlatformConfig::CurveRuleManager를 통해 한 번 설정하세요. 플랫폼 관리자는 병렬로 동일한 권한을 유지합니다 — 프로그램은 서명자로부터 PlatformConfig PDA를 다시 파생하여 이를 수락합니다 — 따라서 손실된 관리자 키는 필드를 회전하여 복구할 수 있습니다. Pubkey::default()는 관리자 전용을 의미합니다. 손상된 관리자 키는 매개변수 규칙을 느슨하게 하거나 삭제하고 규칙 계정의 렌트를 회수할 수 있습니다. 하지만 restrict_curve_param을 뒤집거나, 수수료 지갑, 베스팅 필드, CPMM 설정을 건드리거나, GlobalConfig 한계를 깨뜨릴 수 없습니다.

렌트 및 크기

규칙 계정은 그룹 없이 생성되고 모든 변경 시 크기가 조정되므로, 플랫폼은 실제로 작성한 규칙에 대해서만 비용을 지불하며, 그룹을 제거하면 차이를 서명자에게 환불합니다. 크기가 동적이므로, 디코더는 상수를 가정하지 말고 계정의 실제 길이를 읽어야 합니다.

런칭 시 계산 비용

체크는 활성화된 동안 모든 런칭에서 실행됩니다. 종단 간 측정 — PDA 파생, remaining_accounts 스캔, 역직렬화, 평가: 파생 제약은 직접 필드 읽기의 약 48에 대해 약 223 CU의 비용이 듭니다. 완전히 로드된 규칙도 기본 200,000 CU 명령어당 예산의 3분의 1 이내에 머물러 있습니다. 그룹은 하나가 일치할 때까지 평가되므로, 가장 많이 사용되는 계층이 먼저 와야 합니다.

일회성 마이그레이션

화이트리스트를 사용한 플랫폼은 프로토콜에 의해 단일 패스로 마이그레이션되었으며, 플래그를 켤 수 있기 전에 수행되었습니다. 전용 권한이 플랫폼당 하나의 트랜잭션을 실행하여 모든 레거시 항목을 이름이 지정된 설정의 규칙 계정의 체크 그룹으로 변환하고, PlatformConfig에서 항목을 지웠으며, 해당 계정을 944바이트로 축소했습니다. 변환은 이전 의미를 정확히 보존했습니다: 각 항목은 하나의 그룹이 되었고, 각 비센티널 필드는 하나의 Eq 제약이 되었으며, 모든 센티널 항목 — 모든 런칭과 일치했던 — 은 제약이 없는 그룹이 되었으며, 이것도 모든 런칭과 일치합니다. 마이그레이션은 규칙을 작성했지만 활성화하지 않았습니다. 마이그레이션된 플랫폼은 restrict_curve_param1로 설정할 때까지 제한되지 않은 상태로 유지되었습니다. 마이그레이션 명령어는 이제 패스가 완료되었으므로 프로그램에서 제거되었으며, 이를 읽었던 레거시 필드도 제거되었습니다.

변경되지 않은 것

  • GlobalConfig. 동일한 레이아웃, 동일한 한계, 동일한 명령어. 규칙은 이러한 한계를 좁히고 함께 확인됩니다. 절대 하나를 넓힐 수 없습니다.
  • 런칭 명령어의 계정 목록과 인수. InitializeV2InitializeWithToken2022는 동일한 고정 계정과 동일한 인수를 사용합니다. remaining_accounts만 항목을 얻으며, 플래그가 켜져 있을 때만입니다.
  • 거래, 졸업, 수수료, 베스팅 경로. 건드리지 않음.
  • PlatformAllowConfig. 변경되지 않았으며 무관합니다: 플랫폼의 런칭이 사용할 수 있는 어떤 설정을 결정하는 반면, 규칙은 설정 내의 어떤 매개변수를 결정합니다. 두 플래그는 독립적입니다.
  • 오류 코드 60006023. 변경되지 않음, 6020 포함.
  • PlatformConfig의 크기와 사전 패딩 오프셋. 변경되지 않았으므로 기존 계정은 자체 마이그레이션이 필요하지 않습니다.

업데이트된 페이지

  • products/launchlab/curve-rules새 페이지. 3단계 모델, 19필드 및 4연산자 테이블, 9개의 사용 사례, 곡선 유형 제한, 2개의 오프체인 체크 헬퍼, 데브넷 리허설 시퀀스, 위임된 관리, 렌트, 롤아웃 순서, 계산 비용.
  • products/launchlab/platform-config — “곡선 매개변수 화이트리스트”가 “런칭 매개변수 규칙”으로 대체됨; restrict_curve_param, curve_rule_manager, 78바이트 패딩에 대해 레이아웃 업데이트됨; 업데이트 경로 테이블, 읽기 경로 스니펫, 함정 재작성됨.
  • products/launchlab/instructions — 4개 명령어, 계정, 인수, 오류를 다루는 새로운 “플랫폼 런칭 매개변수 규칙” 섹션; 인벤토리 행 대체됨.
  • products/launchlab/accountsPlatformCurveRule이 인벤토리에 추가되고 전체 레이아웃 및 가변 크기 경고와 함께 자체 섹션이 제공됨.
  • reference/error-codes60246030 문서화됨; 60186020 주석 처리됨.