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 foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
O que é um IDL
Programas Anchor na Solana publicam um arquivo IDL (Interface Definition Language) descrevendo suas instruções, layouts de contas, enumeração de erros e esquemas de structs. O IDL é a fonte de verdade para geração de código cliente — o SDK TS, crate CPI Rust e clientes de terceiros são todos gerados a partir dele (ou escritos manualmente contra ele). A Raydium publica IDLs para CPMM, CLMM e LaunchLab. AMM v4, Stable AMM e Farm (v3 / v5 / v6) são anteriores a Anchor ou não são distribuídos por Anchor — suas estruturas de contas são mantidas manualmente no SDK.Onde encontrá-los
Os IDLs vivem em um repositório dedicado:| Programa | Arquivo IDL |
|---|---|
| CPMM | raydium_cpmm/raydium_cp_swap.json |
| CLMM | raydium_clmm/raydium_clmm.json |
| LaunchLab | raydium_launchpad/raydium_launchpad.json |
| AMM v4 | sem IDL oficial — veja raydium-sdk-V2/src/raydium/liquidity/layout.ts para layouts escritos manualmente |
| Stable AMM | sem IDL oficial — layouts no SDK |
| Farm | sem IDL oficial — layouts no SDK |
Regenerando um cliente TypeScript
A geração de código do Anchor produz um cliente digitado a partir do IDL:raydium.cpmm.swap(...) que envolve os métodos Anchor mais toda a contabilidade (criação de ATA, ajuste de taxa de transferência, budget de computação, roteamento de programa Token-2022). Regenere apenas quando você precisar de uma camada abaixo do SDK.
Regenerando um cliente Rust (crate CPI)
A Raydium publica crates Anchor para os programas que têm IDLs:cpi expõe structs de contas cpi::accounts::<Ix> e invocadores cpi::<ix>() — wrappers CPI prontos para usar. Veja sdk-api/rust-cpi para padrões de uso.
Se você preferir gerar associações frescas:
Regenerando um cliente Python
Não há SDK Python oficial da Raydium. Geradores de terceiros incluem:anchorpy— porta Python de@coral-xyz/anchor. Gera construtores de método digitados a partir de IDLs.solders— primitivas Solana de baixo nível (transações, keypairs, pubkeys) em associações Rust; usado por baixo deanchorpy.
sdk-api/python-integration para um guia mais completo.
Política de mudanças de IDL
A Raydium segue estas regras para estabilidade de IDL:- Discriminadores de instrução nunca mudam. Adicionar novas instruções estende o enum no final; discriminadores existentes permanecem estáveis.
- Layouts de struct de conta evoluem apenas aditivamente. Novos campos vão no final, precedidos por um aumento de tamanho no esquema on-chain. Campos existentes mantêm seus offsets.
- Códigos de enumeração de erro são append-only. Um código de erro existente sempre significa a mesma coisa.
- Mudanças quebradas são enviadas em novos programas. Quando uma reformulação é necessária, o time implanta um novo ID de programa (por exemplo, CPMM como um programa novo em vez de atualizar AMM v4). Pools antigos continuam a rodar no programa antigo; pools novos vão para o novo.
O que fazer quando o IDL muda
- Atualize o SDK.
npm update @raydium-io/raydium-sdk-v2. - Regenere seu código cliente se você usar a geração de código Anchor diretamente.
- Faça diff do layout da conta. Os campos finais do novo layout são a única coisa que seu código não viu; confirme se você precisa deles.
- Não assuma que discriminadores de instrução antigos são inválidos. De acordo com a regra 1, eles ainda funcionam.
- Re-execute testes de integração contra devnet antes de implantar em mainnet.
Solução de problemas de IDL
Erros “Invalid discriminator”
Geralmente significa que um cliente construído contra a versão N do IDL está tentando invocar uma instrução que existia apenas em uma versão anterior ao deploy do programa. Re-extraia o IDL do programa ativo:Falhas de decodificação de conta
Seprogram.account.<Name>.fetch(pubkey) lança um erro “Invalid account discriminator”, a conta foi criada por uma versão anterior do programa e o Anchor está rejeitando seu discriminador de 8 bytes. A solução é usar o analisador de layout bruto do SDK (PoolInfoLayout.decode(accountData)) que não força discriminadores Anchor.
Instruções ausentes no cliente gerado
A geração de código TS do Anchor só gera métodos para instruções cujas entradas IDL têm umname que funciona como um identificador válido. As instruções da Raydium todas satisfazem isso, mas se você vir uma discrepância, verifique se o arquivo IDL é da versão atual do SDK.
Referências
sdk-api/rust-cpi— usando os crates CPI Rust.sdk-api/python-integration— Python viaanchorpy.sdk-api/typescript-sdk— o cliente TS de nível superior.


