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.
Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
PlatformConfig é a sobreposição no nível da plataforma que fica acima de GlobalConfig. Enquanto GlobalConfig define as regras em todo o protocolo (“taxa de negociação é 1%, oferta deve ter pelo menos 10M, apenas essa carteira pode graduarse”), PlatformConfig é o que cada plataforma de lançamento — pump.fun, interface própria do Raydium, launchpads de terceiros — usa para adicionar sua taxa, reivindicar sua fatia do LP pós-graduação, restringir quais formas de curva seus lançamentos podem escolher e exibir sua marca (nome, site, imagem) on-chain.O que é
Uma contaPlatformConfig gerencia quatro preocupações transversais para uma plataforma:
- Marca — nome, site, link de imagem, todos armazenados inline para que qualquer explorador ou agregador possa exibir a plataforma que lançou um token.
- Taxa da plataforma — uma taxa de negociação extra (
fee_rate) além datrade_fee_ratedo protocolo. Acumula naplatform_fee_walletda plataforma. Limitada a 100 bps porGlobalConfig.max_share_fee_rate. - Divisão de migração de NFT — três inteiros (
platform_scale,creator_scale,burn_scale) que somamRATE_DENOMINATOR_VALUE = 1_000_000e particionam o LP pós-graduação em uma parte emitida para a carteira de NFT da plataforma, uma parte para a carteira de NFT do criador e uma parte queimada (Burn & Earn). Significativo apenas quando a graduação tem como alvo CPMM (migrate_type = 1). - Lista de permissões de parâmetros de curva — um
Vec<PlatformCurveParam>listando exatamente quais combinações(supply, total_base_sell, total_quote_fund_raising, migrate_type, migrate_cpmm_fee_on, vesting_params...)são permitidas nesta plataforma. Se o vetor estiver vazio ou todas as entradas forem inválidas, qualquer combinação é permitida; caso contrário, os lançamentos devem corresponder exatamente a uma das entradas.
create_platform_config no source para a lista canônica de seeds.)
Layout
platform_scale + creator_scale + burn_scale deve ser igual a 1_000_000 (validado por MigrateNftInfo::check). Divisões comuns vistas em produção:
(0, 100_000, 900_000)— 90% LP queimado, 10% para criador. Lançamento justo estilo pump padrão.(50_000, 100_000, 850_000)— pequena fatia da plataforma (5%), 10% criador, 85% queimada.(0, 0, 1_000_000)— queimadura total, sem emissão de NFT. Lançamentos estritos de “sem insiders”.
Campos de marca
name, web e img são arrays de bytes inline preenchidos com zeros até suas constantes de tamanho. Para lê-los como strings, corte até o primeiro \0:
name: 64, web: 256, img: 256) para que as plataformas possam incluir metadados suficientes para exploradores e agregadores sem recorrer ao armazenamento off-chain. Qualquer coisa que exceda esses tamanhos reverte em CreatePlatformConfig com InvalidInput.
Mecânica de taxas
Um swap em uma curva vinculada a umPlatformConfig cobra três taxas em camadas:
trade_feeacumula noprotocol_fee_ownerdo protocolo (reivindicado viaCollectFee).platform_feeacumula em um cofre por plataforma (reivindicado viaClaimPlatformFeeouClaimPlatformFeeFromVault; vejainstructions).creator_feeacumula em um cofre por criador chaveado pela pubkey do criador + quote mint (reivindicado viaClaimCreatorFee).
creator_fee_rate é limitado por MAX_CREATOR_FEE_RATE = 5000 (50 bps). fee_rate (a taxa da plataforma) é limitada a 10000 (100 bps) por GlobalConfig.max_share_fee_rate.
Divisão de migração de NFT (apenas CPMM)
Quando um lançamento se gradua para CPMM (migrate_type = 1, assinado por migrate_to_cpswap_wallet), a instrução de migração divide os tokens LP emitidos por CPMM::InitializeWithPermission de três formas:
LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE) — o titular do NFT tem direito a reivindicar taxas CPMM acumuladas indefinidamente sem conseguir sacar a liquidez subjacente. Veja products/launchlab/creator-fees para o fluxo Fee Key pós-graduação.
A fatia de queimadura é enviada ao programa Lock com is_burn = true para que os tokens LP fiquem permanentemente inacessíveis — eles protegem o piso de preço do pool sem nunca pagar taxas de volta a ninguém.
Quando migrate_type = 0 (graduarse para AMM v4), os campos de divisão de NFT são ignorados e todo o LP é bloqueado / queimado de acordo com um fluxo separado no lado AMM v4.
Lista de permissões de parâmetros de curva
curve_params: Vec<PlatformCurveParam> é o mecanismo da plataforma para restringir quais formas de curva seus lançamentos podem escolher. Se o vetor não estiver vazio e pelo menos uma entrada for válida, o programa aplica em Initialize que os parâmetros do lançamento correspondam a pelo menos uma entrada exatamente.
u64::MAX para os campos u64, u8::MAX para os campos u8, 0 para os campos de oferta / venda / arrecadação de fundos. Um BondingCurveParam com todos os sentinelas é “permitir qualquer coisa” — equivalente ao comportamento de lista de permissões vazia.
O algoritmo de correspondência em Initialize:
- Filtrar
curve_paramspara entradas cujaglobal_configcorresponde àGlobalConfigescolhida do lançamento. - Se a lista filtrada estiver vazia, permitir qualquer parâmetro (a plataforma não fez lista de permissões de nada para esta
GlobalConfig). - Se cada entrada na lista filtrada tiver
all_is_invalid()(cada campo é o wildcard), permitir qualquer parâmetro. - Caso contrário, iterar entradas; para cada entrada, verificar os parâmetros do lançamento contra cada campo não-wildcard. Se todos os campos não-wildcard corresponderem, aceitar e retornar.
- Se nenhuma entrada corresponder, reverter com
InvalidInput.
MAX_CURVE_PARAMS = 10 limita o tamanho da lista de permissões.
PlatformGlobalAccess — autorizando uma plataforma
Quando um GlobalConfig tem requires_platform_auth = 1, cada Initialize contra ele deve incluir um PDA PlatformGlobalAccess comprovando que a plataforma foi pré-autorizada:
[b"platform_global_access", global_config, platform_config].
O admin do protocolo cria um desses por par (GlobalConfig, PlatformConfig) via CreatePlatformGlobalAccess e o revoga via ClosePlatformGlobalAccess. Sem essa conta, um lançamento não pode se vincular a essa GlobalConfig da plataforma bloqueada.
Caminho de leitura
PoolState.platform_config aponta para o PlatformConfig de origem diretamente — buscá-lo uma vez e cache da marca.
Caminho de atualização
| Instrução | Quem assina | O que muda |
|---|---|---|
CreatePlatformConfig | admin da plataforma (único) | Inicializa a conta com PlatformParams. |
UpdatePlatformConfig | admin da plataforma | Despacho genérico chaveado por um param: u8; muta um campo por chamada. Campos de marca, taxas, carteira de vesting e várias carteiras são todas configuráveis através disso. |
UpdatePlatformCurveParam | admin da plataforma | Adiciona ou substitui uma entrada PlatformCurveParam por (global_config, index). |
RemovePlatformCurveParam | admin da plataforma | Limpa uma entrada (define como all-sentinel = wildcard). |
ClaimPlatformFee | platform_fee_wallet | Varre a taxa de plataforma por pool de PoolState.quote_vault. |
ClaimPlatformFeeFromVault | platform_fee_wallet | Varre o cofre de taxas por plataforma (PDA em [platform_config, quote_mint]). |
platform_fee_wallet, platform_nft_wallet, platform_vesting_wallet, platform_cp_creator, transfer_fee_extension_auth, cpswap_config) todas passam por UpdatePlatformConfig. Leia a tabela de despacho update_platform_config do source para os códigos exatos de param.
Armadilhas comuns
- Sentinelas da lista de permissões mal definidas. Um
BondingCurveParamcomtotal_locked_amount = 0não é um wildcard — corresponde a lançamentos que explicitamente optam por não fazer vesting. O wildcard para esse campo éu64::MAX. A mesma armadilha existe paracliff_periodeunlock_period. Useclear()(que o programa expõe) para definir sentinelas corretamente. - Arredondamento de divisão de NFT. As três escalas devem somar exatamente
1_000_000. Erros de um emCreatePlatformConfigrevert; erros de um em tempo de execução emitiriam ou queimariam uma unidade de LP extra, o que é o que a verificação de igualdade estrita está lá para evitar. - Dupla alocação de vesting da plataforma. Se
platform_vesting_scale > 0, a plataforma deve chamarCreatePlatformVestingAccountuma vez após o término da arrecadação de fundos do lançamento; se esquecer, essa fatia permanece não alocada e dormente para sempre (o orçamentototal_locked_amountdo lançamento é consumido mas a plataforma nunca reivindica). - Ambiguidade de
platform_cp_creator. Quando definido comoPubkey::default(), o criador do lançamento é registrado comopool_creatordo pool CPMM pós-graduação; quando definido para uma chave real, essa chave é registrada em seu lugar. Isso afeta quem pode chamarCPMM::CollectCreatorFeedepois. Decida no momento da criação da configuração da plataforma qual modelo você quer.
Referências
products/launchlab/global-config— regras do lado do protocolo que um lançamento deve satisfazer.products/launchlab/vesting— mecânica deplatform_vesting_scale.products/launchlab/creator-fees— NFT Fee Key, Burn & Earn.products/launchlab/platforms— como integrar a plataforma.
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.


