Esta página fue traducida automáticamente por IA. La versión en inglés es la fuente autorizada.Ver versión en inglés →
Banner de versión.
- SDK:
@raydium-io/raydium-sdk-v2@0.2.64-alpha - Cluster: Solana
mainnet-beta - ID del programa: consulta
reference/program-addresses - Última verificación: 2026-09-09 contra el SDK
0.2.64-alpha,raydium-sdk-V2-demo/src/launchpady el código fuente del programaraydium-launch
package.json. La interfaz de la curva de vinculación ha evolucionado entre versiones menores.Configuración
Las demostraciones aquí reflejan archivos enraydium-sdk-V2-demo/src/launchpad. El arranque sigue el config.ts.template del repositorio de demostración:
Crear un lanzamiento
Fuente:src/launchpad/createMint.ts (y createBonkMintApi.ts para la variante impulsada por API de Bonk)
La mayoría de la economía del lanzamiento no son argumentos — provienen de la GlobalConfig que vinculas a través de configId, y el SDK completa el resto con los parámetros predeterminados de la API. Pasas la identidad del mint, la configuración a vincular y (opcionalmente) una primera compra:
- No hay argumento
curveType,graduationFractionBps,initialK,quoteMint,openTime,feesopostGraduationLpPolicy. La forma de la curva y el mint de cotización son propiedades de laGlobalConfigque vinculas; las tasas de comisión viven enGlobalConfigyPlatformConfig; la disposición de LP en la graduación es una configuración dePlatformConfig. Consultaproducts/launchlab/instructionspara ver exactamente qué aceptaInitializeV2. - Un
symbolmás largo que 10 caracteres y unurivacío se rechazan del lado del cliente antes de cualquier RPC. - Pasar
transferFeeExtensionParamscambia el constructor aInitializeWithToken2022y fuerzamigrateTypea"cpmm". - El constructor devuelve un array
transactions;createOnly: falseañade la transacción de primera compra. Siempre ejecutaexecute({ sequentially: true })— el mint debe existir antes de que la compra se registre.
Obtener el estado del lanzamiento
Fuente:src/launchpad/poolInfo.ts
No hay getLaunchById. El id del pool es un PDA de (programId, mintA, mintB), y getRpcPoolInfo devuelve el PoolState decodificado con su configInfo vinculada adjunta:
getRpcPoolsInfo({ poolIdList }) es la forma por lotes y devuelve un poolInfoMap indexado por id de pool — úsalo para vistas de cartera en lugar de hacer bucles. Si quieres decodificar las cuentas sin procesar tú mismo, LaunchpadPool.decode y LaunchpadConfig.decode se exportan.
Comprar — cotización exacta dentro
Fuente:src/launchpad/buy.ts
El asistente de cotización fuera de cadena es Curve.buyExactIn, un método estático en la clase Curve exportada — no un método en raydium.launchpad. El constructor de transacciones es buyToken. Ambos necesitan las tasas de comisión de la plataforma, que viven en una cuenta PlatformConfig separada:
minMintAAmount explícitamente en lugar de slippage; omite ambos y el SDK calcula el límite a partir de datos RPC en vivo. shareFeeRate no debe exceder poolInfo.configInfo.maxShareFeeRate, y solo se aplica cuando también pasas un shareFeeReceiver.
Comprar — salida base exacta
El constructor esbuyTokenExactOut, y los argumentos de cantidad son outAmount (base que quieres) y maxBuyAmount (cotización que gastarás como máximo). Curve.buyExactOut({ poolInfo, amountA, ... }) es la vista previa fuera de cadena correspondiente.
outAmount de cero del lado del cliente, y el programa revierte si la curva se ha movido lo suficiente como para que el requisito de cotización exceda maxBuyAmount.
Vender
Fuente:src/launchpad/sell.ts
El constructor es sellToken (sellTokenExactOut para la variante de salida de cotización exacta), con sellAmount y un minAmountB opcional. Curve.sellExactIn({ poolInfo, amountA, ... }) lo vista previa.
real_a por sellAmount devuelve quote_out igual al área integrada bajo la curva entre real_a − sellAmount y real_a, menos la comisión de venta. sellAmount debe ser mayor que cero — el constructor rechaza cero antes de cualquier RPC.
Graduación
Esas billeteras son operadas por el crank de graduación de Raydium, así que en la práctica la migración se registra segundos después de que se cruce el umbral, independientemente de quién hizo la compra final. Del lado del integrador, lo único que hay que hacer es tratar la transición de estado como un evento rápido: sondeagetRpcPoolInfo (o suscríbete sobre gRPC, abajo) y cambia tu interfaz de la curva al pool CPMM resultante cuando status cambie.
Consulta products/launchlab/instructions para las listas de cuentas, la comisión de migración y cómo se divide el LP en la graduación.
Cobrar comisiones del creador
Fuente:src/launchpad/claimCreatorFee.ts (mint único) y collectAllCreatorFees.ts (por lotes)
El método es claimCreatorFee (y claimMultipleCreatorFee para la forma por lotes). Se indexa por el mint de cotización, no por un lanzamiento — una llamada barre las comisiones de creador acumuladas del firmante en ese mint en todos sus lanzamientos:
claimPlatformFee / claimAllPlatformFee / claimVaultPlatformFee.
Rastrear un lanzamiento a través de su ciclo de vida
Juntándolo todo, un script de monitoreo podría verse así:getRpcPoolInfo en un temporizador de 10 segundos está bien para un único lanzamiento. Para un indexador, usa la suscripción gRPC abajo en su lugar — getRpcPoolsInfo({ poolIdList }) agrupa por lotes, pero sondear cientos de pools aún quema créditos de RPC sin beneficio.
Ver configuraciones y pools sobre gRPC
Fuente:src/grpc/launchpadPoolInfo.ts
Se suscribe al programa LaunchLab sobre gRPC de Yellowstone y registra cada actualización de GlobalConfig y PoolState con el programa de token de cada mint. Dos filtros datasize en una suscripción accounts separan los dos tipos de cuenta, así que un único stream cubre ambos.
La demostración es la referencia más corta y correcta para clasificar los mints de un lanzamiento, lo que el lanzamiento de mint de cotización Token-2022 hace necesario:
- Los pools se clasifican directamente desde
PoolState.token_program_flag, decodificando bit0 para el mint base y bit1 para el mint de cotización sin ninguna búsqueda de mint en absoluto. Probar todo el byte contra0— que era suficiente mientras los mints de cotización eran solo heredados — malinterpreta un mint base heredado como Token-2022 siempre que el mint de cotización sea Token-2022. - Las configuraciones no se pueden clasificar de esa manera: una
GlobalConfigalmacena la dirección de su mint de cotización y ninguna bandera de programa, así que la demostración lee el propietario de la cuenta de mint una vez y lo almacena en caché por mint.
create versus update se infiere de los cachés propios de la demostración, sembrados al inicio desde getProgramAccounts; con esa siembra deshabilitada, lee “create” como “visto por primera vez en este stream”.
El acceso a gRPC no es parte de la superficie RPC pública — consulta el src/grpc/README.md del repositorio de demostración.
CPI de Rust
Llamar a LaunchLab desde tu propio programa Anchor es raro (la mayoría de las integraciones de lanzamiento son solo del lado de TS). Si lo haces:- El crate es
raydium-launchpad(nombre de libraydium_launchpad), versión0.2.0, y expone una característicacpi. No hayraydium_launchlab. - No se publica en crates.io — depende de él por revisión de git, de la misma manera que los otros crates del programa de Raydium.
- Los puntos de entrada de CPI se nombran según las instrucciones en cadena, no según los métodos de TypeScript del 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_cpswapestán restringidos por firmante a las billeteras de migración deGlobalConfigy no se pueden llamar desde un programa integrador.
sdk-api/rust-cpi para las reglas de fijación de crates — en particular la división de versión de Anchor, que decide si un crate puede hacer CPI tanto en LaunchLab como en CLMM.
Trampas
- Confundir nombres de instrucciones en cadena con nombres de métodos del SDK. El programa tiene
buy_exact_in/sell_exact_in; el SDK tienebuyToken/sellToken.buyExactInysellExactInexisten solo como métodos estáticos enCurve, y calculan una cotización — no construyen una transacción. - Olvidar
extraSigners.createLaunchpadcrea el mint base a partir de un keypair que generas, así que ese keypair tiene que firmar. OmiteextraSigners: [pair]y la transacción falla la verificación de firma. - No elegir el mint de cotización. No pasas uno. El mint de cotización es una propiedad de la
GlobalConfigque vinculas a través deconfigId—getPdaLaunchpadConfigId(programId, quoteMint, curveType, index). Para lanzar contra un mint de cotización diferente, vincula una configuración diferente;raydium.api.fetchLaunchConfigs()enumera las disponibles con sus parámetros predeterminados. - Tamaño de metadatos. Las cadenas
urilargas empujan el CPI de Metaplex sobre el presupuesto. Manténuribajo ~200 caracteres — la mayoría de los metadatos JSON alojados en CDN caben fácilmente.symboltiene un límite duro de 10 caracteres. - Tratar la graduación como una carrera en la que puedes entrar. No lo es — consulta la advertencia anterior. Tu interfaz aún debe tratar las transiciones de
statuscomo eventos rápidos, porque el crank de Raydium registra la migración dentro de segundos de que se cruce el umbral.
Dónde ir a continuación
products/launchlab/bonding-curve— matemática de la curva.products/cpmm/code-demos— qué hacer con el pool resultante.user-flows/launch-token-launchlab— la guía de lanzamiento de token de extremo a extremo, incluyendo pasos fuera de cadena.
- Raydium SDK v2
- Código fuente del programa Raydium LaunchLab

