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 →
Los programas más recientes de Raydium (CPMM, CLMM, Farm v6, LaunchLab) están escritos en Anchor — un framework de Rust que se construye sobre el modelo de programa nativo de Solana para proporcionar validación de cuentas, manejo de errores e IDL (descripción de interfaz). AMM v4 y farms más antiguos son anteriores a Anchor. Entender ambos paradigmas te ayuda a leer el código, generar clientes desde el IDL y depurar errores inesperados.
Modelo de despliegue de programas
Todo programa de Solana reside en unaPubkey. El bytecode del programa se almacena en una cuenta ejecutable propiedad del BPF Upgradable Loader (BPFLoaderUpgradeab1e11111111111111111111111).
Un despliegue de programa comprende tres cuentas:
- Cuenta del programa: cuenta de metadatos pequeña en el ID del programa. Propietario: BPF Upgradable Loader.
- Cuenta ProgramData: contiene el bytecode real. Derivada como
[program_id, "programdata"]. - Cuenta Buffer (transitoria): contiene el nuevo bytecode durante una actualización. Se descarta después de la actualización.
security/admin-and-multisig.
Verificar un programa desplegado
Para confirmar que lo que está en-cadena coincide con lo que está en la fuente aprobada por auditoría:Anchor: un framework sobre Solana
Los programas de Solana sin procesar son funciones de Rust con esta firma:- Auto-genera un discriminador de 8 bytes determinista para cada instrucción y cada tipo de cuenta.
- Valida restricciones de cuenta (propietario, seeds, grabable, firmante, coincidencia de mint, coincidencia de programa de tokens) antes de que tu código se ejecute.
- Genera un IDL — un archivo de descripción de interfaz que los clientes usan para llamar al programa.
- Se envía con una librería de cliente en Rust, TypeScript y Python.
El discriminador de 8 bytes
Toda cuenta de Anchor y toda instrucción de Anchor comienza con un discriminador de 8 bytes — los primeros 8 bytes de SHA-256 de una cadena fija:getProgramAccounts que enumeran todas las cuentas de un tipo.
Errores
Los programas de Anchor definen errores a través de#[error_code]:
reference/error-codes.
El IDL
Un archivo IDL (Interface Description Language) de Anchor es una descripción JSON de un programa: sus instrucciones, cuentas, tipos, errores y eventos. Es el equivalente de un ABI de Ethereum. Raydium publica IDLs para todos los programas de Anchor. Obtén en vivo desde la cadena:src/raydium/*/idl/*.json.
Estructura del IDL
Generar un cliente desde el IDL
El CLIanchor de Anchor genera tipos de TypeScript y Rust:
Cuándo el IDL es tu aliado
Si quieres construir una integración personalizada que no pase por el SDK de Raydium:- Obtén el IDL (en vivo desde la cadena o desde la fuente del SDK).
- Busca la instrucción que deseas (p. ej.,
swap_base_input). - Construye los datos de instrucción: discriminador de 8 bytes + args codificados.
- Pasa cuentas en el orden que especifica el IDL.
sdk-api/anchor-idl para ejemplos desarrollados.
Programas anteriores a Anchor: AMM v4 y Farm v3/v5
Estos programas son anteriores a Anchor. Utilizan:- Envío manual de instrucciones: una etiqueta
u8eninstruction_datacon una declaraciónmatch. - Validación manual de cuentas:
if accounts[0].owner != &expected_program { ... }. - Args de instrucción serializados con Borsh: sin discriminador, solo
instruction_data[1..]. - Diseño a través de
#[repr(C, packed)]: diseño binario de estructura C.
Mecánica de actualización de programas
Solo laupgrade_authority de ProgramData puede actualizar. Pasos:
- Compilar el nuevo bytecode.
- Escribirlo en una cuenta buffer (
solana program write-buffer). - Enviar una instrucción de actualización:
BpfLoaderUpgradeable::Upgrade { buffer, program, authority }. - El tiempo de ejecución reemplaza atómicamente el bytecode del programa con el contenido del buffer.
security/admin-and-multisig.
Hacer un programa inmutable
Una autoridad de actualización puede establecerse enNone, punto en el cual el programa se vuelve permanentemente inmutable. Raydium no ha hecho esto para ningún producto — el equipo retiene la capacidad de enviar correcciones de seguridad. Compensación: los usuarios deben confiar en el proceso de multifirma + candado de tiempo.
Programas y renta
Desplegar un programa consume lamports exentos de renta:- Un programa de 50 KB: ~0.35 SOL en renta.
- Un programa de 200 KB: ~1.4 SOL en renta.
solana program close) devuelve los lamports. Los programas de Raydium permanecen activos y no están programados para cerrarse.
Depuración de programas de Anchor
Salida de registro
La macromsg! de Anchor escribe en el registro de la transacción. Simula una transacción para ver registros:
- Invocación de programa (
Program CPMMoo8... invoke [1]). - Llamadas
msg!desde el código del programa. - Consumo de unidades de cómputo (
consumed 137842 of 400000 compute units). - Éxito o error del programa.
Códigos de error
Si un programa de Anchor lanza, el registro muestra:SlippageExceeded). Haz referencia cruzada con la matriz errors del IDL.
Consulta reference/error-codes para la tabla de errores completa de Raydium.
Desajustes de diseño de cuenta
Si pasas la cuenta equivocada en el slot equivocado, las macros de validación de cuenta de Anchor devuelven errores como:ErrorCode de Anchor); los errores ≥6000 son los códigos personalizados del programa.
Enlaces
solana-fundamentals/account-model— cómo los programas poseen cuentas.solana-fundamentals/pdas-and-cpis— PDAs como los declara Anchor.sdk-api/anchor-idl— obtener y usar IDLs de Raydium.reference/program-addresses— IDs de programas.reference/error-codes— referencia de códigos de error.security/admin-and-multisig— controles de autoridad de actualización.
- Libro de Anchor.
- Despliegue de programas de Solana.
- IDLs de Raydium (publicados en SDK
src/raydium/*/idl/*.json).


