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 →
A divisão fundamental: programas versus contas
Programas
Um programa na Solana é código executável — um binário compilado carregado de um arquivo, implantado em umaPubkey, e invocável via transações. Programas não possuem estado associado; contêm apenas lógica.
Programas da Raydium:
- CPMM:
CPMMoo8L3F4NbTegBCKVNunggL7H1Zpdmwpwh8KMoZ0F - CLMM:
CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK - AMM v4:
675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8
Contas
Uma conta é uma linha de dados on-chain. Cada conta possui:pubkey— seu endereço.owner— o programa que a possui (controla escritas).data— os bytes brutos.lamports— saldo em SOL (1 SOL = 1.000.000.000 lamports).rent_epoch— campo legado de coleta de aluguel (ignorado desde que a isenção de aluguel se tornou obrigatória).
Propriedade
Cada conta é de propriedade de exatamente um programa. Apenas o código desse programa pode modificar o campodata da conta. Um usuário pode modificar lamports (enviar/receber SOL) em uma conta que possa assinar, mas modificar data requer que o programa proprietário faça isso em seu nome.
Exemplos:
- Sua carteira de usuário: de propriedade do Program de Sistema. Lamports vivem aqui; você assina para transferir.
- Sua conta de token USDC: de propriedade do Programa de Token SPL. A instrução
transferdo programa de token atualiza o saldo. - Uma conta de estado de pool da Raydium: de propriedade do programa CPMM. Apenas as instruções CPMM podem modificar as reservas, taxas, etc.
- O
PersonalPositionStatede um NFT de posição da Raydium: de propriedade do programa CLMM.
Aluguel e isenção de aluguel
Criar uma conta consome espaço de armazenamento. A Solana cobra aluguel por esse espaço, mas desde 2020 todas as novas contas devem ser isentas de aluguel — significando que possuem lamports suficientes para que o aluguel que deveriam ao longo de 2 anos seja pré-pago. Na prática:- Conta isenta de aluguel vive para sempre.
- Fechar a conta retorna os lamports para quem a fecha.
Custos de aluguel da Raydium
| Conta | Tamanho | Aluguel |
|---|---|---|
| CPMM PoolState | ~1.440 B | ~0,011 SOL |
| CLMM PoolState | ~1.500 B | ~0,012 SOL |
| CLMM TickArray | ~9.000 B | ~0,063 SOL |
| CLMM PersonalPositionState | ~280 B | ~0,003 SOL |
| ATA | 165 B | ~0,002 SOL |
| Vault (Conta de Token) | 165 B | ~0,002 SOL |
Contas de dados versus executáveis
Contas vêm em dois tipos:Contas de dados
Armazenam estado (reservas do pool, saldos de token, posições de usuário).executable = false. Esta é a grande maioria.
Contas executáveis
Armazenam bytecode do programa.executable = true. Estes são programas (CPMM, CLMM, etc.). Programas não possuem dados além de seu bytecode.
Contas derivadas do programa (PDAs)
Uma PDA é uma conta de dados cujo endereço é derivado deterministicamente de um programa e algumas sementes — nenhuma chave privada existe para este endereço. Apenas o programa de derivação pode assinar em nome de uma PDA viainvoke_signed.
A Raydium usa PDAs extensivamente:
- PDAs de estado de pool: derivados de
[poolTypeDiscriminator, mintA, mintB, ammConfig]. - PDAs de vault: derivados de
[pool, mint]. - PDA de estado de observação: derivado de
[observationSeed, pool].
solana-fundamentals/pdas-and-cpis.
Transações e referências de contas
Cada transação da Solana carrega uma lista explícita de contas que será lida/escrita. O tempo de execução impõe:- Contas listadas podem ser lidas ou escritas (de acordo com sua flag
is_writable). - Contas não listadas não podem ser tocadas.
Tamanho de conta e layout de dados
Cada conta da Raydium possui um tamanho fixo ou limitado. O layout é definido em código (structs Rust com#[repr(C)]) e documentado em sdk-api/anchor-idl.
Programas Anchor colocam um discriminador de 8 bytes no início de cada conta que criam, derivado de hash("account:<StructName>")[0..8]. Isto permite que clientes identifiquem o tipo de uma conta apenas lendo os primeiros 8 bytes — crucial para digitalizações getProgramAccounts que enumeram todas as contas de um tipo.
Lendo um estado de pool da Raydium
Via SDK:src/raydium/cpmm/layout.ts na fonte do SDK.
Exemplo prático: lendo uma conta de token
Vamos ler o saldo USDC de um usuário.Por que isto importa para a Raydium
O modelo de contas molda o design da Raydium:- O estado do pool é uma única conta — tudo sobre um pool (mints, reservas, taxas, administrador) vive em uma conta de propriedade do programa de pool.
- Tokens LP são contas de token SPL padrão — a Raydium delega a tokenização ao programa SPL Token.
- Arrays de ticks são divididos em chunks — CLMM não pode ter um único array crescente de ticks porque contas têm tamanho alocado fixo; em vez disso, usa PDAs de
TickArraydivididas em chunks. - NFTs de posição são NFTs Metaplex — posições CLMM são NFTs padrão per Metaplex; o estado de posição é uma PDA separada.
- “Onde estão as reservas do pool?” → duas contas de vault (contas de token) de propriedade do programa SPL Token, com autoridade delegada a uma PDA do programa de pool.
- “Onde estão os dados de ticks para CLMM?” → uma série de PDAs TickArray, cada uma cobrindo 60 ticks consecutivos.
- “Onde está meu stake em farm?” → uma PDA
UserLedgerderivada de[user, farmId], de propriedade do programa de farm.
Referências
solana-fundamentals/programs-and-anchor— como programas processam contas.solana-fundamentals/pdas-and-cpis— derivação de PDA e CPI.solana-fundamentals/transactions-and-fees— como contas são referenciadas em transações.sdk-api/anchor-idl— layouts de conta para os programas da Raydium.
- Documentação de Contas da Solana.
- Programa SPL Token — onde contas de token vivem.


