Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
PlatformConfig ist die Plattformebenen-Überlagerung, die auf GlobalConfig aufsetzt. Während GlobalConfig die protokollweiten Regeln definiert („Handelsgebühr ist 1 %, Angebot muss mindestens 10 Mio. sein, nur dieses Wallet kann graduieren”), nutzt PlatformConfig jede Startplattform — pump.fun, Raydiums eigene UI, Drittanbieter-Launchpads — um ihre Gebühr hinzuzufügen, ihren Anteil am LP nach der Graduierung zu beanspruchen, einzuschränken, welche Startparameter ihre Starts wählen können, und ihr Branding (Name, Website, Bild) on-chain anzuzeigen.Was es ist
EinPlatformConfig-Konto verwaltet fünf übergreifende Belange einer Plattform:
- Branding — Name, Website, Bildlink, alle inline gespeichert, damit jeder Explorer oder Aggregator die Plattform anzeigen kann, die einen Token gestartet hat.
- Plattformgebühr — eine zusätzliche Handelsgebühr (
fee_rate) auf top dertrade_fee_ratedes Protokolls. Sammelt sich implatform_fee_walletder Plattform an. Begrenzt auf 500 bps (50000) sowohl beim Erstellen als auch beim Aktualisieren, erhöht von 100 bps (10000) am 2026-08-26 — siehe Gebührengrenzen. - LP-Migrationszuteilung — drei gespeicherte Ganzzahlen (
platform_scale,creator_scale,burn_scale), die sich zu1_000_000addieren. Vor dem Upgrade vom 2026-08-17 erzeugte die Creator-Skala einen separaten Creator Fee Key. Migrationen, die nach dem Upgrade ausgeführt werden, kombinieren die ersten beiden in eine plattformeigene gesperrte LP-Zuteilung; der Rest wird verbrannt. - Startparameter-Regeln — eine optionale Einschränkung (
restrict_curve_param), die einen Start dazu verpflichtet, dasPlatformCurveRule-Konto der ausgewähltenGlobalConfigzu erfüllen. Regeln unterstützen Wertbänder, alternative Stufen und Token-Typ-Gating; sie leben in eigenen Konten, nicht aufPlatformConfig. - Global-Config-Allowlist — eine optionale Einschränkung, die erfordert, dass eine plattformerstellte
PlatformAllowConfigfür die ausgewählteGlobalConfigvorhanden ist.
create_platform_config im Quellcode für die kanonische Seed-Liste.)
Layout
Vec<PlatformCurveParam> bis zum Release vom 2026-08-31, das Startparameter in PlatformCurveRule-Konten verschob; restrict_curve_param, curve_rule_manager und die 4 Bytes, die das Längenpräfix des Vektors belegten, kommen alle aus dem Padding, daher sind die Bytezahl und alle früheren Feldoffsets unverändert. Siehe den Changelog-Eintrag für die erforderlichen Decoder-Änderungen.
platform_scale + creator_scale + burn_scale muss gleich 1_000_000 sein. Vor dem Upgrade vom 2026-08-17 war creator_scale separat gesperrt und sein Fee Key ging an den Token-Creator. Bei Migrationen, die nach dem Upgrade ausgeführt werden, wird es zu platform_scale addiert und seine gesperrten LP-Rechte gehen stattdessen an die Plattform. Beispielergebnisse unter der aktualisierten Logik:
(0, 100_000, 900_000)— 90 % LP verbrannt, 10 % an die Plattform gesperrt.(50_000, 100_000, 850_000)— 85 % verbrannt, 15 % an die Plattform gesperrt.(0, 0, 1_000_000)— vollständig verbrannt, keine NFT-Prägungen. Strikte „keine Insider”-Starts.
Branding-Felder
name, web und img sind Inline-Byte-Arrays, die mit Nullen bis zu ihren Größenkonstanten aufgefüllt sind. Um sie als Strings zu lesen, schneiden Sie bis zum ersten \0:
name: 64, web: 256, img: 256), damit Plattformen genug Metadaten für Explorer und Aggregatoren einbeziehen können, ohne Off-Chain-Speicher zu berühren. Alles, das diese Größen überschreitet, wird bei CreatePlatformConfig mit InvalidInput zurückgewiesen.
Gebührenmechanik
Ein Swap auf einer Kurve, die an einePlatformConfig gebunden ist, erhebt drei gestaffelte Gebühren:
trade_feesammelt sich beimprotocol_fee_ownerdes Protokolls an (beansprucht überCollectFee).platform_feesammelt sich in einem plattformspezifischen Tresor an (beansprucht überClaimPlatformFeeoderClaimPlatformFeeFromVault; sieheinstructions).creator_feesammelt sich in einem Creator-spezifischen Tresor an, der durch den öffentlichen Schlüssel des Creators + Quote-Mint gekennzeichnet ist (beansprucht überClaimCreatorFee).
Gebührengrenzen
Beide Sätze sind in1/1_000_000 denominiert, daher ist 5000 50 bps und 50000 500 bps.
Die zwei Erzwingungspunkte für
fee_rate sind separate require!-Aufrufe in verschiedenen Dateien, daher tragen sie unterschiedliche Fehlercodes, aber sie wenden die gleiche Obergrenze an. Eine Plattform, die mit einem zulässigen Satz erstellt wurde, kann später bearbeitet werden, auch über die AllInfo-Bulk-Variante, die jedes Feld auf einmal umschreibt.
Beide fee_rate-Grenzen waren ursprünglich 100 bps (10000). Die Update-Grenze verschob sich am 2026-01-27 zu 25000 (250 bps); am 2026-08-26 verschoben sich beide zu 50000 (500 bps) — siehe den Changelog-Eintrag.
GlobalConfig.max_share_fee_rate begrenzt nicht einen der beiden Sätze. Es begrenzt das Pro-Transaktion-Argument share_fee_rate, das die vier Swap-Anweisungen annehmen — die Referral-Gebühr — und nichts anderes. Siehe global-config.
Token-2022-Transfergebühren-Autoritäten
transfer_fee_extension_auth benennt den Plattformschlüssel, der am Ende die TransferFeeConfig-Autoritäten des Basis-Mints hält, wenn ein Start durch InitializeWithToken2022 mit einer angehängten Transfergebühr erstellt wird. Die Erweiterung trägt zwei Autoritäten, und sie werden zu verschiedenen Punkten im Start-Lebenszyklus übergeben:
Vor 2026-08-27 wurde der Mint mit der
authority-PDA auf beiden Autoritäten erstellt, und beide verschoben sich bei der Graduierung zur Plattform. Das Programm stellt keine Withdraw-Withheld- oder Harvest-Anweisung bereit, daher waren während der Bonding-Curve-Phase einbehaltene Gebühren bis zur Graduierung des Starts unerreichbar. Das Schreiben der Withdraw-Seite bei der Mint-Erstellung macht sie ab dem ersten Trade beanspruchbar — siehe den Changelog-Eintrag.
Zwei Konsequenzen, die es wert sind, geplant zu werden:
- Stellen Sie das Feld vor dem Start ein, nicht danach. Ein Start, der erstellt wird, während
transfer_fee_extension_authPubkey::default()ist, setzt dieauthority-PDA auf die Withdraw-Seite. Das Feld später einzustellen funktioniert immer noch — die Graduierung findet die PDA an Ort und Stelle und übergibt die Autorität — aber nichts kann den einbehaltenen Saldo in der Zwischenzeit abheben. - Das Feld zwischen Start und Graduierung zu rotieren, teilt die beiden Autoritäten auf. Ändern Sie
transfer_fee_extension_authzwischen der Erstellung eines Starts und seiner Graduierung, und die Withdraw-Withheld-Autorität des Mints bleibt bei dem Schlüssel, der bei der Erstellung konfiguriert wurde (die PDA hält ihn nicht mehr, daher überspringt die Migration diese Übergabe), während die Fee-Config-Autorität zum neuen Schlüssel geht. Rotieren Sie zwischen Starts, oder planen Sie, die beiden Schlüssel selbst durch Token-2022 direkt abzustimmen.
Pubkey::default() lässt, behält beide Autoritäten auf der authority-PDA dauerhaft: der Gebührensatz kann nie geändert werden und der einbehaltene Saldo kann nie abgehoben werden. Hängen Sie eine Transfergebühr an einen Start an, nur wenn die Plattform beabsichtigt, diese Schlüssel zu halten.
NFT-Migrationszuteilung (nur CPMM)
Wenn ein Start zu CPMM graduiert, teilt die Migrationsanweisung die vonCPMM::InitializeWithPermission geprägten LP-Token auf zwei Arten auf:
lp_to_platform nicht null ist, wickelt das LP-Lock-Programm es in einen Fee Key NFT ein, der von platform_nft_wallet besessen wird. Dies ersetzt das Verhalten vor dem Upgrade, das separate Platform- und Creator-Fee-Keys erstellte. Fee Keys, die von vor dem Upgrade abgeschlossenen Migrationen erstellt wurden, bleiben unverändert. Dieses LP-Fee-Recht ist separat von CPMM-Creator-Gebühren, die von platform_cp_creator kontrolliert werden.
Der Burn-Anteil wird direkt verbrannt, daher kann kein Konto ihn abheben oder die LP-Gebühren beanspruchen, die dieser Anteil darstellt.
Bestehende Starts mit gespeichertem migrate_type = 0 können immer noch den Legacy-AMM-v4-Pfad verwenden. Neue Initialisierung lehnt diesen Migrationstyp ab.
Startparameter-Regeln
restrict_curve_param ist der Schalter. Bei 0 liest das Programm Regeln überhaupt nicht. Bei 1 muss jeder Start, der über diese Plattform geleitet wird, das PlatformCurveRule-Konto der ausgewählten GlobalConfig erfüllen, und der Start-Builder muss dieses Konto zu remaining_accounts hinzufügen.
(field, op, value)-Tripel, das Eq, Gte, Lte und Neq unterstützt. Das deckt Wertbänder, alternative Stufen, Graduierungs-Bewertungsgrenzen, Migrations-Untergrenze, Token-Typ-Gating und zeitlich begrenzte Gruppen ab — das vollständige Modell, die Feldtabelle und neun durchgearbeitete Playbooks sind in products/launchlab/curve-rules.
Zwei Dinge gehören hier eher als auf diese Seite:
curve_rule_managerist eine Delegation, keine Übertragung. Stellen Sie es durchUpdatePlatformConfig::CurveRuleManagerein und dieses Wallet kann die Rule-Konten dieser Plattform erstellen, aktualisieren, entfernen und schließen, ohne den Admin-Schlüssel zu benötigen. Der Plattform-Admin behält die gleiche Macht parallel, daher stellt das Rotieren oder Löschen des Feldes die Kontrolle wieder her.Pubkey::default()bedeutet, dass nur der Admin Regeln verwalten kann. Es kannrestrict_curve_paramnicht umschalten, das ein Admin-Only-Aufruf bleibt.- Regeln werden auf top von
GlobalConfigerzwungen, nie stattdessen. Die Regelprüfung läuft vor den eigenen Grenzen der Config und kann sie nur einengen.
curve_params: Vec<PlatformCurveParam>-Whitelist, die nur auf exakte Gleichheit testen konnte, höchstens 10 Einträge über alle Configs hinweg hielt und das PlatformConfig-Konto selbst vergrößerte. Plattformen, die es nutzten, wurden vom Protokoll in einem einmaligen Pass migriert; das Legacy-Feld, seine zwei Anweisungen und MAX_CURVE_PARAMS sind weg.
PlatformAllowConfig — eine Plattform einschränken
Jede Plattform entscheidet, ob sie einschränken möchte, welche GlobalConfig-Konten ihre Starts verwenden dürfen. Stellen Sie restrict_global_config mit UpdatePlatformConfig::RestrictGlobalConfig(0 | 1) ein.
[b"platform_allow_config", platform_config, global_config].
Der Plattform-Admin erstellt oder schließt ein Konto pro zulässigem Paar über CreatePlatformAllowConfig und ClosePlatformAllowConfig. Wenn die Einschränkung 1 ist, durchsucht die Initialisierung remaining_accounts nach der erwarteten PDA und lehnt ein fehlendes Konto mit NotEnoughRemainingAccounts ab. Wenn die Einschränkung 0 ist, ist kein Allow-Konto erforderlich.
Das frühere vom Protokoll-Admin verwaltete PlatformGlobalAccess-Konto und seine Create/Close-Anweisungen sind veraltet. Bestehende PlatformConfig- und GlobalConfig-Größen ändern sich nicht, aber Decoder müssen das alte globale Flag durch das neue Plattform-Flag ersetzen. Alte Access-PDAs werden nicht durch die neue Prüfung verbraucht.
Lesepfad
PoolState.platform_config direkt auf die ursprüngliche PlatformConfig — rufen Sie sie einmal ab und cachen Sie das Branding.
Aktualisierungspfad
Wallet-Rotationen (
platform_fee_wallet, platform_nft_wallet, platform_vesting_wallet, platform_cp_creator, transfer_fee_extension_auth, cpswap_config) gehen alle durch UpdatePlatformConfig. Lesen Sie die update_platform_config-Dispatch-Tabelle des Quellcodes für die genauen param-Codes.
Häufige Fallstricke
restrict_curve_paramaktiviert, bevor der Builder aktualisiert wurde. Während es1ist, muss die Rule-PDA bei jedem Start inremaining_accountssein, auch für eine Config ohne Rule-Konto — ein fehlendes Konto istNotEnoughRemainingAccounts, nicht ein Pass. Versenden Sie die Builder-Änderung zuerst, dann schalten Sie das Flag um.restrict_curve_paramaktiviert mit einer leeren Regel. Eine Regel, die null Gruppen hält, oder eine Gruppe, die null Einschränkungen hält, erlaubt alles. Das Flag zu aktivieren ist nicht von selbst eine Einschränkung; schreiben Sie die Gruppen zuerst, überprüfen Sie sie mit der SDK-Prüfung und üben Sie die ganze Sequenz auf devnet.- NFT-Split-Rundung. Die drei Skalen müssen sich genau zu
1_000_000addieren. Off-by-One-Fehler beiCreatePlatformConfigwerden zurückgewiesen; Off-by-One zur Laufzeit würde eine oder mehrere zusätzliche LP-Einheiten prägen oder verbrennen, was die strikte Gleichheitsprüfung verhindern soll. - Plattform-Vesting-Doppelzuweisung. Wenn
platform_vesting_scale > 0, muss die PlattformCreatePlatformVestingAccounteinmal aufrufen, nachdem die Fundraising des Starts endet; wenn sie es vergisst, bleibt dieser Anteil unzugewiesen und inaktiv für immer (dastotal_locked_amount-Budget des Starts wird verbraucht, aber die Plattform beansprucht es nie). platform_cp_creator-Mehrdeutigkeit. Wenn aufPubkey::default()gesetzt, wird der Start-Creator alspool_creatordes Post-Graduierungs-CPMM-Pools aufgezeichnet; wenn auf einen echten Schlüssel gesetzt, wird dieser Schlüssel stattdessen aufgezeichnet. Dies bestimmt den Begünstigten von Post-Graduierungs-CPMM-Creator-Gebühren und wer den ursprünglichenCPMM::CollectCreatorFee-Pfad signieren kann. Der Pfad zur Permissionless-Erfassung zahlt immer noch die kanonischen ATAs dieses aufgezeichneten Schlüssels. Entscheiden Sie bei der Erstellung der Plattform-Config, welches Modell Sie möchten.transfer_fee_extension_authspät gesetzt oder rotiert. Das Feld wird zweimal pro Token-2022-Start gelesen — einmal bei der Mint-Erstellung fürwithdraw_withheld_authority, einmal bei der Graduierung fürtransfer_fee_config_authority— daher lässt ein Wert, der sich zwischen diesen beiden Momenten ändert, die beiden Autoritäten auf verschiedenen Schlüsseln. Siehe Token-2022-Transfergebühren-Autoritäten.- Einschränkung ohne Allow-Konto. Das Aktivieren von
restrict_global_config, bevor die erforderlichePlatformAllowConfigerstellt wird, blockiert neue Starts, die diese Config auswählen.
Verweise
products/launchlab/global-config— protokollseitige Regeln, die ein Start erfüllen muss.products/launchlab/vesting—platform_vesting_scale-Mechanik.products/launchlab/creator-fees— Creator-Gebühren versus Plattform-Fee-Key-Rechte.products/launchlab/platforms— Plattform-Integrator-Anleitung.
raydium-launch/programs/launchpad/src/states/platform_config.rs—PlatformConfig,PlatformParams,MigrateNftInfo,is_curve_rule_manager,is_platform_admin.raydium-launch/programs/launchpad/src/states/platform_curve_rule.rs—PlatformCurveRule,CurveRuleGroup,ParamConstraint.raydium-launch/programs/launchpad/src/states/platform_allow_config.rs—PlatformAllowConfig.raydium-launch/programs/launchpad/src/instructions/platform/update_platform_config.rs—PlatformConfigParam-Dispatch und die Pro-Feld-Setter, die die Update-Zeit-Gebührengrenzen erzwingen.raydium-launch/programs/launchpad/src/lib.rs— Plattform-Config- und Allow-Config-Einstiegspunkte.raydium-launch/programs/launchpad/src/instructions/initialize_with_token_2022.rs— wotransfer_fee_extension_authin dieTransferFeeConfigdes neuen Mints geschrieben wird.raydium-launch/programs/launchpad/src/instructions/admin/migrate_to_cpswap.rs— die Graduierungs-Zeit-Autoritätsübergabe und ihreget_withdraw_withheld_authority-Schutzvorrichtung.

