Skip to main content
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.Fija la versión del SDK en tu package.json. La interfaz de la curva de vinculación ha evolucionado entre versiones menores.

Configuración

Las demostraciones aquí reflejan archivos en raydium-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:
Notas:
  • No hay argumento curveType, graduationFractionBps, initialK, quoteMint, openTime, fees o postGraduationLpPolicy. La forma de la curva y el mint de cotización son propiedades de la GlobalConfig que vinculas; las tasas de comisión viven en GlobalConfig y PlatformConfig; la disposición de LP en la graduación es una configuración de PlatformConfig. Consulta products/launchlab/instructions para ver exactamente qué acepta InitializeV2.
  • Un symbol más largo que 10 caracteres y un uri vacío se rechazan del lado del cliente antes de cualquier RPC.
  • Pasar transferFeeExtensionParams cambia el constructor a InitializeWithToken2022 y fuerza migrateType a "cpmm".
  • El constructor devuelve un array transactions; createOnly: false añade la transacción de primera compra. Siempre ejecuta execute({ 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:
Puedes pasar 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 es buyTokenExactOut, 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.
Útil para interfaces de “comprar exactamente X tokens”. El constructor rechaza un 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.
La ruta de venta de la curva es simétrica a la ruta de compra: reducir 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

La graduación no es algo que un integrador pueda activar. No hay raydium.launchpad.graduate, no hay bandera autoGraduate en los constructores de compra, y no hay campo willGraduate en su valor de retorno. En cadena, la graduación es MigrateToCpswap (o el legado MigrateToAmm), y ambas instrucciones restringen su firmante a una billetera registrada en la GlobalConfig vinculada — migrate_to_cpswap_wallet y migrate_to_amm_wallet respectivamente. Una llamada desde cualquier otro firmante falla con InvalidOwner. No es sin permisos, y ningún bot de MEV puede competir por ella.
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: sondea getRpcPoolInfo (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:
Transfiere el contador de comisión del creador acumulado al ATA del creador en el mint de cotización. Se puede llamar antes o después de la graduación; úsalo periódicamente en lugar de esperar a que se acumule un saldo enorme. Los operadores de plataforma tienen los constructores paralelos 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í:
Sondear 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 contra 0 — 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 GlobalConfig almacena 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.
También hace una verificación cruzada de los dos entre sí, que es una aserción útil para mantener en tu propio indexador. Ten en cuenta que 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 lib raydium_launchpad), versión 0.2.0, y expone una característica cpi. No hay raydium_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_cpswap están restringidos por firmante a las billeteras de migración de GlobalConfig y no se pueden llamar desde un programa integrador.
Consulta 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 tiene buyToken / sellToken. buyExactIn y sellExactIn existen solo como métodos estáticos en Curve, y calculan una cotización — no construyen una transacción.
  • Olvidar extraSigners. createLaunchpad crea el mint base a partir de un keypair que generas, así que ese keypair tiene que firmar. Omite extraSigners: [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 GlobalConfig que vinculas a través de configId — 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 uri largas empujan el CPI de Metaplex sobre el presupuesto. Mantén uri bajo ~200 caracteres — la mayoría de los metadatos JSON alojados en CDN caben fácilmente. symbol tiene 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 status como 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

Fuentes: