Skip to main content
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
PlatformConfig ist die plattformspezifische Ebene, die auf GlobalConfig aufbaut. Während GlobalConfig die protokollweiten Regeln definiert („Handelsgebühr ist 1 %, Angebot muss mindestens 10M sein, nur dieses Wallet kann graduieren”), nutzt jede Launch-Plattform — pump.fun, Raydiums eigene UI, Drittanbieter-Launchpads — PlatformConfig, um ihre Gebühr hinzuzufügen, ihren Anteil am LP nach der Graduation zu beanspruchen, einzuschränken, welche Kurvenformen ihre Launches wählen können, und ihr Branding (Name, Website, Bild) On-Chain zu präsentieren.

Was es ist

Ein PlatformConfig-Account verwaltet fünf übergreifende Aspekte für eine Plattform:
  1. Branding — Name, Website, Bildlink, alle inline gespeichert, damit jeder Explorer oder Aggregator die Plattform anzeigen kann, die einen Token gestartet hat.
  2. Plattformgebühr — eine zusätzliche Handelsgebühr (fee_rate) auf top der trade_fee_rate des Protokolls. Sammelt sich im platform_fee_wallet der Plattform an. Begrenzt auf 100 bps durch GlobalConfig.max_share_fee_rate.
  3. LP-Migrationsaufteilung — drei gespeicherte Ganzzahlen (platform_scale, creator_scale, burn_scale), die sich zu 1_000_000 addieren. Vor dem Upgrade vom 14.08.2026 erzeugte die Creator-Scale einen separaten Creator Fee Key. Migrationen nach dem Upgrade kombinieren die ersten beiden zu einem plattformeigenen gesperrten LP-Anteil; der Rest wird verbrannt.
  4. Kurvenparameter-Whitelist — ein Vec<PlatformCurveParam>, das genau auflistet, welche (supply, total_base_sell, total_quote_fund_raising, migrate_type, migrate_cpmm_fee_on, vesting_params...)-Kombinationen auf dieser Plattform zulässig sind. Wenn der Vektor leer ist oder alle Einträge ungültig sind, ist jede Kombination erlaubt; andernfalls müssen Launches genau einem Eintrag entsprechen.
  5. Global-Config-Allowlist — eine optionale Einschränkung, die ein von der Plattform erstelltes PlatformAllowConfig für die ausgewählte GlobalConfig erfordert.
PDA-Ableitung:
(Siehe create_platform_config im Quellcode für die kanonische Seed-Liste.)

Layout

platform_scale + creator_scale + burn_scale muss gleich 1_000_000 sein. Vor dem Upgrade vom 14.08.2026 wurde creator_scale separat gespeichert und sein Fee Key ging an den Token-Creator. Bei Migrationen nach dem Upgrade wird es zu platform_scale addiert und seine gesperrten LP-Rechte gehen stattdessen an die Plattform. Beispielhafte Ergebnisse unter der aktualisierten Logik:
  • (0, 100_000, 900_000) — 90 % LP verbrannt, 10 % gesperrt für die Plattform.
  • (50_000, 100_000, 850_000) — 85 % verbrannt, 15 % gesperrt für die Plattform.
  • (0, 0, 1_000_000) — vollständig verbrannt, keine NFT-Prägungen. Strikte „keine Insider”-Launches.

Branding-Felder

name, web und img sind Byte-Arrays, die mit Nullen bis zu ihren Größenkonstanten aufgefüllt sind. Um sie als Strings zu lesen, schneiden Sie bis zur ersten \0:
Die Konstanten sind absichtlich großzügig (name: 64, web: 256, img: 256), damit Plattformen genug Metadaten für Explorer und Aggregatoren einbinden können, ohne Off-Chain-Speicher zu nutzen. Alles, das diese Größen überschreitet, wird bei CreatePlatformConfig mit InvalidInput zurückgewiesen.

Gebührenmechanik

