Skip to main content
Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
GlobalConfig é a conta de configuração no nível do protocolo. Pode haver muitas delas — identificadas por (curve_type, index) — e cada lançamento escolhe exatamente uma no momento de Initialize. Os valores no GlobalConfig escolhido tornam-se limites rígidos para os parâmetros daquele lançamento. Para personalização no nível da plataforma (taxa de comissão por plataforma, formas de curva permitidas, divisões de NFT na graduação), consulte products/launchlab/platform-config.

O que é

Um GlobalConfig é um PDA singleton-por-(curve_type, index) que fixa as regras do lado do protocolo que todo lançamento deve obedecer:
  • O tipo de curva de ligação permitida (curve_type).
  • A taxa de comissão comercial que a curva cobra em cada compra e venda.
  • A comissão de migração cobrada na graduação.
  • Pisos em fornecimento, taxa de bloqueio, taxa de venda e taxa de migração.
  • O mint de cotação (normalmente SOL encapsulado ou USDC) — o ativo com o qual os usuários compram.
  • Quatro carteiras do lado do protocolo: o proprietário da comissão do protocolo, o proprietário da comissão de migração e as duas carteiras de controle de migração retidas para graduação CPMM e AMM v4 legado.
As contas GlobalConfig podem ser criadas pelo administrador do programa LaunchLab ou pela autoridade delegada de criação de configuração. Apenas o administrador atualiza configurações existentes. Consulte reference/program-addresses para as autoridades canônicas.

Layout

Derivação de PDA:
(Verifique a ordem exata das sementes na conta on-chain antes de assinar — a instrução create_config do programa é a fonte da verdade.)

Semântica dos campos

curve_type e index

Juntos, esses identificam um GlobalConfig de forma única. Há um GlobalConfig por par (curve_type, index):
  • curve_type = 0 — Curva de reserva virtual de produto constante. Padrão e mais usado.
  • curve_type = 1 — Curva de preço fixo.
  • curve_type = 2 — Curva de preço linear.
index é um u16 que permite ao administrador publicar múltiplas configurações por tipo de curva (por exemplo, uma com uma comissão mais apertada, outra com um mínimo de arrecadação de cotação mais alto). Em Initialize, o lançamento fornece um par (curve_type, index) e o programa carrega o GlobalConfig correspondente.

Taxas

  • trade_fee_rate — denominada em 1/1_000_000 do volume de negociação. Aplicada a cada compra e venda na curva. O protocol_fee_owner reclama sua parte via CollectFee.
  • migrate_fee — uma taxa fixa em lamports (ou unidades de cotação, dependendo da configuração) cobrada uma vez na graduação. Reclamada por migrate_fee_owner via CollectMigrateFee.
  • max_share_fee_rate — inicializada para 10_000 (100 bps). Limita o argumento share_fee_rate que BuyExactIn, BuyExactOut, SellExactIn e SellExactOut aceitam — a taxa de referência paga diretamente ao receptor de compartilhamento durante a negociação. Ela não limita PlatformConfig.fee_rate; essa taxa tem seus próprios limites, descritos em platform-config. Tanto CreateConfig quanto UpdateConfig aplicam trade_fee_rate + max_share_fee_rate < RATE_DENOMINATOR_VALUE.

Pisos de fornecimento e taxa

Esses pisos limitam quais parâmetros de forma de curva um lançamento pode escolher em Initialize. Se o CurveParams do criador violar algum deles, Initialize reverte com InvalidInput.
  • min_base_supply — o mínimo supply (sem decimais) que a curva pode declarar. Padrão é 10_000_000.
  • max_lock_rate — denominada em 1/1_000_000; padrão 300_000 (30%). Limita vesting via total_locked_amount <= supply * max_lock_rate / 1_000_000.
  • min_base_sell_rate — denominada em 1/1_000_000; padrão 200_000 (20%). Limita base_supply_graduation / supply por baixo.
  • min_base_migrate_rate — denominada em 1/1_000_000; padrão 200_000 (20%). Limita o número de tokens deixados para semear o pool pós-graduação.
  • min_quote_fund_raising — mínimo quote_reserve_target que um lançamento pode declarar (com decimais). Padrão é 30_000_000_000 unidades do mint de cotação.

Mint de cotação e carteiras do protocolo

  • quote_mint — o ativo com o qual os usuários compram. A maioria dos lançamentos usa SOL encapsulado (So111…112) ou USDC (EPjF…Dt1v). Um GlobalConfig está vinculado a um mint de cotação; lançamentos que precisam de um alvo de cotação diferente visam um (curve_type, index) diferente. O mint pode ser possuído pelo programa SPL Token ou Token-2022 — veja abaixo.
  • protocol_fee_owner — chave pública que assina CollectFee e reclama as comissões do protocolo acumuladas em cada lançamento vinculado a essa configuração. Armazenada on-chain; o administrador pode rotacioná-la via UpdateConfig.
  • migrate_fee_owner — chave pública que assina CollectMigrateFee.

