Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
Cette entrée couvre une mise à jour à venir du programme LaunchLab. Elle a été vérifiée par rapport à la branche de version locale avant le déploiement. Confirmez le programme déployé avant de vous fier aux nouveaux comptes ou instructions.
PlatformConfig.curve_params. Ce mécanisme testait l’égalité exacte uniquement : une entrée épinglait soit un champ à une valeur, soit le remplaçait par un caractère générique. Il contenait également au maximum 10 entrées sur tous les GlobalConfig qu’une plateforme supportait, et il résidait sur le compte PlatformConfig lui-même, l’augmentant de 491 octets par entrée.
Ces trois propriétés sont entrées en collision à mesure que le protocole ajoutait des configurations. Exprimer « un objectif de levée de fonds entre 50 et 200 SOL » nécessitait une entrée par valeur autorisée et était donc impossible. Les propres planchers de GlobalConfig avaient entre-temps été largement ouverts — taux de 1 bps, limites d’approvisionnement de 99999 — précisément pour que chaque plateforme rentre sous eux, ce qui laissait les plateformes sans moyen de les réduire.
Cette version remplace la liste blanche par des règles de courbe : un compte PlatformCurveRule par paire (plateforme, configuration), contenant jusqu’à 10 groupes de vérification, chacun contenant jusqu’à 25 contraintes (champ, opérateur, valeur) sur 19 paramètres de lancement, avec Eq, Gte, Lte et Neq. Les contraintes à l’intérieur d’un groupe sont en ET, les groupes sont en OU. Une plage est un Gte plus un Lte sur le même champ.
Le modèle complet et neuf scénarios détaillés se trouvent sur la nouvelle page : products/launchlab/curve-rules.
Résumé pour les intégrateurs
PlatformConfigconserve sa taille et tous les décalages de champs existants. C’est un compte fixe de 944 octets.curve_paramsa disparu ;restrict_curve_param(u8),curve_rule_manager(Pubkey) et les 4 octets que le préfixe de longueur du vecteur occupait sortent tous du remplissage, qui rétrécit de 107 à 78.- Les décodeurs doivent abandonner le vecteur final. Un décodeur qui s’attend toujours à
Vec<PlatformCurveParam>après le remplissage lira les deux nouveaux champs comme des octets de vecteur. Tout avant le remplissage n’est pas affecté, donc un décodeur qui lit uniquement les portefeuilles de frais et les taux continue de fonctionner sans modification. - Les constructeurs de lancement ont besoin d’un compte supplémentaire quand l’indicateur est activé. Tant que
restrict_curve_paramest1,InitializeV2etInitializeWithToken2022nécessitent le PDA de règle dansremaining_accounts— y compris quand le compte n’existe pas, afin que l’omission ne puisse pas contourner la vérification. Dérivation :[b"platform_curve_rule", platform_config, global_config]. - Aucune plateforme n’est restreinte par défaut.
restrict_curve_paramest0sur chaque compte existant, et0signifie que le programme ne lit pas du tout les règles. - Deux instructions sont supprimées :
UpdatePlatformCurveParametRemovePlatformCurveParam. Quatre sont ajoutées :CreatePlatformCurveRule,UpdatePlatformCurveRule,RemovePlatformCurveRule,ClosePlatformCurveRule. UpdatePlatformConfiggagne deux variantes :RestrictCurveParam(u64)à l’index de dispatch 13 etCurveRuleManager(Pubkey)à 14. Les indices existants 0–12 sont inchangés.- Sept codes d’erreur sont ajoutés,
6024–6030.6020CurveParamIsNotExistest conservé comme espace réservé même si son dernier appelant a disparu, donc rien après lui ne se décale. Voirreference/error-codes. - Une actualisation de l’IDL est requise. Nouveau type de compte, quatre nouvelles instructions, deux supprimées, deux nouvelles variantes de dispatch, sept nouveaux codes d’erreur.
- Vérifiez les règles hors chaîne avant d’envoyer quoi que ce soit. Le SDK expose
checkLaunchAgainstCurveRule(reflète la vérification au moment du lancement, comportement de fermeture en cas d’échec inclus) etcheckCurveRuleGroupWritable(reflète la validation au moment de l’écriture). Les deux sont des fonctions pures. Voir Vérifier avant d’envoyer. - Répétez sur devnet avant d’activer sur mainnet. Activer
restrict_curve_paramchange immédiatement ce que vos créateurs peuvent faire. La séquence recommandée — y compris le lancement d’un jeton qui devrait être rejeté, pour prouver que votre constructeur passe vraiment le compte de règle — se trouve dans Tester sur devnet d’abord.
Ce qu’une règle peut exprimer que la liste blanche ne pouvait pas
Les 19 champs incluent les quatre taux dérivés —
SellRateA, LockRate, MigrateRateA, FundRaisingRateB — ce qui rend une règle portable sur les approvisionnements au lieu d’être épinglée à un seul.
Gestion déléguée
PlatformConfig.curve_rule_manager est un portefeuille actif qui peut créer, mettre à jour, supprimer et fermer les comptes de règles de cette plateforme. Éditer les règles est une routine et une clé d’administrateur de plateforme est généralement un multisig ; c’est le champ qui garde le multisig hors de la boucle. Définissez-le une fois via UpdatePlatformConfig::CurveRuleManager.
L’administrateur de la plateforme conserve le même pouvoir en parallèle — le programme l’accepte en re-dérivant le PDA PlatformConfig à partir du signataire — donc une clé gestionnaire perdue est récupérable en faisant pivoter le champ. Pubkey::default() signifie administrateur uniquement.
Une clé gestionnaire compromise peut assouplir ou supprimer les règles de paramètres et récupérer le loyer d’un compte de règle. Elle ne peut pas basculer restrict_curve_param, toucher à un portefeuille de frais, un champ de vesting ou une configuration CPMM, ou violer une limite GlobalConfig.
Loyer et taille
Un compte de règle est créé sans groupe et redimensionné à chaque modification, donc une plateforme paie pour les règles qu’elle a réellement écrites, et supprimer un groupe rembourse la différence au signataire.
Parce que la taille est dynamique, les décodeurs doivent lire la longueur réelle du compte plutôt que d’assumer une constante.
Coût de calcul au lancement
La vérification s’exécute à chaque lancement tant qu’elle est activée. Mesuré de bout en bout — dérivation PDA, scanremaining_accounts, désérialisation, évaluation :
Une contrainte dérivée coûte environ 223 CU contre environ 48 pour une lecture de champ direct. Même une règle complètement chargée reste dans un tiers du budget par instruction par défaut de 200 000 CU. Les groupes sont évalués jusqu’à ce qu’un corresponde, donc le niveau le plus utilisé doit être en premier.
La migration unique
Les plateformes qui utilisaient la liste blanche ont été migrées par le protocole en une seule passe, avant que l’indicateur soit disponible pour s’activer. Une autorité dédiée a exécuté une transaction par plateforme qui a traduit chaque entrée héritée dans les groupes de vérification du compte de règle de la configuration qu’elle nommait, a effacé les entrées dePlatformConfig et a réduit ce compte à 944 octets.
La traduction a préservé exactement l’ancienne sémantique : chaque entrée est devenue un groupe, chaque champ non-sentinelle est devenu une contrainte Eq, et une entrée tout-sentinelle — qui correspondait à chaque lancement — est devenue un groupe sans contraintes, qui correspond également à chaque lancement.
La migration a écrit les règles mais ne les a pas activées. Une plateforme migrée est restée sans restriction jusqu’à ce qu’elle définisse elle-même restrict_curve_param à 1. L’instruction de migration a été supprimée du programme maintenant que la passe est terminée, ainsi que le champ hérité qu’elle lisait.
Ce qui n’a pas changé
GlobalConfig. Même disposition, mêmes limites, mêmes instructions. Les règles réduisent ces limites et sont vérifiées aux côtés d’elles ; elles ne peuvent jamais en élargir une.- Les listes de comptes et les arguments des instructions de lancement.
InitializeV2etInitializeWithToken2022prennent les mêmes comptes fixes et les mêmes arguments. Seulremaining_accountsgagne une entrée, et uniquement tant que l’indicateur est activé. - Les chemins de trading, graduation, frais et vesting. Inchangés.
PlatformAllowConfig. Inchangé et sans rapport : il décide quelles configurations les lancements d’une plateforme peuvent utiliser, tandis qu’une règle décide quels paramètres dans une configuration. Les deux indicateurs sont indépendants.- Codes d’erreur
6000–6023. Inchangés,6020inclus. - La taille de
PlatformConfiget les décalages pré-remplissage. Inchangés, donc les comptes existants n’ont besoin d’aucune migration propre.
Pages mises à jour
products/launchlab/curve-rules— nouvelle page. Le modèle à trois niveaux, les tableaux des 19 champs et 4 opérateurs, neuf scénarios, la restriction de type de courbe, les deux assistants de vérification hors chaîne, la séquence de répétition devnet, la gestion déléguée, le loyer, l’ordre de déploiement et le coût de calcul.products/launchlab/platform-config— « Liste blanche des paramètres de courbe » remplacée par « Règles de paramètres de lancement » ; disposition mise à jour pourrestrict_curve_param,curve_rule_manageret le remplissage de 78 octets ; tableau du chemin de mise à jour, extrait du chemin de lecture et pièges réécrits.products/launchlab/instructions— nouvelle section « Règles de paramètres de lancement de plateforme » couvrant les quatre instructions, leurs comptes, arguments et erreurs ; ligne d’inventaire remplacée.products/launchlab/accounts—PlatformCurveRuleajouté à l’inventaire et donné sa propre section avec la disposition complète et l’avertissement de taille variable.reference/error-codes—6024–6030documentés ;6018et6020annotés.

