Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
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 repose sur GlobalConfig. Alors que GlobalConfig définit les règles au niveau du protocole (« le frais de trade est 1 %, l’approvisionnement doit être au minimum 10M, seul ce portefeuille peut diplômer »), PlatformConfig est ce que chaque plateforme de lancement — pump.fun, l’interface utilisateur propre à Raydium, les launchpads tiers — utilise pour ajouter leurs frais, réclamer leur part du LP après la diplômation, restreindre les formes de courbes que leurs lancements peuvent choisir, et afficher leur identité visuelle (nom, site web, image) on-chain.Qu’est-ce que c’est
Un comptePlatformConfig gère quatre aspects transversaux pour une plateforme :
- Identité visuelle — nom, site web, lien vers l’image, tous stockés inline afin que tout explorateur ou agrégateur puisse afficher la plateforme qui a lancé un token.
- Frais de plateforme — un frais de trade supplémentaire (
fee_rate) en plus dutrade_fee_ratedu protocole. S’accumule dans leplatform_fee_walletde la plateforme. Limité à 100 bps parGlobalConfig.max_share_fee_rate. - Répartition de migration NFT — trois entiers (
platform_scale,creator_scale,burn_scale) qui totalisentRATE_DENOMINATOR_VALUE = 1_000_000et partitionnent le LP après diplômation en une portion frappée au portefeuille NFT de la plateforme, une portion au portefeuille NFT du créateur, et une portion brûlée (Burn & Earn). Significatif uniquement lorsque la diplômation cible CPMM (migrate_type = 1). - Liste autorisée des paramètres de courbe — une
Vec<PlatformCurveParam>listant exactement quelles combinaisons de(supply, total_base_sell, total_quote_fund_raising, migrate_type, migrate_cpmm_fee_on, vesting_params...)sont permises sur cette plateforme. Si le vecteur est vide ou toutes les entrées sont invalides, toute combinaison est autorisée ; autrement les lancements doivent correspondre exactement à une des entrées.
create_platform_config dans les sources pour la liste des seeds canonique.)
Disposition
platform_scale + creator_scale + burn_scale doit égaler 1_000_000 (validé par MigrateNftInfo::check). Répartitions courantes vues en production :
(0, 100_000, 900_000)— 90 % du LP brûlé, 10 % au créateur. Lancement équitable style pump standard.(50_000, 100_000, 850_000)— petite part plateforme (5 %), 10 % créateur, 85 % brûlé.(0, 0, 1_000_000)— brûlage intégral, pas de frappages NFT. Lancements strictement « sans insiders ».
Champs d’identité visuelle
name, web, et img sont des tableaux d’octets inline 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) afin que les plateformes puissent inclure assez de métadonnées pour les explorateurs et agrégateurs sans recourir au stockage off-chain. Tout ce qui dépasse ces limites revient avec InvalidInput au CreatePlatformConfig.
Mécanique des frais
Un swap sur une courbe liée à unePlatformConfig facture trois frais en couches :
trade_fees’accumule vers 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 indexé par la clé publique du créateur + le mint de quote (réclamé viaClaimCreatorFee).
creator_fee_rate est limité par MAX_CREATOR_FEE_RATE = 5000 (50 bps). fee_rate (le frais de plateforme) est plafonné à 10000 (100 bps) par GlobalConfig.max_share_fee_rate.
Répartition de migration NFT (CPMM uniquement)
Quand un lancement se diplôme vers CPMM (migrate_type = 1, signé par migrate_to_cpswap_wallet), l’instruction de migration divise les tokens LP frappés par CPMM::InitializeWithPermission en trois parts :
LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE) — le détenteur du NFT a droit de réclamer les frais CPMM accumulés indéfiniment sans pouvoir retirer la liquidité sous-jacente. Voir products/launchlab/creator-fees pour le flux Fee Key post-diplômation.
La part brûlée est envoyée au programme Lock avec is_burn = true afin que les tokens LP soient définitivement inaccessibles — ils sécurisent le plancher de prix du pool sans jamais reversant des frais à quiconque.
Quand migrate_type = 0 (diplômation vers AMM v4), les champs de répartition NFT sont ignorés et l’intégralité du LP est verrouillé / brûlé selon un flux séparé côté AMM v4.
Liste autorisée 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 n’est pas 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 vide.
L’algorithme d’appariement à Initialize :
- Filtrer
curve_paramssur les entrées dontglobal_configcorrespond auGlobalConfigchoisi du lancement. - Si la liste filtrée est vide, autoriser n’importe quels paramètres (la plateforme n’a pas lister quoi que ce soit pour cette
GlobalConfig). - Si chaque entrée de la liste filtrée a
all_is_invalid()(chaque champ est le joker), autoriser n’importe quels paramètres. - Sinon itérer les entrées ; pour chaque entrée, vérifier les paramètres du lancement contre chaque champ non-joker. Si tous les champs non-joker correspondent, accepter et retourner.
- Si aucune entrée n’a correspondu, revenir avec
InvalidInput.
MAX_CURVE_PARAMS = 10 plafonne la taille de la liste autorisée.
PlatformGlobalAccess — autoriser une plateforme
Quand un GlobalConfig a requires_platform_auth = 1, chaque Initialize le ciblant doit inclure un PDA PlatformGlobalAccess prouvant que la plateforme a été pré-autorisée :
[b"platform_global_access", global_config, platform_config].
L’admin du protocole en crée un par paire (GlobalConfig, PlatformConfig) via CreatePlatformGlobalAccess et le révoque via ClosePlatformGlobalAccess. Sans ce compte, un lancement ne peut pas se lier à ce GlobalConfig depuis la plateforme contrôlée.
Chemin de lecture
PoolState.platform_config pointe directement sur le PlatformConfig d’origine — le récupérer une fois et mettre en cache l’identité visuelle.
Chemin de mise à jour
| Instruction | Qui signe | Ce qui change |
|---|---|---|
CreatePlatformConfig | admin de plateforme (une fois) | Initialise le compte avec PlatformParams. |
UpdatePlatformConfig | admin de plateforme | Dispatch générique indexé par un param: u8 ; mute un champ par appel. Les champs d’identité visuelle, les taux de frais, le portefeuille de vesting, et les divers portefeuilles sont tous settables via ceci. |
UpdatePlatformCurveParam | admin de plateforme | Ajouter ou remplacer une entrée PlatformCurveParam par (global_config, index). |
RemovePlatformCurveParam | admin de plateforme | Effacer une entrée (la définit à tous-sentinelle = joker). |
ClaimPlatformFee | platform_fee_wallet | Balayer les frais de plateforme par pool du PoolState.quote_vault. |
ClaimPlatformFeeFromVault | platform_fee_wallet | Balayer le coffre de frais par plateforme (PDA à [platform_config, quote_mint]). |
platform_fee_wallet, platform_nft_wallet, platform_vesting_wallet, platform_cp_creator, transfer_fee_extension_auth, cpswap_config) passent toutes par UpdatePlatformConfig. Lire la table dispatch update_platform_config dans les sources pour les codes param exacts.
Pièges courants
- Sentinelles de liste autorisée mal définies. Un
BondingCurveParamavectotal_locked_amount = 0n’est pas un joker — il correspond à des lancements qui optent explicitement pour pas de vesting. Le joker pour ce champ estu64::MAX. Le même piège existe pourcliff_periodetunlock_period. Utiliserclear()(que le programme expose) pour définir les sentinelles correctement. - Arrondissement de répartition NFT. Les trois scales doivent totaliser exactement
1_000_000. Les erreurs off-by-one àCreatePlatformConfigrevertent ; off-by-one à l’exécution frapperait ou brûlerait une unité LP supplémentaire, c’est 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 pour toujours (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é comme lepool_creatordu pool CPMM post-diplômation ; quand défini à une clé réelle, cette clé est enregistrée à la place. Cela affecte qui peut appelerCPMM::CollectCreatorFeeplus tard. Décider au moment de la création de la config de plateforme quel modèle vous voulez.
Pointeurs
products/launchlab/global-config— règles côté protocole qu’un lancement doit satisfaire.products/launchlab/vesting— mécanique deplatform_vesting_scale.products/launchlab/creator-fees— NFT Fee Key, Burn & Earn.products/launchlab/platforms— guide du plateforme intégrateur.
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_global_access.rs—PlatformGlobalAccess.raydium-launch/programs/launchpad/src/lib.rs—create_platform_config,update_platform_config,update_platform_curve_param,remove_platform_curve_param,create_platform_global_access,close_platform_global_access,claim_platform_fee,claim_platform_fee_from_vault.