Mints de cotação Token-2022

CreateConfig aceita um quote_mint Token-2022, e pools vinculados a essa configuração o carregam de ponta a ponta: o cofre de cotação, ambos os cofres de comissão e a conta de token do receptor de comissão de compartilhamento são todos criados em Token-2022, e as instruções de swap contabilizam um TransferFeeConfig no lado da cotação. O bit1 de PoolState.token_program_flag registra a escolha por lançamento. Duas restrições valem a pena conhecer antes de confiar em uma:
  • O Initialize descontinuado não pode lançar contra ele. Apenas InitializeV2 e InitializeWithToken2022 aceitam um programa de cotação Token-2022. Consulte instructions.
  • Nenhuma lista de permissão de extensão é aplicada. Diferentemente de CPMM e CLMM, LaunchLab não verifica as extensões de um mint de cotação — CreateConfig toma o mint como dado, então o único portão é a discrição do administrador sobre quais mints são vinculados a uma configuração. A verificação NoSupportExtension do programa cobre apenas mints base Token-2022 que o LaunchLab cria por si mesmo. Trate a vinculação de um como uma ação de alta confiança; consulte reference/token-2022-support.

Carteiras de migração

As duas carteiras de graduação armazenadas exigem signatários diferentes:
  • migrate_to_amm_wallet — assina MigrateToAmm para um lançamento legado existente cujo migrate_type = 0 armazenado.
  • migrate_to_cpswap_wallet — assina MigrateToCpswap. Todo lançamento recém-inicializado usa esse caminho.
Essas são normalmente mantidas pela crank de graduação operada pela Raydium, então a graduação ocorre logo após a curva atingir o limite em vez de esperar o criador chamá-la.

Listas de permissão do lado da plataforma

GlobalConfig não tem mais requires_platform_auth. Seu byte anterior é preenchimento, então o tamanho da conta não muda. O acesso agora é controlado por PlatformConfig.restrict_global_config e contas PlatformAllowConfig criadas pelo administrador dessa plataforma. Consulte platform-config.

Padrões na inicialização

Quando CreateConfig é chamado, o programa semeia muitos campos com padrões codificados:
O administrador define curve_type, index, migrate_fee, trade_fee_rate, quote_mint e as quatro chaves públicas da carteira explicitamente no momento da criação; valores subsequentes podem ser ajustados via UpdateConfig.

Como um lançamento escolhe um GlobalConfig

Em Initialize, o criador passa:
  • (curve_type, index) para selecionar qual PDA GlobalConfig carregar.
  • CurveParams descrevendo a forma da curva (supply, total_base_sell, total_quote_fund_raising, migrate_type).
  • VestingParams descrevendo fornecimento bloqueado.
  • MintParams para o mint base.
O programa aplica:
  • curve_type corresponde a global_config.curve_type.
  • supply >= global_config.min_base_supply.
  • total_locked_amount <= supply * max_lock_rate / 1_000_000.
  • total_base_sell >= supply * min_base_sell_rate / 1_000_000.
  • (supply − total_base_sell − total_locked_amount) >= supply * min_base_migrate_rate / 1_000_000 — ou seja, tokens suficientes deixados para semear o pool pós-graduação.
  • total_quote_fund_raising >= min_quote_fund_raising.
  • migrate_type == 1 (CPSWAP).
  • Se a plataforma selecionada tem restrict_global_config == 1, o PlatformAllowConfig correspondente é incluído.
Após Initialize, o PoolState do lançamento armazena a chave pública global_config diretamente, então a vinculação é permanente.

Caminho de atualização

UpdateConfig é apenas para administrador e leva um par (param: u8, value: u64). Cada valor param seleciona qual campo mutar: Rotações de carteira (protocol_fee_owner, migrate_fee_owner, migrate_to_amm_wallet, migrate_to_cpswap_wallet) levam uma forma de argumento Pubkey separada; verifique a fonte de update_config para a tabela de despacho exata antes de compor uma transação de administrador. O seletor anterior de UpdateConfig 12 para autorização de plataforma foi removido. Os administradores de plataforma agora gerenciam suas próprias listas de permissão.

Lendo um GlobalConfig de um cliente

Para uma interface listando todas as configurações disponíveis, percorra o auxiliar getAllGlobalConfigs do SDK ou consulte o endpoint da API LaunchLab que as espelha; a contagem de contas on-chain é pequena (alguns dígitos na prática).

Referências

Fontes:
  • raydium-launch/programs/launchpad/src/states/config.rs — struct GlobalConfig e initialize.
  • raydium-launch/programs/launchpad/src/lib.rscreate_config, update_config.