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. Esta página documenta @raydium-io/raydium-sdk-v2@0.2.64-alpha, a versão fixada que todos os exemplos de código neste site usam. O SDK está em pré-1.0 e a superfície de tipos evoluiu entre releases — fixe sua versão.A versão foi atualizada de 0.2.42-alpha em 2026-09-09 junto com as atualizações de programa: 0.2.64-alpha é o release atual do SDK. O repositório raydium-sdk-V2-demo que as páginas de exemplos de código vinculam instala 0.2.62-alpha, então fixe qualquer um se estiver seguindo um demo verbatim. Os demos nessas páginas foram executados pela última vez contra 0.2.42-alpha (2026-04); suas assinaturas de chamada foram re-verificadas contra a fonte 0.2.64-alpha em 2026-09-09, mas trate qualquer discrepância como um bug de documentação e abra uma issue.

Instalar

O SDK é escrito em TypeScript e fornece .d.ts junto com seu artefato JS. Toolchain mínimo: Node 18+, TypeScript 5.0+, moduleResolution: "bundler" ou "node16".

Inicializar

O ponto de entrada é Raydium.load:
Raydium.load é assíncrono porque busca um pequeno payload /config de api-v3.raydium.io na inicialização (listando contas AmmConfig atuais, níveis de taxa, etc.). Defina disableFeatureCheck: true em ambientes offline; você terá que fornecer esses valores manualmente para alguns builders.

As quatro fachadas de módulos

Uma vez carregado, o objeto raydium expõe quatro fachadas de módulos, uma por superfície de produto:
(Sim, cinco fachadas no total — “quatro” é a forma como Raydium as agrupa publicamente, com trade e token como utilitários de suporte.)

Construtores de transações

Toda função mutante retorna um builder em vez de executar imediatamente:
Campos retornados:
  • execute — uma função de conveniência que assina + envia. Equivalente a builder.execute.
  • builder — a instância TxBuilder com todas as instruções e signatários acumulados. Chame .build() para obter um VersionedTransaction[]; útil quando você precisa injetar suas próprias instruções ou assinar com signatários externos.
  • transaction / innerTransactions — os arrays de instruções brutos. Use ao construir transações multi-programa compostas.
  • extInfo — extras específicos do produto. Por exemplo, createPool retorna extInfo.poolId; createLaunchpad retorna o novo PDA de estado de lançamento.
txVersion controla o formato de transação legado vs V0. V0 (tabelas de lookup de endereço) é a recomendação padrão — permite que swaps maiores caibam em uma única transação.

Por que builders assíncronos?

Quase todo builder busca internamente o estado on-chain: informações de pool (para quotes), propriedade do programa de token (para roteamento Token-2022 vs SPL), aluguel de isenção de conta (para criação de ATA), etc. O SDK faz cache agressivamente, mas a primeira chamada para um novo pool envolve round-trips de RPC. Mantenha uma instância raydium de longa duração para evitar re-buscar.

Adições do módulo CLMM (release mais recente)

A fachada CLMM ganhou superfícies para os novos recursos de taxa dinâmica, taxa de um lado e ordem limitada:
  • raydium.clmm.createCustomizablePool — superconjunto de createPool que aceita collectFeeOn, enableDynamicFee e dynamicFeeConfigId. Use isso para qualquer novo pool que precise dos novos controles; createPool clássico continua funcionando para pools com taxa padrão.
  • raydium.clmm.openLimitOrder — abra uma ordem limitada de um único tick em um pool que as suporte. Leva poolInfo, poolKeys, limitOrderConfig (de /main/clmm-limit-order-config), inputMint, inputAmount e o tick alvo.
  • raydium.clmm.increaseLimitOrder / decreaseLimitOrder — ajuste a porção não preenchida de uma ordem existente. Diminuir reverte em uma ordem totalmente preenchida com InvalidOrderPhase.
  • raydium.clmm.settleLimitOrder / settleAllLimitOrder — varre a saída preenchida para o ATA do proprietário. Tanto o proprietário da ordem quanto o keeper limit_order_admin do pool podem chamá-los.
  • raydium.clmm.closeLimitOrder / closeAllLimitOrder — feche ordens totalmente liquidadas para recuperar aluguel.
  • raydium.api.getClmmDynamicConfigs() / getClmmLimitOrderConfigs() — helpers REST que acessam os novos endpoints /main/clmm-dynamic-config e /main/clmm-limit-order-config.