Ein Swap auf einer Kurve, die an eine PlatformConfig gebunden ist, erhebt drei gestaffelte Gebühren:
  • trade_fee sammelt sich beim protocol_fee_owner des Protokolls an (beansprucht via CollectFee).
  • platform_fee sammelt sich in einem plattformspezifischen Vault an (beansprucht via ClaimPlatformFee oder ClaimPlatformFeeFromVault; siehe instructions).
  • creator_fee sammelt sich in einem Creator-spezifischen Vault an, der durch den Public Key des Creators + Quote Mint gekennzeichnet ist (beansprucht via ClaimCreatorFee).
creator_fee_rate ist begrenzt durch MAX_CREATOR_FEE_RATE = 5000 (50 bps). fee_rate (die Plattformgebühr) ist begrenzt auf 10000 (100 bps) durch GlobalConfig.max_share_fee_rate.

NFT-Migrationsaufteilung (nur CPMM)

Wenn ein Launch zu CPMM graduiert, teilt die Migrationsanweisung die vom CPMM::InitializeWithPermission geprägten LP-Token auf zwei Arten auf:
Wenn lp_to_platform ungleich 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 Migrationen vor dem Upgrade erstellt wurden, bleiben unverändert. Dieses LP-Gebührenrecht ist separat von CPMM-Creator-Gebühren, die durch platform_cp_creator kontrolliert werden. Der Burn-Anteil wird direkt verbrannt, sodass kein Account ihn abheben oder die LP-Gebühren, die dieser Anteil darstellt, beanspruchen kann. Bestehende Launches mit gespeichertem migrate_type = 0 können weiterhin den Legacy-AMM-v4-Pfad nutzen. Neue Initialisierungen lehnen diesen Migrationstyp ab.

Kurvenparameter-Whitelist

curve_params: Vec<PlatformCurveParam> ist der Mechanismus der Plattform, um einzuschränken, welche Kurvenformen ihre Launches wählen können. Wenn der Vektor nicht leer ist und mindestens ein Eintrag gültig ist, erzwingt das Programm bei Initialize, dass die Parameter des Launches genau einem Eintrag entsprechen.
Jedes Feld hat einen Sentinel-Wert, der Wildcard bedeutet (jeder Wert passt): u64::MAX für die u64-Felder, u8::MAX für die u8-Felder, 0 für die Supply-/Sell-/Fundraising-Felder. Ein BondingCurveParam mit allen Sentinels ist „alles erlauben” — gleichbedeutend mit dem Verhalten einer leeren Whitelist. Der Matching-Algorithmus bei Initialize:
  1. Filtern Sie curve_params zu Einträgen, deren global_config der vom Launch gewählten GlobalConfig entspricht.
  2. Wenn die gefilterte Liste leer ist, erlauben Sie beliebige Parameter (die Plattform hat nichts für diese GlobalConfig auf die Whitelist gesetzt).
  3. Wenn jeder Eintrag in der gefilterten Liste all_is_invalid() hat (jedes Feld ist der Wildcard), erlauben Sie beliebige Parameter.
  4. Andernfalls iterieren Sie Einträge; für jeden Eintrag überprüfen Sie die Parameter des Launches gegen jedes Nicht-Wildcard-Feld. Wenn alle Nicht-Wildcard-Felder übereinstimmen, akzeptieren und zurückgeben.
  5. Wenn kein Eintrag passte, revert mit InvalidInput.
Dies ermöglicht es einer Plattform zu sagen „wir erlauben nur die Standard-1B-Supply-/800M-verkauft-/30k-USDC-Fundraising-/kein-Vesting-Form”, indem sie einen einzelnen Eintrag mit konkreten Werten für diese vier Felder und Wildcards überall sonst schreibt. Oder eine strengere Plattform könnte drei oder vier diskrete Formen aufzählen, eine pro unterstützter Launch-Stufe. MAX_CURVE_PARAMS = 10 begrenzt die Whitelist-Größe.

PlatformAllowConfig — Einschränkung einer Plattform

