Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
PoolState (a conta de estado raiz para um lançamento), seus dois vaults, a PDA de autoridade e as referências pós-graduação que ela ganha quando o lançamento se liquida.
Para a configuração em nível de protocolo que limita cada lançamento, consulte products/launchlab/global-config. Para a sobreposição por plataforma, consulte products/launchlab/platform-config. Para contas de vesting (VestingSchedule em PoolState, VestingRecord por beneficiário), consulte products/launchlab/vesting.
Inventário de contas
O método
raydium.launchpad.getLaunchById do SDK retorna PoolState mais um sinalizador indicando se o lançamento foi graduado; se foi, o ID do pool pós-migração é incluído.
PoolState
O estado raiz por lançamento. Os nomes de campo abaixo correspondem à struct Rust on-chain (states/pool.rs); alguns valores são simplificados para legibilidade — consulte a fonte para o layout exato de memória.
PoolStatus (do IDL Anchor):
status— três valores, monotônicos (Funding → Migrate → Migrated). Leituras sempre seguras; escritas controladas.real_base,real_quote— estado atual da curva. Combinados comvirtual_base/virtual_quotesão suficientes para calcular o preço spot sem tocar nos vaults. Consultebonding-curve.total_base_sellvsreal_base— razão de “progresso em direção à graduação” para UIs.migrate_type— nova inicialização requer1(CPSWAP). Um0armazenado permanece significativo apenas para um lançamento existente criado antes da aplicação exclusiva de CPMM.amm_creator_fee_on— escolhecreator_fee_on = OnlyQuoteToken(0) ouBothToken(1) no pool CPMM pós-graduação. Não escolhe o alvo de migração. Consultecreator-fees.token_program_flag— um campo de bits, não um booleano. Bit0 é o mint base e bit1 é o mint quote, cada um0para SPL Token e1para Token-2022, então o byte assume quatro valores:0(ambos legados),1(Token-2022 base),2(Token-2022 quote),3(ambos Token-2022). Leia um mint com(token_program_flag >> bit) & 1. Comparar o byte inteiro contra0para classificar o mint base resolve2para o programa errado. Bit1 era constante0até que mints quote Token-2022 fossem suportados.quote_protocol_fee/platform_fee/migrate_fee— três contadores de taxa independentes. Cada um tem sua própria instrução de reivindicação; consulteinstructions.vesting_schedule— presente em cadaPoolStatemas inativo quandototal_locked_amount == 0. Consultevestingpara o ciclo de vida completo.
A PDA de autoridade
LaunchLab usa uma única PDA de autoridade em todos os lançamentos, derivada sem seed por lançamento:- A autoridade em cada
base_vaultequote_vaultde lançamento. - A
mint_authorityem cada mint base de lançamento (pré-graduação). - O signatário no CPI de graduação CPMM e na graduação AMM v4 legada para estado existente.
- O signatário em transferências
ClaimVestedTokenpara fora do vault base. - A
transfer_fee_config_authorityem umTransferFeeConfigde mint base Token-2022, para toda a fase pré-graduação — e suawithdraw_withheld_authoritytambém, mas apenas quando a plataforma deixouPlatformConfig.transfer_fee_extension_authnão definido.
mint_authority é revogada imediatamente após MigrateToCpswap ou uma chamada legada MigrateToAmm, então o fornecimento é permanentemente fixo.
Duas PDAs adicionais controlam os vaults de taxa:
ClaimCreatorFee e ClaimPlatformFeeFromVault.
Mint base
Criado inline porInitialize com:
mint_authority = authority(revogado na graduação).freeze_authority = None.supply = supply, totalmente cunhado embase_vault.decimalsescolhido pelo criador emInitialize(comumente 6).
base_mint.supply é constante durante a vida do lançamento. Compras de curva movem tokens de base_vault para o comprador, mas não chamam mint_to.
Initialize / InitializeV2 criam mints base SPL Token. A instrução dedicada InitializeWithToken2022 permite que o mint base seja um mint Token-2022 (com TransferFeeConfig opcional). Todos os três caminhos de inicialização requerem graduação CPMM.
Quando InitializeWithToken2022 anexa um TransferFeeConfig, o mint é criado com transfer_fee_config_authority = authority e withdraw_withheld_authority = PlatformConfig.transfer_fee_extension_auth, voltando para authority quando a plataforma não definiu esse campo. Ambas as autoridades são reatribuídas à chave de plataforma na graduação, o lado de retirada apenas se a PDA ainda a mantiver. Consulte platform-config.
O mint quote é independente do mint base e pode ser um mint Token-2022 — InitializeV2 e InitializeWithToken2022 aceitam qualquer programa em seu slot de programa quote. O Initialize descontinuado não: sua conta de programa quote ainda é tipada para SPL Token, então uma configuração cujo mint quote é Token-2022 só pode ser lançada através das outras duas. O mint quote nunca é criado por LaunchLab; é o que GlobalConfig.quote_mint nomeia. Consulte global-config e reference/token-2022-support.
Vaults
Tantobase_vault quanto quote_vault são contas de token possuídas pela PDA authority do LaunchLab, cada uma criada no programa que possui seu próprio mint — então um lançamento pode ter um vault base legado e um vault quote Token-2022, ou qualquer outra combinação. token_program_flag registra qual é qual. Os endereços são armazenados em PoolState e também podem ser derivados:
Initialize da fonte antes de confiar em uma derivação em produção.)
Vaults de taxa
Duas PDAs agregam taxas em lançamentos:- Vault de taxa de criador — PDA com seeds
[creator, quote_mint]. Cada lançamento que ganha as mesmas taxas de criador no mesmo mint quote despeja no mesmo vault. O criador o varre viaClaimCreatorFee. - Vault de taxa de plataforma — PDA com seeds
[platform_config, quote_mint]. Cada lançamento roteado através da mesma plataforma que usa o mesmo mint quote despeja no mesmo vault. Aplatform_fee_walletda plataforma o varre viaClaimPlatformFeeFromVault. Há também uma variante de varredura por lançamento (ClaimPlatformFee) que puxa doquote_vaultdo lançamento diretamente sem passar pelo vault agregado.
Quote vault ↔ real_quote
quote_vault.balance e PoolState.real_quote devem permanecer sincronizados. Podem divergir no máximo pela soma dos três contadores de taxa pendentes (quote_protocol_fee, platform_fee, migrate_fee), que ficam no vault mas pertencem aos contadores de taxa e não à reserva de curva. A matemática de curva sempre usa real_quote, nunca o saldo bruto do vault.
Invariante pré-graduação:
PlatformCurveRule
Uma conta por par (PlatformConfig, GlobalConfig), contendo as formas de lançamento que a plataforma permite nessa configuração. As seeds da PDA são [b"platform_curve_rule", platform_config, global_config].
150 + Σ(14 + 18 × constraints) e decodificadores não devem assumir um tamanho fixo. Grupos são ORados: um lançamento é permitido assim que as restrições de um grupo todas se mantêm. Zero grupos significa sem restrição.
Leia apenas quando o PlatformConfig.restrict_curve_param proprietário for 1 — em 0 o programa ignora a conta e uma regra obsoleta pode estar lá. IDs de campo, operadores e os playbooks estão em products/launchlab/curve-rules.
Transições de contas do ciclo de vida
Próximos passos
products/launchlab/bonding-curve— a matemática por trás dereal_base↔real_quote.products/launchlab/instructions— listas de contas por instrução.products/launchlab/global-config— vinculação em nível de protocolo.products/launchlab/platform-config— sobreposição de plataforma.products/launchlab/vesting— mecânica de fornecimento bloqueado.products/cpmm/accounts— como ocpmm_pool_statepós-graduação se parece.
raydium-launch/programs/launchpad/src/states/pool.rs—PoolState,PoolStatus,VestingSchedule,AmmCreatorFeeOn.raydium-launch/programs/launchpad/src/lib.rs— constantes de seed da PDA (AUTH_SEED,CREATOR_FEE_VAULT_AUTH_SEED,PLATFORM_FEE_VAULT_AUTH_SEED).- Módulo
launchpaddo Raydium SDK v2.

