> ## Documentation Index
> Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 2026-08-24 — LaunchLab: mints de cotización Token-2022

> LaunchLab acepta mints de cotización Token-2022 en configuración, creación de pools, swaps, reclamación de comisiones y migración CPMM. Los límites de slippage de swap ahora cotizan la comisión de transferencia del lado de la cotización, el bit1 de PoolState.token_program_flag se vuelve significativo, y MigrateToCpswap renombra sus dos cuentas de token-program.

<Info>
  **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 →](/reference/changelog/2026-08-24-launchlab-token2022-quote-mint)
</Info>

<Info>
  Esta entrada cubre una próxima actualización del programa LaunchLab. Fue verificada contra la rama de lanzamiento local antes del despliegue. Confirma el programa desplegado e IDL publicado antes de habilitar las nuevas rutas en producción.
</Info>

Este lanzamiento permite que un launch sea cotizado en un mint Token-2022. Hasta ahora el lado de la cotización estaba cableado al programa SPL Token heredado, por lo que solo el mint base podía ser Token-2022. En cada lugar donde se toca el mint de cotización — creación de `GlobalConfig`, inicialización de pool, las cuatro instrucciones de swap, todas las reclamaciones de comisiones y migración CPMM — ahora se acepta cualquiera de los dos programas de token, y las instrucciones de swap tienen en cuenta la comisión de transferencia del mint de cotización.

## TL;DR para integradores

* **Los mints de cotización pueden ser Token-2022.** `CreateConfig` acepta un `quote_token_mint` Token-2022, e `InitializeV2` / `InitializeWithToken2022` aceptan cualquiera de los dos programas de token en la ranura de quote-program. El orden de cuentas no cambia — el valor que pasas en esa ranura sí.
* **El `Initialize` deprecado sigue siendo solo heredado.** Su cuenta quote-program sigue tipada a SPL Token, por lo que una configuración cuyo mint de cotización es Token-2022 solo puede lanzarse a través de `InitializeV2` o `InitializeWithToken2022`.
* **Los límites de slippage se mueven a lo que el pagador realmente paga y recibe.** `minimum_amount_out` y `maximum_amount_in` ahora se comparan contra la cantidad neta de la comisión de transferencia del mint de cotización, no contra la cantidad que movió el vault. La lógica de cotización existente subestima el costo y sobrestima los ingresos en un mint de cotización que carga comisiones.
* **El bit1 de `PoolState.token_program_flag` se vuelve significativo.** Siempre fue `0` mientras los mints de cotización eran solo heredados. Los clientes que comparan todo el byte contra `0` ahora leerán un mint base heredado como Token-2022 siempre que el mint de cotización sea Token-2022. Este es el quiebre silencioso más probable en este lanzamiento.
* **`MigrateToCpswap` renombra sus dos cuentas de token-program.** `base_token_program` / `quote_token_program` se convierten en `token_program` / `token_program_2022`. Ambas siempre son requeridas, y el programa elige la correcta por mint.
* **Los pares mint/programa ahora se validan.** Ambos mints de swap ganaron una restricción `mint::token_program`, al igual que el mint de cotización de `ClaimPlatformFee`, por lo que un par desajustado se revierte en lugar de ser ignorado.
* **Nuevo error `6023` `CalculateOverflow`.** Los códigos `6000`–`6022` no cambian. `6023` fue desocupado por el lanzamiento anterior y ahora se reutiliza.
* **Los vaults de comisión siguen el mint de cotización.** Los vaults de comisión del creador y la plataforma, y la cuenta de token del receptor de comisión de participación, viven en cualquier programa que sea propietario del mint de cotización.

## Qué cuentas cambiaron de tipo

Ninguna de estas cambia de posición en su lista de cuentas. Solo el valor permitido cambia.

| Instrucción                                                          | Cuenta                | Antes          | Después                    |
| -------------------------------------------------------------------- | --------------------- | -------------- | -------------------------- |
| `CreateConfig`                                                       | `quote_token_mint`    | mint SPL Token | mint de cualquier programa |
| `InitializeV2`                                                       | `quote_token_program` | SPL Token      | cualquier programa         |
| `InitializeWithToken2022`                                            | `quote_token_program` | SPL Token      | cualquier programa         |
| `BuyExactIn` / `BuyExactOut` / `SellExactIn` / `SellExactOut`        | `quote_token_program` | SPL Token      | cualquier programa         |
| `CollectFee` / `CollectMigrateFee`                                   | `token_program`       | SPL Token      | cualquier programa         |
| `ClaimCreatorFee` / `ClaimPlatformFee` / `ClaimPlatformFeeFromVault` | `token_program`       | SPL Token      | cualquier programa         |

`Initialize` (la ruta V1 deprecada) deliberadamente no está en esta tabla. Su cuenta quote-program sigue tipada a SPL Token.

Varios de estos también endurecieron sus restricciones de mint, por lo que un par mint/programa desajustado ahora se revierte donde fue previamente aceptado o no verificado:

* Las cuatro instrucciones de swap restringen tanto `base_token_mint` como `quote_token_mint` al programa pasado en la ranura correspondiente. Ninguno llevaba esa restricción antes, por lo que un programa base incorrecto fue silenciosamente aceptado.
* `ClaimPlatformFee` añade la misma restricción en `quote_mint`.
* `ClaimPlatformFeeFromVault` corrige su restricción de una forma de cuenta de token a la forma de mint en lo que es una cuenta de mint.

## Contabilidad de comisión de transferencia del lado de la cotización

Esta es la parte que cambia números en lugar de listas de cuentas. En un mint de cotización sin `TransferFeeConfig` cada fórmula abajo colapsa al comportamiento anterior, por lo que los pools heredados y los pools Token-2022 sin comisión son bit-por-bit sin cambios.

| Instrucción    | Qué significa el argumento ahora                                                                                                                                                                                                                                                   |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `BuyExactIn`   | `amount_in` es el débito bruto. La curva se cotiza en `amount_in − transfer_fee(amount_in)`, que es lo que llega al vault. En un llenado completo al pagador se le cobra exactamente `amount_in`; en un llenado parcial el cargo es la cantidad de vault consumida bruta de nuevo. |
| `BuyExactOut`  | `maximum_amount_in` se compara contra la cantidad del vault **más** la comisión de transferencia inversa — el débito real — en lugar de solo la cantidad del vault.                                                                                                                |
| `SellExactIn`  | `minimum_amount_out` se compara contra lo que le queda al vendedor después de que el mint retiene su comisión, no contra la cantidad bruta liberada del vault.                                                                                                                     |
| `SellExactOut` | `amount_out` es lo que el vendedor termina recibiendo. La curva apunta a `amount_out` más la comisión de transferencia inversa, por lo que la cantidad solicitada llega exactamente.                                                                                               |

Dos consecuencias que vale la pena enunciar claramente:

* Un límite calculado a partir de un pool equivalente sin comisión ya no es aceptable. `BuyExactOut` con el costo sin comisión como `maximum_amount_in` ahora se revierte con `ExceededSlippage`, y lo mismo hace `SellExactIn` con los ingresos sin comisión como `minimum_amount_out`. Ese es el comportamiento previsto — la comparación anterior permitía que al pagador se le debitara la comisión de transferencia además de un límite al que ya había acordado.
* El libro del pool solo registra lo que llegó al vault. Después de un `BuyExactIn` de `amount_in` en un mint de cotización del 5%, `real_quote` avanza por `amount_in × 0.95`, no `amount_in`.

`get_transfer_inverse_fee` también eliminó su caso especial para un mint con comisión del 100%: en lugar de retroceder a `maximum_fee`, ahora devuelve el nuevo error `CalculateOverflow` cuando la comisión inversa no puede ser calculada. Un mint de cotización en `10000` puntos base por lo tanto falla las rutas exactas de salida en lugar de transaccionar silenciosamente en el límite de comisión.

## Bit1 de `token_program_flag`

`PoolState.token_program_flag` es un campo de bits, y siempre lo ha sido:

```text theme={null}
bit0  mint base    0 = SPL Token, 1 = Token-2022
bit1  mint cotización 0 = SPL Token, 1 = Token-2022
```

El campo, las posiciones de bits y el código que escribe ambos bits todos preceden a este lanzamiento. Lo que cambia es que bit1 ahora puede ser realmente `1`, porque un mint de cotización ahora puede ser un mint Token-2022. Los cuatro valores son:

| Valor | Mint base  | Mint cotización |
| ----- | ---------- | --------------- |
| `0`   | SPL Token  | SPL Token       |
| `1`   | Token-2022 | SPL Token       |
| `2`   | SPL Token  | Token-2022      |
| `3`   | Token-2022 | Token-2022      |

Lee el programa de cada mint con `(token_program_flag >> bit) & 1`. Cualquier cliente que trate el byte como un booleano para el mint base — `flag === 0 ? Token : Token-2022` — resuelve el valor `2` a un mint base Token-2022 y construirá la cuenta de token del lado base y la transferencia contra el programa incorrecto. Sin cambios de tamaño de cuenta o desplazamiento de campo, por lo que los indexadores no necesitan migración de almacenamiento, solo una corrección de decodificación.

## Renombramiento de cuenta de migración CPMM

`MigrateToCpswap` previamente tomaba un programa de token por mint, y el llamador decidía cuál era cuál. Ahora toma ambos programas incondicionalmente y deriva el mapeo de los mints mismos:

| Posición                  | Antes                                                                         | Después                                                  |
| ------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------- |
| primer programa de token  | `base_token_program` — cualquier programa que fuera propietario del mint base | `token_program` — siempre el programa SPL Token heredado |
| segundo programa de token | `quote_token_program` — siempre el programa SPL Token heredado                | `token_program_2022` — siempre el programa Token-2022    |

Las dos posiciones no cambian, por lo que este es un cambio de valor, no un cambio de diseño — pero los valores están casi invertidos, y un constructor que siga pasando su par antiguo pasará Token-2022 donde el programa heredado es requerido tan pronto como cualquiera de los mints sea un mint Token-2022.

El programa heredado sigue siendo requerido incondicionalmente independientemente de cualquiera de los mints, porque el mint LP de CPMM y el NFT de Fee Key de liquidez bloqueada siempre viven en él. El diseño de `remaining_accounts` del [lanzamiento 2026-08-17](/es/reference/changelog/2026-08-17-launchlab-cpmm-only-platform-config) no cambia.

## Los mints de cotización son admitidos solo por discreción del administrador

A diferencia de CPMM y CLMM, LaunchLab **no** ejecuta ninguna lista de permitidos de extensión contra un mint de cotización. `CreateConfig` acepta la cuenta de mint tal como está, por lo que la única puerta es qué mints un administrador vincula a un `GlobalConfig`. La verificación `NoSupportExtension` del programa se aplica únicamente a los mints base Token-2022 que LaunchLab crea por sí mismo, donde solo `MetadataPointer` y `TransferFeeConfig` están permitidos.

Trata la vinculación de un mint de cotización Token-2022 como una acción de alta confianza con el mismo razonamiento que las listas blancas estáticas CPMM/CLMM en [`reference/token-2022-support`](/es/reference/token-2022-support). Un mint de cotización `TransferHook` o `PermanentDelegate` sería admitido en el momento de la creación de configuración y luego se ejecutaría en, o sería capaz de barrer, cada pool cotizado en él.

## Puerta de marca de tiempo `amm_creator_fee_on`

`InitializeV2` elimina la puerta de marca de tiempo que rechazaba cualquier `amm_creator_fee_on` que no fuera `BothToken` antes de la marca de tiempo de actualización. La puerta equivalente sigue presente en `InitializeWithToken2022`. En la práctica ambas rutas aceptan cualquiera de los dos valores en mainnet-beta hoy, porque esa marca de tiempo (`1755522000`, 2025-08-18 13:00 UTC) está muy en el pasado — esto es limpieza, no un cambio de comportamiento para los llamadores actuales.

## Impacto de error e IDL

Los códigos `6000`–`6022` no cambian, incluyendo `6022` `InvalidPlatformAllowConfig`.

| Código | Nombre              | Significado                                                                                           |
| ------ | ------------------- | ----------------------------------------------------------------------------------------------------- |
| 6023   | `CalculateOverflow` | Un cálculo de comisión de transferencia o comisión de transferencia inversa no pudo ser representado. |

El lanzamiento anterior retiró el antiguo `6023` y lo dejó vacante; este lanzamiento reutiliza el número. No decodifiques `6023` con un IDL de ninguna versión anterior.

Actualiza el IDL de LaunchLab antes de pasar un programa de cotización Token-2022, decodificar el bit1 de `token_program_flag`, o construir la lista de cuentas `MigrateToCpswap` renombrada.

## Impacto del SDK

El lado de cotización del módulo launchpad del SDK estaba codificado a `TOKEN_PROGRAM_ID` en los mismos lugares que el programa. La rama que acompaña este lanzamiento resuelve el propietario del mint de cotización en su lugar, lo hila a través de la creación de cuenta de token, el ATA del receptor de comisión de participación, y la ranura de quote-program de la instrucción, y añade un `transferFeeConfigB` opcional a los cuatro métodos `Curve` para que las cotizaciones reflejen las fórmulas anteriores. Los resultados de `Curve` ganan un campo `transferFeeB`; `amountB` mantiene su significado — lo que el pagador gasta o el vendedor recibe — por lo que un mint de cotización sin comisión produce números idénticos a antes.

Estos cambios del SDK no están lanzados. El pin canónico en las páginas de demostración de código en este conjunto de documentación no cambia; verifica la versión publicada antes de confiar en los nuevos parámetros.

## Implementación de referencia

Una nueva demostración se suscribe al programa LaunchLab sobre gRPC de Yellowstone y registra, para cada actualización de `GlobalConfig` y `PoolState`, si cada mint es un mint Token o Token-2022:

[`raydium-sdk-V2-demo/src/grpc/launchpadPoolInfo.ts`](https://github.com/raydium-io/raydium-sdk-V2-demo/blob/master/src/grpc/launchpadPoolInfo.ts)

Es una referencia compacta para dos cosas que este lanzamiento hace necesarias. Los pools se clasifican directamente desde `token_program_flag`, decodificando ambos bits sin ninguna búsqueda de mint en absoluto — esa es la corrección para el quiebre de bit1 descrito anteriormente. Las configuraciones no pueden ser clasificadas de esa manera, porque un `GlobalConfig` almacena solo la dirección de su mint de cotización y ninguna bandera de programa, por lo que la demostración lee la cuenta de mint del propietario una vez y la almacena en caché por mint. Ver ambas rutas una al lado de la otra es la forma más rápida de verificar tu propio decodificador.

Ver [`products/launchlab/code-demos`](/es/products/launchlab/code-demos#watch-configs-and-pools-over-grpc) para el recorrido.

## Páginas actualizadas

* `products/launchlab/accounts` — programa de token de mint de cotización, diseño de bits de `token_program_flag`, y propiedad del vault.
* `products/launchlab/instructions` — cuentas de quote-program, semántica de slippage de swap, y cuentas de migración renombradas.
* `products/launchlab/global-config` — `quote_mint` puede ser un mint Token-2022, y qué lo controla y qué no.
* `products/launchlab/code-demos` — el observador de config/pool de gRPC.
* `reference/token-2022-support` — fila de LaunchLab y sección de mint de cotización.
* `reference/error-codes` — `6023` `CalculateOverflow`.
