Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
Banner de versão.
- SDK:
@raydium-io/raydium-sdk-v2@0.2.64-alpha - Cluster: Solana
mainnet-beta - Program ID: veja
reference/program-addresses - Última verificação: 2026-09-09 contra o SDK
0.2.64-alpha,raydium-sdk-V2-demo/src/launchpade o código-fonte do programaraydium-launch
package.json. A interface da curva de ligação evoluiu entre versões menores.Configuração
As demonstrações aqui espelham arquivos emraydium-sdk-V2-demo/src/launchpad. O bootstrap segue o config.ts.template do repositório de demonstração:
Criar um lançamento
Fonte:src/launchpad/createMint.ts (e createBonkMintApi.ts para a variante Bonk orientada por API)
A maioria dos parâmetros econômicos do lançamento não são argumentos — eles vêm da GlobalConfig que você vincula via configId, e o SDK preenche o resto com os parâmetros padrão da API. Você passa a identidade do mint, a configuração a vincular e (opcionalmente) uma primeira compra:
- Não há argumentos
curveType,graduationFractionBps,initialK,quoteMint,openTime,feesoupostGraduationLpPolicy. A forma da curva e o quote mint são propriedades daGlobalConfigque você vincula; as taxas vivem emGlobalConfigePlatformConfig; a disposição de LP na graduação é uma configuração dePlatformConfig. Vejaproducts/launchlab/instructionspara exatamente o queInitializeV2aceita. symbolcom mais de 10 caracteres eurivazio são ambos rejeitados no lado do cliente antes de qualquer RPC.- Passar
transferFeeExtensionParamsmuda o builder paraInitializeWithToken2022e forçamigrateTypepara"cpmm". - O builder retorna um array
transactions;createOnly: falseadiciona a transação de primeira compra. Sempre execute comexecute({ sequentially: true })— o mint deve existir antes da compra chegar.
Buscar estado do lançamento
Fonte:src/launchpad/poolInfo.ts
Não há getLaunchById. O pool id é um PDA de (programId, mintA, mintB), e getRpcPoolInfo retorna o PoolState decodificado com seu configInfo vinculado anexado:
getRpcPoolsInfo({ poolIdList }) é a forma em lote e retorna um poolInfoMap indexado por pool id — use-o para visualizações de portfólio em vez de fazer loop. Se você quiser decodificar as contas brutas você mesmo, LaunchpadPool.decode e LaunchpadConfig.decode são exportados.
Comprar — quote exato de entrada
Fonte:src/launchpad/buy.ts
O auxiliar de cotação off-chain é Curve.buyExactIn, um método estático na classe Curve exportada — não um método em raydium.launchpad. O builder de transação é buyToken. Ambos precisam das taxas de taxa da plataforma, que vivem em uma conta PlatformConfig separada:
minMintAAmount explicitamente em vez de slippage; omita ambos e o SDK calcula o limite a partir de dados RPC ao vivo. shareFeeRate não deve exceder poolInfo.configInfo.maxShareFeeRate, e só se aplica quando você também passa um shareFeeReceiver.
Comprar — base exata de saída
O builder ébuyTokenExactOut, e os argumentos de quantidade são outAmount (base que você quer) e maxBuyAmount (quote que você gastará no máximo). Curve.buyExactOut({ poolInfo, amountA, ... }) é a visualização off-chain correspondente.
outAmount de zero no lado do cliente, e o programa reverte se a curva se moveu o suficiente para que o requisito de quote exceda maxBuyAmount.
Vender
Fonte:src/launchpad/sell.ts
O builder é sellToken (sellTokenExactOut para a variante de quote exato de saída), com sellAmount e um minAmountB opcional. Curve.sellExactIn({ poolInfo, amountA, ... }) visualiza isso.
real_a por sellAmount retorna quote_out igual à área integrada sob a curva entre real_a − sellAmount e real_a, menos a taxa de venda. sellAmount deve ser maior que zero — o builder rejeita zero antes de qualquer RPC.
Graduação
Essas carteiras são operadas pelo crank de graduação do Raydium, então na prática a migração chega segundos após o limite ser cruzado, independentemente de quem fez a compra final. Do lado do integrador, a única coisa a fazer é tratar a transição de status como um evento rápido: pesquisegetRpcPoolInfo (ou inscreva-se via gRPC, abaixo) e mude sua UI da curva para o pool CPMM resultante quando status mudar.
Veja products/launchlab/instructions para as listas de contas, a taxa de migração e como o LP é dividido na graduação.
Coletar taxas do criador
Fonte:src/launchpad/claimCreatorFee.ts (mint único) e collectAllCreatorFees.ts (em lote)
O método é claimCreatorFee (e claimMultipleCreatorFee para a forma em lote). É indexado pelo quote mint, não por um lançamento — uma chamada varre as taxas de criador acumuladas do signatário nesse mint em todos os seus lançamentos:
claimPlatformFee / claimAllPlatformFee / claimVaultPlatformFee.
Rastrear um lançamento através de seu ciclo de vida
Juntando tudo, um script de monitoramento pode parecer:getRpcPoolInfo em um timer de 10 segundos é bom para um único lançamento. Para um indexador, use a inscrição gRPC abaixo — getRpcPoolsInfo({ poolIdList }) faz lote, mas pesquisar centenas de pools ainda queima créditos RPC sem benefício.
Assistir configs e pools via gRPC
Fonte:src/grpc/launchpadPoolInfo.ts
Inscreve-se no programa LaunchLab via Yellowstone gRPC e registra cada atualização de GlobalConfig e PoolState com o programa de token de cada mint. Dois filtros datasize em uma inscrição accounts separam os dois tipos de conta, então um único stream cobre ambos.
A demonstração é a referência mais curta e correta para classificar os mints de um lançamento, o que a versão de quote mint Token-2022 torna necessário:
- Pools são classificados diretamente de
PoolState.token_program_flag, decodificando bit0 para o mint base e bit1 para o quote mint sem qualquer busca de mint. Testar o byte inteiro contra0— que era suficiente enquanto os quote mints eram apenas legados — malinterpreta um mint base legado como Token-2022 sempre que o quote mint é Token-2022. - Configs não podem ser classificados dessa forma: um
GlobalConfigarmazena o endereço do seu quote mint e nenhuma flag de programa, então a demonstração lê o proprietário da conta de mint uma vez e o armazena em cache por mint.
create versus update é inferido dos próprios caches da demonstração, inicializados na inicialização a partir de getProgramAccounts; com essa inicialização desabilitada, leia “create” como “primeiro visto neste stream”.
O acesso gRPC não faz parte da superfície RPC pública — veja o src/grpc/README.md do repositório de demonstração.
Rust CPI
Chamar LaunchLab a partir de seu próprio programa Anchor é raro (a maioria das integrações de lançamento são apenas do lado TS). Se você fizer:- O crate é
raydium-launchpad(nome da libraydium_launchpad), versão0.2.0, e expõe um recursocpi. Não háraydium_launchlab. - Não é publicado em crates.io — dependa dele por revisão git, da mesma forma que os outros crates do programa Raydium.
- Os pontos de entrada CPI são nomeados após as instruções on-chain, não após os métodos TypeScript do SDK:
buy_exact_in,buy_exact_out,sell_exact_in,sell_exact_out,claim_creator_fee,create_vesting_account,claim_vested_token.migrate_to_amm/migrate_to_cpswapsão gated por signatário para as carteiras de migraçãoGlobalConfige não são chamáveis a partir de um programa integrador.
sdk-api/rust-cpi para as regras de fixação de crate — em particular a divisão de versão do Anchor, que decide se um crate pode fazer CPI tanto em LaunchLab quanto em CLMM.
Armadilhas
- Confundir nomes de instruções on-chain com nomes de métodos SDK. O programa tem
buy_exact_in/sell_exact_in; o SDK tembuyToken/sellToken.buyExactInesellExactInexistem apenas como métodos estáticos emCurve, e computam uma cotação — eles não constroem uma transação. - Esquecer
extraSigners.createLaunchpadcria o mint base a partir de um keypair que você gera, então esse keypair tem que assinar. OmitaextraSigners: [pair]e a transação falha na verificação de assinatura. - Não escolher o quote mint. Você não passa um. O quote mint é uma propriedade da
GlobalConfigque você vincula através deconfigId—getPdaLaunchpadConfigId(programId, quoteMint, curveType, index). Para lançar contra um quote mint diferente, vincule uma configuração diferente;raydium.api.fetchLaunchConfigs()lista as disponíveis com seus parâmetros padrão. - Tamanho de metadados. Strings
urilongas empurram o CPI do Metaplex sobre o orçamento. Mantenhaurisob ~200 caracteres — a maioria dos metadados JSON hospedados em CDN se encaixa facilmente.symbolé limitado a 10 caracteres. - Tratar graduação como uma corrida que você pode entrar. Não é — veja o aviso acima. Sua UI ainda deve tratar transições de
statuscomo eventos rápidos, porque o crank do Raydium chega a migração dentro de segundos após o limite ser cruzado.
Próximos passos
products/launchlab/bonding-curve— matemática da curva.products/cpmm/code-demos— o que fazer com o pool resultante.user-flows/launch-token-launchlab— o guia de ponta a ponta para lançar um token, incluindo etapas off-chain.
- Raydium SDK v2
- Código-fonte do programa Raydium LaunchLab