Uma pequena reorganização também moveu utils/ para libraries/. Código que importava de @raydium-io/raydium-sdk-v2/utils/... deve mudar para @raydium-io/raydium-sdk-v2/libraries/.... O barrel do pacote de nível superior permanece inalterado, então a maioria dos usuários nunca vê a renomeação. Passo a passo completo em TypeScript vivem em products/clmm/code-demos.

Armadilhas comuns

1. Incompatibilidade de cluster

A configuração de inicialização do SDK é específica do cluster. Misturar cluster: "mainnet" com uma Connection devnet causa roteamento silencioso incorreto: o SDK faz quotes contra AmmConfig mainnet mas envia para devnet. Sempre passe ambos.

2. Esquecer de pré-criar ATAs

Na primeira interação com um mint, a Conta de Token Associada do usuário pode não existir. O SDK pré-anexa automaticamente uma instrução AssociatedTokenAccount::create quando detecta um ATA ausente, o que custa uma pequena quantidade de aluguel. Se sua carteira está com pouco SOL, isso falhará silenciosamente. Verifique e financie antes de tentar novamente.

3. poolInfo obsoleto

poolInfo é um snapshot em cache. Se o estado do pool mudou desde que você o buscou (um grande trade moveu o preço, digamos), o minAmountOut do swap pode ser computado contra o estado antigo e cair abaixo do amount-out on-chain, revertendo. Re-busque poolInfo imediatamente antes de construir transações de alto valor, ou use computeAmountOut do SDK que re-consulta as reservas.

4. Taxas de prioridade

O SDK não adiciona preços de unidade de computação por padrão. Em janelas de alto volume (lançamentos de novo pool, eventos de meme-coin), isso significa que sua transação compete com muitas outras e pode não chegar. Forneça um computeBudgetConfig explícito:
Veja integration-guides/priority-fee-tuning para orientação de dimensionamento.

5. A tolerância de slippage deve corresponder ao tipo de pool

CPMM e AMM v4 são matemática CPMM (baixo impacto em trades normais). CLMM é por partes (impacto salta em cruzamentos de tick). Se você copiar uma tolerância de slippage de 0,5% de um exemplo CPMM para um swap CLMM que cruza vários ticks, a transação provavelmente reverterá. O computeAmountOut do SDK retorna priceImpact; dimensione sua tolerância acima dele.

6. BN vs number

Todos os campos de quantidade no SDK são instâncias BN de bn.js — nunca JavaScript number. Converter valores de quantidade via .toNumber() trunca silenciosamente em 2^53; para qualquer valor acima de ~9 quadrilhões (não incomum em mints de 9 casas decimais), isso produz o resultado errado. Mantenha tudo em BN até a renderização final da UI.

Política de versionamento

  • @raydium-io/raydium-sdk-v2 é o único SDK que Raydium mantém. Todos os docs, demos e orientação de integração o direcionam.
  • Um pacote v1 mais antigo (@raydium-io/raydium-sdk) existe no npm por razões históricas. A manutenção terminou após CPMM e LaunchLab serem lançados (v1 nunca ganhou suporte para nenhum dos dois), e não houve releases v1 desde 2024. Trate v1 como fim de vida: não o use para novo código e migre qualquer integração v1 restante para v2.
  • SDK v2 está em pré-1.0. Mudanças quebradas entre releases menores 0.x são possíveis; fixe a versão que você verificou e verifique as notas de release do GitHub ao atualizar.

Atualizando

Ao atualizar entre versões menores do SDK:
  1. Re-verifique o tipo de retorno de toda chamada mutante — mudanças de forma (ex. extInfo) chegam frequentemente.
  2. Regenere assinaturas de busca de poolInfo — um campo pode ter sido renomeado.
  3. Re-verifique seu tratamento de slippage; o SDK mudou entre comportamentos de auto-bound e opt-in bound entre releases.
  4. Se você usar raydium.trade (roteamento), re-verifique a forma da rota — é a parte mais instável da superfície.

Obtendo ajuda

Para perguntas sobre SDK e API: Para problemas de segurança, não poste em canais públicos — veja security/disclosure.

Referências

Fontes: