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 em nível de plataforma que fica sobre GlobalConfig. Enquanto GlobalConfig define as regras em todo o protocolo (“taxa de negociação é 1%, fornecimento deve ser pelo menos 10M, apenas esta carteira pode se formar”), PlatformConfig é o que cada plataforma de lançamento — pump.fun, a própria UI do Raydium, launchpads de terceiros — usa para adicionar sua taxa, reivindicar sua fatia do LP pós-graduação, restringir quais parâmetros de lançamento seus lançamentos podem escolher e exibir sua marca (nome, site, imagem) on-chain.O que é
Uma contaPlatformConfig gerencia cinco responsabilidades 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 de plataforma — uma taxa de negociação extra (
fee_rate) além datrade_fee_ratedo protocolo. Acumula naplatform_fee_walletda plataforma. Limitada a 500 bps (50000) tanto no caminho de criação quanto de atualização, aumentada de 100 bps (10000) em 2026-08-26 — veja Limites de taxa. - Divisão de migração de LP — três inteiros armazenados (
platform_scale,creator_scale,burn_scale) que somam1_000_000. Antes da atualização de 2026-08-17, a escala do criador produzia uma Fee Key separada do criador. Migrações executadas após a atualização combinam as duas primeiras em uma compartilhamento de LP bloqueado de propriedade da plataforma; o restante é queimado. - Regras de parâmetros de lançamento — uma restrição opcional (
restrict_curve_param) que exige que um lançamento satisfaça a contaPlatformCurveRuledoGlobalConfigque selecionou. As regras suportam faixas de valor, níveis alternativos e restrição por tipo de token; elas vivem em suas próprias contas, não emPlatformConfig. - Lista de permissões de configuração global — uma restrição opcional que exige um
PlatformAllowConfigcriado pela plataforma para oGlobalConfigselecionado.
create_platform_config no código-fonte para a lista de seeds canônica.)
Layout
Vec<PlatformCurveParam> à direita até a versão de 2026-08-31 que moveu parâmetros de lançamento para contas PlatformCurveRule; restrict_curve_param, curve_rule_manager e os 4 bytes que o prefixo de comprimento do vec ocupava saem do padding, então a contagem de bytes e cada offset de campo anterior permanecem inalterados. Veja a entrada do changelog para o que os decodificadores devem mudar.
platform_scale + creator_scale + burn_scale deve ser igual a 1_000_000. Antes da atualização de 2026-08-17, creator_scale era bloqueado separadamente e sua Fee Key ia para o criador do token. Para migrações executadas após a atualização, é adicionado a platform_scale e seus direitos de LP bloqueado vão para a plataforma. Exemplos de resultados sob a lógica atualizada:
(0, 100_000, 900_000)— 90% LP queimado, 10% bloqueado para a plataforma.(50_000, 100_000, 850_000)— 85% queimado, 15% bloqueado para a plataforma.(0, 0, 1_000_000)— queima total, sem cunhagem de NFT. Lançamentos estritos “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, fatia até o primeiro \0:
name: 64, web: 256, img: 256) para que as plataformas possam incluir metadados suficientes para exploradores e agregadores sem acessar 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 com chave pela pubkey do criador + mint de cotação (reivindicado viaClaimCreatorFee).
Limites de taxa
Ambas as taxas são denominadas em1/1_000_000, então 5000 é 50 bps e 50000 é 500 bps.
Os dois pontos de aplicação para
fee_rate são chamadas require! separadas em arquivos diferentes, então carregam códigos de erro diferentes, mas aplicam o mesmo limite. Uma plataforma criada em qualquer taxa permitida pode ser editada depois, inclusive através da variante AllInfo em massa que reescreve cada campo de uma vez.
Ambos os limites de fee_rate eram originalmente 100 bps (10000). O limite de atualização moveu para 25000 (250 bps) em 2026-01-27; em 2026-08-26 ambos moveram para 50000 (500 bps) — veja a entrada do changelog.
GlobalConfig.max_share_fee_rate não limita nenhuma das duas taxas. Ele limita o argumento share_fee_rate por transação que as quatro instruções de swap recebem — a taxa de referência — e nada mais. Veja global-config.
Autoridades de taxa de transferência Token-2022
transfer_fee_extension_auth nomeia a chave da plataforma que acaba segurando as autoridades TransferFeeConfig do mint base quando um lançamento é criado através de InitializeWithToken-2022 com uma taxa de transferência anexada. A extensão carrega duas autoridades e são entregues em pontos diferentes do ciclo de vida do lançamento:
Antes de 2026-08-27 o mint era criado com o PDA
authority em ambas as autoridades, e ambas se moviam para a plataforma na graduação. O programa não expõe nenhuma instrução de retirada de retido ou colheita, então as taxas retidas durante a fase de curva de ligação eram inacessíveis até o lançamento se formar. Escrever o lado de retirada na criação do mint as torna reivindicáveis desde o primeiro trade — veja a entrada do changelog.
Duas consequências que valem a pena planejar:
- Defina o campo antes de lançar, não depois. Um lançamento criado enquanto
transfer_fee_extension_authéPubkey::default()coloca o PDAauthorityno lado de retirada. Definir o campo depois ainda funciona — a graduação encontra o PDA no lugar e entrega a autoridade — mas nada pode retirar o saldo retido enquanto isso. - Girar o campo durante o lançamento divide as duas autoridades. Mude
transfer_fee_extension_authentre a criação e a graduação de um lançamento e a autoridade de retirada de retido do mint fica com a chave configurada na criação (o PDA não a mantém mais, então a migração pula esse repasse) enquanto a autoridade de configuração de taxa vai para a nova chave. Gire entre lançamentos ou planeje reconciliar as duas chaves você mesmo através de Token-2022 diretamente.
Pubkey::default() pela vida toda de um lançamento mantém ambas as autoridades no PDA authority permanentemente: a taxa nunca pode ser mudada e o saldo retido nunca pode ser retirado. Apenas anexe uma taxa de transferência a um lançamento se a plataforma pretender manter essas chaves.
Divisão de migração de NFT (apenas CPMM)
Quando um lançamento se forma para CPMM, a instrução de migração divide os tokens LP cunhados porCPMM::InitializeWithPermission de duas maneiras:
lp_to_platform for diferente de zero, o programa LP-Lock o envolve em um NFT Fee Key de propriedade de platform_nft_wallet. Isso substitui o comportamento pré-atualização que criava Fee Keys separadas de plataforma e criador. Fee Keys criadas por migrações concluídas antes da atualização permanecem inalteradas. Este direito de taxa de LP é separado das taxas de criador CPMM controladas por platform_cp_creator.
A fatia de queima é queimada diretamente, então nenhuma conta pode retirá-la ou reivindicar as taxas de LP representadas por essa compartilhamento.
Lançamentos existentes com migrate_type = 0 armazenado ainda podem usar o caminho AMM v4 legado. A nova inicialização rejeita esse tipo de migração.
Regras de parâmetros de lançamento
restrict_curve_param é o interruptor. Em 0 o programa não lê regras. Em 1, cada lançamento roteado através desta plataforma deve satisfazer a conta PlatformCurveRule do GlobalConfig que selecionou, e o construtor de lançamento deve anexar essa conta a remaining_accounts.
(field, op, value) suportando Eq, Gte, Lte e Neq. Isso cobre faixas de valor, níveis alternativos, limites de avaliação de graduação, pisos de migração, restrição por tipo de token e grupos com limite de tempo — o modelo completo, a tabela de campos e nove playbooks trabalhados estão em products/launchlab/curve-rules.
Duas coisas pertencem aqui em vez de naquela página:
curve_rule_manageré uma delegação, não uma transferência. Defina através deUpdatePlatformConfig::CurveRuleManagere essa carteira pode criar, atualizar, remover e fechar as contas de regra desta plataforma sem a chave de admin. O admin da plataforma mantém o mesmo poder em paralelo, então girar ou limpar o campo recupera o controle.Pubkey::default()significa que apenas o admin pode gerenciar regras. Não pode virarrestrict_curve_param, que permanece uma chamada apenas de admin.- Regras são aplicadas em cima de
GlobalConfig, nunca em vez disso. A verificação de regra é executada antes dos próprios limites da config e pode apenas estreitá-los.
curve_params: Vec<PlatformCurveParam>, que só podia testar igualdade exata, tinha no máximo 10 entradas em todas as configs e crescia a própria conta PlatformConfig. Plataformas que a usavam foram migradas pelo protocolo em uma passagem única; o campo legado, suas duas instruções e MAX_CURVE_PARAMS desapareceram.
PlatformAllowConfig — restringindo uma plataforma
Cada plataforma decide se restringe quais contas GlobalConfig seus lançamentos podem usar. Defina restrict_global_config com UpdatePlatformConfig::RestrictGlobalConfig(0 | 1).
[b"platform_allow_config", platform_config, global_config].
O admin da plataforma cria ou fecha uma conta por par permitido via CreatePlatformAllowConfig e ClosePlatformAllowConfig. Quando a restrição é 1, a inicialização procura em remaining_accounts pelo PDA esperado e rejeita uma conta ausente com NotEnoughRemainingAccounts. Quando a restrição é 0, nenhuma conta de permissão é necessária.
A antiga conta PlatformGlobalAccess gerenciada pelo admin do protocolo e suas instruções de criar/fechar são aposentadas. Os tamanhos existentes de PlatformConfig e GlobalConfig não mudam, mas os decodificadores devem substituir o antigo sinalizador global pelo novo sinalizador de plataforma. PDAs de acesso antigos não são consumidos pela nova verificação.
Caminho de leitura
PoolState.platform_config aponta para o PlatformConfig originário diretamente — busque uma vez e coloque em cache a marca.
Caminho de atualização
Rotações de carteira (
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 código-fonte para os códigos param exatos.
Armadilhas comuns
restrict_curve_paramhabilitado antes do construtor ser atualizado. Enquanto for1o PDA de regra deve estar emremaining_accountsem cada lançamento, mesmo para uma config sem conta de regra — uma conta ausente éNotEnoughRemainingAccounts, não uma passagem. Envie a mudança do construtor primeiro, depois vire a bandeira.restrict_curve_paramhabilitado com uma regra vazia. Uma regra segurando zero grupos, ou um grupo segurando zero restrições, permite tudo. Habilitar a bandeira não é por si só uma restrição; escreva os grupos primeiro, verifique-os com a verificação do SDK e ensaie a sequência inteira em devnet.- Arredondamento de divisão de NFT. As três escalas devem somar exatamente
1_000_000. Erros de um emCreatePlatformConfigrevertam; um erro de um em tempo de execução cunharia ou queimaria uma unidade LP extra, que é o que a verificação de igualdade estrita está lá para prevenir. - Dupla alocação de vesting de plataforma. Se
platform_vesting_scale > 0, a plataforma deve chamarCreatePlatformVestingAccountuma vez após o término da arrecadação do lançamento; se esquecer, essa compartilhamento permanece não alocada e dormente para sempre (o orçamentototal_locked_amountdo lançamento é consumido mas a plataforma nunca reclama). - Ambiguidade de
platform_cp_creator. Quando definido paraPubkey::default(), o criador do lançamento é registrado como opool_creatordo pool CPMM pós-graduação; quando definido para uma chave real, essa chave é registrada. Isso determina o beneficiário das taxas de criador CPMM pós-graduação e quem pode assinar o caminho originalCPMM::CollectCreatorFee. O caminho de coleta sem permissão ainda paga as ATAs canônicas dessa chave registrada. Decida no momento da criação da config de plataforma qual modelo você quer. transfer_fee_extension_authdefinido tarde ou girado. O campo é lido duas vezes por lançamento Token-2022 — uma vez na criação do mint parawithdraw_withheld_authority, uma vez na graduação paratransfer_fee_config_authority— então um valor que muda entre esses dois momentos deixa as duas autoridades em chaves diferentes. Veja Autoridades de taxa de transferência Token-2022.- Restrição sem uma conta de permissão. Habilitar
restrict_global_configantes de criar oPlatformAllowConfignecessário bloqueia novos lançamentos que selecionam essa config.
Ponteiros
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— taxas de criador versus direitos de Fee Key de plataforma.products/launchlab/platforms— guia de como fazer para integrador de plataforma.
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— despachoPlatformConfigParame os setters por campo que aplicam os limites de taxa em tempo de atualização.raydium-launch/programs/launchpad/src/lib.rs— pontos de entrada de config de plataforma e allow-config.raydium-launch/programs/launchpad/src/instructions/initialize_with_token_2022.rs— ondetransfer_fee_extension_authé escrito noTransferFeeConfigdo novo mint.raydium-launch/programs/launchpad/src/instructions/admin/migrate_to_cpswap.rs— o repasse de autoridade em tempo de graduação e sua guardaget_withdraw_withheld_authority.