Jede Plattform entscheidet, ob sie einschränken möchte, welche GlobalConfig-Accounts ihre Launches verwenden dürfen. Setzen Sie restrict_global_config mit UpdatePlatformConfig::RestrictGlobalConfig(0 | 1).
PDA-Seeds: [b"platform_allow_config", platform_config, global_config]. Der Plattform-Admin erstellt oder schließt einen Account pro erlaubtem Paar via CreatePlatformAllowConfig und ClosePlatformAllowConfig. Wenn die Einschränkung 1 ist, sucht die Initialisierung in remaining_accounts nach der erwarteten PDA und lehnt einen fehlenden Account mit NotEnoughRemainingAccounts ab. Wenn die Einschränkung 0 ist, ist kein Allow-Account erforderlich. Der frühere, vom Protokoll-Admin verwaltete PlatformGlobalAccess-Account 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 durch die neue Überprüfung nicht verbraucht.

Read-Pfad

Für eine UI, die „von wo aus wurde dieser Token gestartet” zeigt, verweist PoolState.platform_config direkt auf die ursprüngliche PlatformConfig — rufen Sie sie einmal ab und cachen Sie das Branding.

Update-Pfad

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 Dispatch-Tabelle update_platform_config im Quellcode für die genauen param-Codes.

Häufige Fallstricke

  • Whitelist-Sentinels falsch gesetzt. Ein BondingCurveParam mit total_locked_amount = 0 ist nicht ein Wildcard — es passt zu Launches, die sich explizit gegen Vesting entscheiden. Der Wildcard für dieses Feld ist u64::MAX. Die gleiche Falle existiert für cliff_period und unlock_period. Verwenden Sie clear() (das das Programm bereitstellt), um Sentinels korrekt zu setzen.
  • NFT-Aufteilungs-Rundung. Die drei Scales müssen sich genau zu 1_000_000 addieren. Off-by-One-Fehler bei CreatePlatformConfig revert; Off-by-One zur Laufzeit würde eine zusätzliche LP-Einheit prägen oder verbrennen, was die strikte Gleichheitsprüfung verhindern soll.
  • Plattform-Vesting-Doppelzuweisung. Wenn platform_vesting_scale > 0, muss die Plattform CreatePlatformVestingAccount einmal aufrufen, nachdem die Fundraising des Launches endet; wenn sie es vergisst, bleibt dieser Anteil unzugewiesen und inaktiv für immer (das total_locked_amount-Budget des Launches wird verbraucht, aber die Plattform beansprucht es nie).
  • platform_cp_creator-Mehrdeutigkeit. Wenn auf Pubkey::default() gesetzt, wird der Launch-Creator als pool_creator des Post-Graduation-CPMM-Pools aufgezeichnet; wenn auf einen echten Key gesetzt, wird stattdessen dieser Key aufgezeichnet. Dies bestimmt den Empfänger von Post-Graduation-CPMM-Creator-Gebühren und wer den ursprünglichen CPMM::CollectCreatorFee-Pfad signieren kann. Der erlaubnislose Sammlungspfad zahlt immer noch die kanonischen ATAs dieses aufgezeichneten Keys. Entscheiden Sie bei der Erstellung der Plattformkonfiguration, welches Modell Sie möchten.
  • Einschränkung ohne Allow-Account. Das Aktivieren von restrict_global_config, bevor Sie das erforderliche PlatformAllowConfig erstellen, blockiert neue Launches, die diese Config wählen.

Verweise

Quellen:
  • raydium-launch/programs/launchpad/src/states/platform_config.rsPlatformConfig, PlatformParams, MigrateNftInfo, PlatformCurveParam, BondingCurveParam, is_valid_curve_param.
  • raydium-launch/programs/launchpad/src/states/platform_allow_config.rsPlatformAllowConfig.
  • raydium-launch/programs/launchpad/src/lib.rs — Plattformkonfiguration und Allow-Config-Einstiegspunkte.