Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
PlatformConfig est la surcouche au niveau de la plateforme qui s’ajoute à GlobalConfig. Tandis que GlobalConfig définit les règles au niveau du protocole (« les frais de trading sont de 1 %, l’offre doit être d’au moins 10M, seul ce portefeuille peut diplômer »), PlatformConfig est ce que chaque plateforme de lancement — pump.fun, l’interface propre de Raydium, les launchpads tiers — utilise pour ajouter ses frais, réclamer sa part du LP post-graduation, restreindre les formes de courbes que leurs lancements peuvent choisir, et afficher leur image de marque (nom, site web, image) on-chain.Qu’est-ce que c’est
Un comptePlatformConfig gère cinq préoccupations transversales pour une plateforme :
- Image de marque — nom, site web, lien d’image, tous stockés en ligne pour que tout explorateur ou agrégateur puisse afficher la plateforme qui a lancé un token.
- Frais de plateforme — un frais de trading supplémentaire (
fee_rate) en plus dutrade_fee_ratedu protocole. S’accumule dans leplatform_fee_walletde la plateforme. Plafonné à 100 bps parGlobalConfig.max_share_fee_rate. - Répartition de migration LP — trois entiers stockés (
platform_scale,creator_scale,burn_scale) qui totalisent1_000_000. Avant la mise à jour du 2026-08-17, l’échelle du créateur produisait une clé de frais créateur séparée. Les migrations exécutées après la mise à jour combinent les deux premières en une seule part LP verrouillée appartenant à la plateforme ; le reste est brûlé. - Liste blanche des paramètres de courbe — un
Vec<PlatformCurveParam>listant exactement quelles combinaisons(supply, total_base_sell, total_quote_fund_raising, migrate_type, migrate_cpmm_fee_on, vesting_params...)sont autorisées sur cette plateforme. Si le vecteur est vide ou toutes les entrées sont invalides, toute combinaison est autorisée ; sinon les lancements doivent correspondre exactement à l’une des entrées. - Liste blanche de configuration globale — une restriction optionnelle qui nécessite un
PlatformAllowConfigcréé par la plateforme pour leGlobalConfigsélectionné.
create_platform_config dans le code source pour la liste canonique des seeds.)
Disposition
platform_scale + creator_scale + burn_scale doit égaler 1_000_000. Avant la mise à jour du 2026-08-17, creator_scale était verrouillé séparément et sa clé de frais allait au créateur du token. Pour les migrations exécutées après la mise à jour, elle est ajoutée à platform_scale et ses droits LP verrouillés vont à la plateforme à la place. Exemples de résultats selon la logique mise à jour :
(0, 100_000, 900_000)— 90 % du LP brûlé, 10 % verrouillé pour la plateforme.(50_000, 100_000, 850_000)— 85 % brûlé, 15 % verrouillé pour la plateforme.(0, 0, 1_000_000)— brûlage complet, pas de frappe NFT. Lancements stricts « sans initiés ».
Champs d’image de marque
name, web et img sont des tableaux d’octets en ligne complétés avec des zéros jusqu’à leurs constantes de taille. Pour les lire en tant que chaînes, découpez jusqu’au premier \0 :
name: 64, web: 256, img: 256) pour que les plateformes puissent inclure suffisamment de métadonnées pour les explorateurs et agrégateurs sans recourir au stockage hors-chaîne. Tout ce qui dépasse ces tailles revient à CreatePlatformConfig avec InvalidInput.
Mécanique des frais
Un swap sur une courbe liée à unPlatformConfig facture trois frais en couches :
trade_fees’accumule dans leprotocol_fee_ownerdu protocole (réclamé viaCollectFee).platform_fees’accumule dans un coffre par plateforme (réclamé viaClaimPlatformFeeouClaimPlatformFeeFromVault; voirinstructions).creator_fees’accumule dans un coffre par créateur clé par la clé publique du créateur + le mint de cotation (réclamé viaClaimCreatorFee).
creator_fee_rate est plafonné par MAX_CREATOR_FEE_RATE = 5000 (50 bps). fee_rate (les frais de plateforme) est plafonné à 10000 (100 bps) par GlobalConfig.max_share_fee_rate.
Répartition de migration NFT (CPMM uniquement)
Quand un lancement diplôme vers CPMM, l’instruction de migration divise les tokens LP frappés parCPMM::InitializeWithPermission de deux façons :
lp_to_platform est non-zéro, le programme LP-Lock l’enveloppe dans un NFT clé de frais appartenant à platform_nft_wallet. Cela remplace le comportement pré-mise à jour qui créait des clés de frais de plateforme et de créateur séparées. Les clés de frais créées par les migrations complétées avant la mise à jour restent inchangées. Ce droit de frais LP est séparé des frais de créateur CPMM contrôlés par platform_cp_creator.
La part brûlée est brûlée directement, donc aucun compte ne peut la retirer ou réclamer les frais LP représentés par cette part.
Les lancements existants avec migrate_type = 0 stocké peuvent toujours utiliser le chemin AMM v4 hérité. La nouvelle initialisation rejette ce type de migration.
Liste blanche des paramètres de courbe
curve_params: Vec<PlatformCurveParam> est le mécanisme de la plateforme pour restreindre les formes de courbes que ses lancements peuvent choisir. Si le vecteur est non-vide et au moins une entrée est valide, le programme applique à Initialize que les paramètres du lancement correspondent exactement à au moins une entrée.
u64::MAX pour les champs u64, u8::MAX pour les champs u8, 0 pour les champs supply / sell / fund-raising. Un BondingCurveParam avec tous les sentinelles est « autoriser n’importe quoi » — équivalent au comportement de liste blanche vide.
L’algorithme de correspondance à Initialize :
- Filtrez
curve_paramsaux entrées dontglobal_configcorrespond auGlobalConfigchoisi du lancement. - Si la liste filtrée est vide, autorisez n’importe quels paramètres (la plateforme n’a rien listé en blanc pour ce
GlobalConfig). - Si chaque entrée de la liste filtrée a
all_is_invalid()(chaque champ est le joker), autorisez n’importe quels paramètres. - Sinon, itérez les entrées ; pour chaque entrée, vérifiez les paramètres du lancement contre chaque champ non-joker. Si tous les champs non-joker correspondent, acceptez et retournez.
- Si aucune entrée n’a correspondu, revenez avec
InvalidInput.
MAX_CURVE_PARAMS = 10 plafonne la taille de la liste blanche.
PlatformAllowConfig — restreindre une plateforme
Chaque plateforme décide si elle restreint les comptes GlobalConfig que ses lancements peuvent utiliser. Définissez restrict_global_config avec UpdatePlatformConfig::RestrictGlobalConfig(0 | 1).
[b"platform_allow_config", platform_config, global_config].
L’administrateur de la plateforme crée ou ferme un compte par paire autorisée via CreatePlatformAllowConfig et ClosePlatformAllowConfig. Quand la restriction est 1, l’initialisation recherche dans remaining_accounts le PDA attendu et rejette un compte manquant avec NotEnoughRemainingAccounts. Quand la restriction est 0, aucun compte d’autorisation n’est requis.
Le compte PlatformGlobalAccess géré par l’ancien administrateur du protocole et ses instructions de création/fermeture sont retirés. Les tailles existantes de PlatformConfig et GlobalConfig ne changent pas, mais les décodeurs doivent remplacer l’ancien drapeau global par le nouveau drapeau de plateforme. Les anciens PDAs d’accès ne sont pas consommés par la nouvelle vérification.
Chemin de lecture
PoolState.platform_config pointe directement sur le PlatformConfig d’origine — récupérez-le une fois et mettez en cache l’image de marque.
Chemin de mise à jour
Les rotations de portefeuille (
platform_fee_wallet, platform_nft_wallet, platform_vesting_wallet, platform_cp_creator, transfer_fee_extension_auth, cpswap_config) passent toutes par UpdatePlatformConfig. Lisez la table de dispatch update_platform_config du code source pour les codes param exacts.
Pièges courants
- Sentinelles de liste blanche mal définies. Un
BondingCurveParamavectotal_locked_amount = 0n’est pas un joker — il correspond aux lancements qui refusent explicitement le vesting. Le joker pour ce champ estu64::MAX. Le même piège existe pourcliff_periodetunlock_period. Utilisezclear()(que le programme expose) pour définir correctement les sentinelles. - Arrondi de répartition NFT. Les trois échelles doivent totaliser exactement
1_000_000. Les erreurs d’une unité àCreatePlatformConfigreviennent ; les erreurs d’une unité à l’exécution frapperaient ou brûleraient une unité LP supplémentaire, ce que la vérification d’égalité stricte est là pour prévenir. - Double allocation de vesting de plateforme. Si
platform_vesting_scale > 0, la plateforme doit appelerCreatePlatformVestingAccountune fois après la fin de la levée de fonds du lancement ; si elle oublie, cette part reste non allouée et dormante à jamais (le budgettotal_locked_amountdu lancement est consommé mais la plateforme ne réclame jamais). - Ambiguïté de
platform_cp_creator. Quand défini àPubkey::default(), le créateur du lancement est enregistré commepool_creatordu pool CPMM post-graduation ; quand défini à une clé réelle, cette clé est enregistrée à la place. Cela détermine le bénéficiaire des frais de créateur CPMM post-graduation et qui peut signer le chemin originalCPMM::CollectCreatorFee. Le chemin de collection sans permission paie toujours les ATAs canoniques de cette clé enregistrée. Décidez au moment de la création de la configuration de plateforme quel modèle vous voulez. - Restriction sans compte d’autorisation. Activer
restrict_global_configavant de créer lePlatformAllowConfigrequis bloque les nouveaux lancements qui sélectionnent cette configuration.
Pointeurs
products/launchlab/global-config— règles au niveau du protocole qu’un lancement doit satisfaire.products/launchlab/vesting— mécanique deplatform_vesting_scale.products/launchlab/creator-fees— frais de créateur par rapport aux droits de clé de frais de plateforme.products/launchlab/platforms— guide pratique de l’intégrateur de plateforme.
raydium-launch/programs/launchpad/src/states/platform_config.rs—PlatformConfig,PlatformParams,MigrateNftInfo,PlatformCurveParam,BondingCurveParam,is_valid_curve_param.raydium-launch/programs/launchpad/src/states/platform_allow_config.rs—PlatformAllowConfig.raydium-launch/programs/launchpad/src/lib.rs— points d’entrée de configuration de plateforme et de configuration d’autorisation.

