Skip to main content
Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
Banner de versão. Todos os exemplos TypeScript têm como alvo @raydium-io/raydium-sdk-v2@0.2.42-alpha contra Solana mainnet-beta, verificado em 2026-04. O esqueleto Rust com CPI tem como alvo raydium-cp-swap no branch master, Anchor 0.30.x. Os IDs do programa são obtidos via constantes de reference/program-addresses.

Pré-requisitos

Cada exemplo nesta página espelha um arquivo em raydium-sdk-V2-demo/src/cpmm; o link do GitHub fica ao lado de cada seção. A inicialização segue o config.ts.template do repositório de demos (fonte):
A instância Raydium é a fachada do SDK — todos os exemplos abaixo a usam. Ela busca lazily listas de tokens e configurações de taxas de api-v3.raydium.io; você pode preenchê-la com seus próprios dados em ambientes offline.

Criar um pool CPMM

Fonte: src/cpmm/createCpmmPool.ts
Algumas coisas que o SDK cuida silenciosamente:
  • Ordena os mints em ordem token0/token1 antes de derivar a PDA.
  • Paga a create_pool_fee única para poolFeeAccount.
  • Cria as contas de token associadas do chamador, se ausentes.
  • Escolhe o programa de token correto (SPL Token vs Token-2022) por lado.
Após confirmação, você pode buscar o estado do pool ao vivo com:

Swap (entrada de base)

Fonte: src/cpmm/swap.ts
Nota: o SDK sempre re-busca o estado do pool de um RPC dentro de getPoolInfoFromRpc. Não faça cotação a partir de api-v3.raydium.io para uma transação que você está prestes a assinar — uma cotação que está com um bloco de atraso pode cair em ExceededSlippage no momento do land.

Swap (saída de base)

Fonte: src/cpmm/swapBaseOut.ts

Depositar liquidez

Fonte: src/cpmm/deposit.ts
O SDK converte lpAmount em needed_token_0 e needed_token_1 usando as reservas atuais do pool, infla cada uma por 1 + slippage para os argumentos maximum_* da instrução e constrói as criações de ATA se necessário.

Sacar liquidez

Fonte: src/cpmm/withdraw.ts

Coletar taxas de protocolo/fundo/criador

Fonte: src/cpmm/collectCreatorFee.ts, src/cpmm/collectAllCreatorFee.ts Estas instruções são controladas por admin ou criador e normalmente invocadas por um signatário mantido pela multisig Raydium ou pelo criador do pool. O SDK as expõe como construtores brutos:
Off-chain você pode ler taxas acumuladas diretamente de PoolState:

Esqueleto Rust com CPI

Se você quer invocar CPMM de seu próprio programa Anchor — por exemplo, um vault que faz swap em nome de seus depositantes — o contexto de CPI se parece com isto. A ordem das contas segue products/cpmm/instructions.
Se seu CPI assina como uma PDA (por exemplo, você gerencia um vault em nome de depositantes), troque CpiContext::new por CpiContext::new_with_signer e passe suas seeds.

Armadilhas comuns

Um checklist breve antes de abrir um ticket de suporte:
  • Mints ordenados. Se sua PDA de poolState derivada não corresponder ao pool on-chain, você provavelmente esqueceu de ordenar os mints.
  • Cotação da API obsoleta. Nunca passe um valor de reserva de api-v3.raydium.io para CurveCalculator.swap. Busque de um RPC.
  • Programa de token errado. O vault de um mint Token-2022 é possuído pelo programa Token-2022, não pelo SPL Token. Sempre use os campos token_0_program / token_1_program do pool.
  • Slippage subenominado para mints com taxa de transferência. Se qualquer lado do pool for um mint Token-2022 com taxa de transferência, seu minimum_amount_out deve ser denominado no que o usuário realmente recebe, não no que o vault envia.
  • NotApproved em um swap. Verifique PoolState.status — o admin pode ter pausado swaps naquele pool. Veja products/cpmm/instructions para a máscara de status.

Para onde ir em seguida

Fontes: