Saltar al contenido principal

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.

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 →

Diseño de cuentas: ATAs del usuario en todo el camino

Cada variante de swap habilitada enruta tokens intermedios a través de ATAs controladas por el usuario. El usuario es propietario del ATA de entrada, cada ATA intermedio y el ATA de salida final. No hay una cuenta de token intermedio compartida ni propiedad del enrutador en la superficie activa. Propiedades:
  • El usuario es propietario de un ATA por cada token intermedio.
  • El usuario proporciona cada ATA en la lista de cuentas.
  • Cada ATA intermedio debe existir (inicialízalo con CreateSyncNative para wSOL, o a través del programa de Token de Cuenta Asociada del SPL para cualquier otro mint, antes de enrutar).
  • El enrutador transfiere desde un ATA al vault del siguiente pool en cada salto.
  • Cada ATA intermedio termina cada ruta con el mismo saldo con el que comenzó — la ruta consume lo que produjo el salto anterior.
Ejemplo de flujo para la ruta USDC → SOL → STEP:
Lista de cuentas:
  [
    USDC_input_ata (usuario, firmante),
    SOL_intermediate_ata (usuario),
    STEP_output_ata (usuario),
    token_program,

    amm_program_1, *amm1_accounts,    // salto 1: USDC → SOL
    amm_program_2, *amm2_accounts,    // salto 2: SOL → STEP
  ]

Salto 1: USDC_input_ata → AMM1 → SOL_intermediate_ata
Salto 2: SOL_intermediate_ata → AMM2 → STEP_output_ata

Diseño de cuentas por salto

Las cuentas de cada salto se pasan consecutivamente. El enrutador identifica el programa secundario leyendo la primera cuenta en el bloque de cada salto (el ID del programa) y luego distribuye al controlador correcto. Para cada salto, el enrutador espera cuentas agrupadas como:
[
  program_id,         // Identifica cuál programa de pool (AMM v4, CPMM, CLMM, Stable)
  *child_accounts,    // Todas las cuentas requeridas por la instrucción de swap de ese pool
]
Las cuentas secundarias varían según el tipo de pool:

Salto AMM v4

Aproximadamente 18 cuentas: pool, autoridad, vaults, mints, cuentas del mercado OpenBook (mantenidas en la lista de cuentas por compatibilidad hacia atrás aunque la integración de OpenBook de AMM v4 ya no está activa), programas de token. Consulta products/amm-v4/accounts para la lista completa.

Salto CPMM

Aproximadamente 11–13 cuentas: estado del pool, autoridad, vaults (2), mints (2), programas de token, programa del sistema, programa de token de cuenta asociada. Consulta products/cpmm/accounts.

Salto CLMM

Aproximadamente 15+ cuentas: pool, arrays de tick, vaults, mints, estado de observación, firmante, programas de token. Consulta products/clmm/accounts.

Salto Stable

Similar a AMM v4. Consulta products/stable/accounts.

Flujo de tokens y propiedad de ATA

  • El llamador firma con user_input_ata.
  • El llamador debe ser propietario de todos los ATAs de entrada, intermedios y salida. El enrutador rechazará la transacción si el propietario de cualquier ATA intermedio no es el firmante.
  • El saldo de user_input_ata del llamador debe ser suficiente para la entrada del primer salto (amount_in para etiqueta 0 / 8, o maximum_amount_in para etiqueta 1 / 9).
  • Cada ATA intermedio debe existir en la cadena. Si no existe, créalo de antemano — típicamente a través del programa de Token de Cuenta Asociada del SPL, o con CreateSyncNative (etiqueta 5) para un ATA wSOL.

La instrucción CreateSyncNative

Si necesitas enrutar a través de SOL envuelto y no quieres crear y sincronizar manualmente un ATA wSOL, usa CreateSyncNative (etiqueta 5):
CreateSyncNative(amount)
Esto crea un ATA wSOL bajo la cartera del llamador, transfiere amount de SOL a través del Sistema Program y lo sincroniza en una instrucción. Útil para inicializar un ATA wSOL nuevo antes de enrutar.

La instrucción CloseTokenAccount

Después de que se complete una ruta, es posible que quieras cerrar cualquier ATA intermedio — más comúnmente un ATA wSOL — para recuperar la renta. Usa CloseTokenAccount (etiqueta 6):
CloseTokenAccount
La cuenta de token debe tener un saldo de token cero antes de cerrarse; el enrutador no lo vaciará automáticamente por ti.

Próximos pasos