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 →
Os programas mais recentes da Raydium (CPMM, CLMM, Farm v6, LaunchLab) são escritos em Anchor — um framework Rust que expande o modelo de programa nativo do Solana para fornecer validação de conta, tratamento de erros e um IDL (interface description). AMM v4 e farms antigas precedem o Anchor. Compreender ambos os paradigmas ajuda você a ler o código, gerar clientes a partir do IDL e depurar erros inesperados.
Modelo de implantação de programas
Todo programa Solana reside em umaPubkey. O bytecode do programa é armazenado em uma conta executável pertencente ao BPF Upgradable Loader (BPFLoaderUpgradeab1e11111111111111111111111).
Uma implantação de programa compreende três contas:
- Conta de programa: pequena conta de metadados no ID do programa. Proprietário: BPF Upgradable Loader.
- Conta ProgramData: contém o bytecode real. Derivada como
[program_id, "programdata"]. - Conta Buffer (transitória): contém novo bytecode durante uma atualização. Descartada após a atualização.
security/admin-and-multisig.
Verificando um programa implantado
Para confirmar que o que está na chain corresponde ao que foi aprovado na auditoria:Anchor: um framework sobre Solana
Programas Solana brutos são funções Rust com esta assinatura:- Gera automaticamente um discriminador determinístico de 8 bytes para cada instrução e tipo de conta.
- Valida restrições de conta (proprietário, seeds, escrita, assinante, compatibilidade de mint, compatibilidade de programa de token) antes do seu código ser executado.
- Gera um IDL — um arquivo de descrição de interface que clientes usam para chamar o programa.
- Vem com uma biblioteca de cliente Rust, TypeScript e Python.
O discriminador de 8 bytes
Toda conta Anchor e toda instrução Anchor começam com um discriminador de 8 bytes — os primeiros 8 bytes do SHA-256 de uma string fixa:getProgramAccounts que enumeram todas as contas de um tipo.
Erros
Programas Anchor definem erros via#[error_code]:
reference/error-codes.
O IDL
Um arquivo IDL (Interface Description Language) do Anchor é uma descrição JSON de um programa: suas instruções, contas, tipos, erros e eventos. É o equivalente de um ABI Ethereum. A Raydium publica IDLs para todos os programas Anchor. Busque ao vivo da chain:src/raydium/*/idl/*.json.
Estrutura do IDL
Gerando um cliente a partir do IDL
A CLIanchor do Anchor gera tipos TypeScript e Rust:
Quando o IDL é seu amigo
Se você quer construir uma integração customizada que não passa pelo SDK Raydium:- Busque o IDL (ao vivo da chain ou da fonte do SDK).
- Procure a instrução que deseja (ex.,
swap_base_input). - Construa os dados da instrução: discriminador de 8 bytes + args codificados.
- Passe contas na ordem que o IDL especifica.
sdk-api/anchor-idl para exemplos elaborados.
Programas pré-Anchor: AMM v4 e Farm v3/v5
Estes programas precedem Anchor. Eles usam:- Dispatch de instrução manual: uma tag
u8eminstruction_datacom uma declaraçãomatch. - Validação de conta manual:
if accounts[0].owner != &expected_program { ... }. - Args de instrução serializados por Borsh: sem discriminador, apenas
instruction_data[1..]. - Layout via
#[repr(C, packed)]: layout de struct C binário.
Mecânica de atualização de programas
Apenas aupgrade_authority da ProgramData pode atualizar. Passos:
- Compilar o novo bytecode.
- Escrevê-lo em uma conta buffer (
solana program write-buffer). - Enviar uma instrução de atualização:
BpfLoaderUpgradeable::Upgrade { buffer, program, authority }. - O runtime substitui atomicamente o bytecode do programa pelo conteúdo do buffer.
security/admin-and-multisig.
Tornando um programa imutável
Uma autoridade de atualização pode ser definida comoNone, ponto em que o programa se torna permanentemente imutável. A Raydium não fez isso para nenhum produto — a equipe retém a capacidade de enviar correções de segurança. Trade-off: usuários devem confiar no processo multisig + timelock.
Programas e aluguel
Implantar um programa consome lamports isentos de aluguel:- Um programa de 50 KB: ~0,35 SOL em aluguel.
- Um programa de 200 KB: ~1,4 SOL em aluguel.
solana program close) retorna os lamports. Os programas Raydium permanecem ativos e não estão agendados para encerramento.
Depurando programas Anchor
Saída de log
A macromsg! do Anchor escreve no log da transação. Simule uma transação para ver logs:
- Invocação de programa (
Program CPMMoo8... invoke [1]). - Chamadas
msg!do código do programa. - Consumo de unidade de computação (
consumed 137842 of 400000 compute units). - Sucesso ou erro do programa.
Códigos de erro
Se um programa Anchor lança, o log mostra:SlippageExceeded). Consulte cruzadamente com o array errors do IDL.
Veja reference/error-codes para a tabela completa de erros da Raydium.
Incompatibilidades de layout de conta
Se você passar a conta errada no slot errado, as macros de validação de conta do Anchor retornam erros como:ErrorCode do Anchor); erros ≥6000 são códigos customizados do programa.
Referências
solana-fundamentals/account-model— como programas possuem contas.solana-fundamentals/pdas-and-cpis— PDAs conforme Anchor declara.sdk-api/anchor-idl— buscando e usando IDLs da Raydium.reference/program-addresses— IDs de programas.reference/error-codes— referência de códigos de erro.security/admin-and-multisig— controles de autoridade de atualização.
- Livro Anchor.
- Implantação de programa Solana.
- IDLs Raydium (publicados em SDK
src/raydium/*/idl/*.json).


