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. Todas as demonstrações TypeScript visam
@raydium-io/raydium-sdk-v2@0.2.42-alpha contra Solana mainnet-beta, verificado em 2026-04. O esqueleto CPI em Rust visa raydium-cp-swap no branch master, Anchor 0.30.x. Os IDs de programa são obtidos via constantes de reference/program-addresses.Pré-requisitos
raydium-sdk-V2-demo/src/cpmm; o link do GitHub fica ao lado de cada seção. O bootstrap segue o config.ts.template do repositório de demonstração (fonte):
Raydium é a fachada do SDK — cada demonstração abaixo a utiliza. Ela busca preguiçosamente listas de tokens e configurações de taxas de api-v3.raydium.io; você pode alimentá-la com seus próprios dados em ambientes offline.
Criar um pool CPMM
Fonte:src/cpmm/createCpmmPool.ts
- Ordenar os mints em ordem token0/token1 antes de derivar o PDA.
- Pagar a
create_pool_feeúnica parapoolFeeAccount. - Criar as contas de token associadas do chamador se estiverem faltando.
- Escolher o programa de token correto (SPL Token vs Token-2022) por lado.
Swap (entrada base)
Fonte:src/cpmm/swap.ts
getPoolInfoFromRpc. Não faça cotações de api-v3.raydium.io para uma transação que você está prestes a assinar — uma cotação que está um bloco desatualizada pode resultar em ExceededSlippage no momento do envio.
Swap (saída base)
Fonte:src/cpmm/swapBaseOut.ts
Depositar liquidez
Fonte:src/cpmm/deposit.ts
lpAmount em needed_token_0 e needed_token_1 usando as reservas atuais do pool, infla cada um 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
A coleta de protocolo e fundo permanece protegida por autoridade. As taxas do criador têm dois caminhos: o CollectCreatorFee assinado pelo criador existente e o aditivo CollectCreatorFeePermissionless, que qualquer pagador pode invocar, mas que pode transferir apenas para as ATAs canônicas do criador. O SDK fixado expõe os construtores brutos existentes:
PoolState:
Esqueleto CPI em Rust
Se você quiser invocar CPMM a partir do seu próprio programa Anchor — por exemplo, um vault que faz swap em nome de seus depositantes — o contexto CPI fica assim. A ordem das contas segueproducts/cpmm/instructions.
CpiContext::new por CpiContext::new_with_signer e passe suas sementes.
Armadilhas comuns
Uma lista de verificação rápida antes de abrir um ticket de suporte:- Mints ordenados. Se seu PDA
poolStatederivado não corresponder ao pool on-chain, você provavelmente esqueceu de ordenar os mints. - Cotação de API desatualizada. Nunca passe um valor de reserva de
api-v3.raydium.ioparaCurveCalculator.swap. Busque de um RPC. - Programa de token errado. O vault de um mint Token-2022 é de propriedade do programa Token-2022, não do SPL Token. Sempre use os campos
token_0_program/token_1_programdo pool. - Slippage sub-denominado 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_outdeve ser denominado no que o usuário realmente recebe, não no que o vault envia. NotApprovedem um swap. VerifiquePoolState.status— o administrador pode ter pausado swaps naquele pool. Vejaproducts/cpmm/instructionspara a máscara de status.
Próximos passos
sdk-api/typescript-sdk— referência completa do SDK.sdk-api/rest-api— endpoints de cotação e metadados de pool.user-flows/create-cpmm-pool— o passo a passo sem código do mesmo fluxo.integration-guides/aggregator— se você está roteando CPMM como parte de um caminho multi-hop.

