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 — indexadas por (curve_type, index) — e cada lançamento escolhe exatamente uma no momento de Initialize. Os valores no GlobalConfig escolhido então se tornam limites rígidos para os parâmetros daquele lançamento. Para personalização no nível da plataforma (taxa de taxa 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 no nível do protocolo que todo lançamento deve obedecer:
  • O tipo de curva de ligação permitida (curve_type).
  • A taxa de negociação que a curva cobra em cada compra e venda.
  • A taxa 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 (tipicamente SOL envolvido ou USDC) — o ativo com o qual os usuários compram.
  • Quatro carteiras no nível do protocolo: o proprietário da taxa de protocolo, o proprietário da taxa de migração e as duas carteiras de controle de migração retidas para graduação CPMM e AMM v4 legado.
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 de seed da 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 campos indexam 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 taxa 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 reivindica 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. Reivindicada por migrate_fee_owner via CollectMigrateFee.
  • max_share_fee_rate — inicializada para 10_000 (100 bps). Limita a taxa de taxa de compartilhamento da plataforma do PlatformConfig vinculante (consulte platform-config). O programa garante 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 qualquer um 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 de protocolo

  • quote_mint — o ativo com o qual os usuários compram. A maioria dos lançamentos usa SOL envolvido (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.
  • protocol_fee_owner — chave pública que assina CollectFee e reivindica as taxas de 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.

Carteiras de migração

As duas carteiras de graduação armazenadas requerem 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 tipicamente mantidas pela crank de graduação operada pela Raydium, para que a graduação ocorra logo após a curva atingir o limite, em vez de esperar o criador chamá-la.

Listas de permissão no nível da plataforma

GlobalConfig não tem mais requires_platform_auth. Seu byte anterior é preenchimento, portanto 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 de 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 garante:
  • 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, portanto a vinculação é permanente.

Caminho de atualização

UpdateConfig é apenas para administrador e recebe 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) recebem uma forma de argumento Pubkey separada; consulte a fonte update_config para a tabela de dispatch exata antes de compor uma transação de administrador. O seletor anterior UpdateConfig 12 para autorização de plataforma foi removido. 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.