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 →
Os produtos principais do Raydium não dependem de oracles externos para precificação — o estado do pool é o oracle. Mas a API e SDK usam oracles externos para precificação em USD exibida aos usuários, e mints Token-2022 trazem um conjunto mais rico de controles do que SPL Token, alguns dos quais mudam fundamentalmente o modelo de confiança de um pool. Esta página cataloga ambos.

Oracles no Raydium

Interno: o pool é o oracle

Para AMM v4, CPMM e CLMM, a definição do protocolo de “preço atual” é derivada apenas do estado do pool:
  • AMM v4 / CPMM: price = vaultB_balance / vaultA_balance (contabilizando decimais).
  • CLMM: price = (sqrtPriceX64 / 2^64)^2 × 10^(decimalsA - decimalsB).
Nenhum oracle externo é consultado durante um swap, depósito ou saque. Esta é a parte “sem confiança” do design AMM: se a matemática do pool estiver correta, nenhuma manipulação externa de um feed de preço pode corrompê-la.

ObservationState do CLMM como oracle TWAP

Pools CLMM mantêm uma conta ObservationState que registra snapshots históricos de sqrt_price. Outros programas podem compor contra isso para derivar um preço médio ponderado por tempo resistente a manipulação:
Este é o mesmo padrão que Uniswap V3 usa. Uma manipulação de preço de curto prazo (uma baleia empurrando temporariamente o pool) não corrompe o TWAP porque é calculada a média ao longo de centenas de slots. Programas que precisam de um feed de preço mais seguro para mints CLMM (oracles de liquidação, precificação de opções, etc.) devem usar TWAPs de ObservationState em vez de preços instantâneos. Não use preços instantâneos de CLMM para composabilidade. Um único swap grande pode empurrar o preço spot 10%+ em um pool raso; o TWAP amortece isso. Veja products/clmm/accounts#observation-state para o layout dos dados.

Externo: precificação em USD no frontend/API

O frontend do Raydium e api-v3.raydium.io exibem valores em USD (TVL, APR de taxa, volume em $). Estes vêm de:
  • Pyth como oracle primário para mints principais.
  • Preço agregador do Jupiter como fallback.
  • Preço derivado do pool para mints de cauda longa sem cobertura de oracle externo.
Exibições em USD são estritamente cosméticas — operações on-chain nunca leem Pyth, e nenhuma matemática de pool usa USD. Se Pyth parar de fornecer dados para um mint, a UI mostra ”—”; o pool continua funcionando.

Manipulação de oracle não aplicável a pools Raydium

Como o estado do pool é o oracle, não há “ataque de oracle” no sentido que a literatura de bug-bounty significa — nenhuma fonte de dados externa manipulável que o atacante possa corromper. Ataques econômicos no estado do pool (manipulação estilo flash-loan) são cobertos em security/attack-vectors.

Riscos de extensão Token-2022

SPL Token-2022 (também conhecido como “Token Extensions”) adiciona comportamento configurável a mints via extensões. Algumas extensões mudam as propriedades de confiança de pools que as incluem. Programas Raydium lidam com algumas automaticamente e expõem outras como avisos ao usuário.

Transfer fee

O que é: Uma taxa configurável (percentual de transferência, até um limite de maximum_fee em termos absolutos) paga pelo remetente à autoridade de mint em cada transferência. Risco: A taxa pode ser alterada pela autoridade de configuração de taxa do mint. Se você depositar liquidez quando a taxa é 1%, e a autoridade a aumentar para 50%, swaps subsequentes retornam muito menos do que o esperado. Mitigação no Raydium: Pools leem a transferFeeConfig atual no momento do swap e ajustam a matemática. O pool em si não é corrompido, mas os usuários veem saída pior. A autoridade de taxa também pode agendar uma mudança de taxa atrasada; a UI do Raydium sinaliza pools com mudanças de taxa iminentes. Risco residual: Se uma autoridade de taxa maliciosa alterar a taxa durante seu swap em voo, seu minimumAmountOut protege o lado negativo — a tx reverte. Se você confia no emissor do mint, tudo bem; se não, não faça LP.

Transfer hook

O que é: Uma transferência invoca um programa separado (o “hook”) para executar validação customizada ou efeitos colaterais. Risco: O hook pode bloquear qualquer transferência, incluindo as transferências internas do pool durante um swap. Um hook atualizável pode se tornar malicioso depois — o que era seguro no momento do depósito pode se tornar não-swappable no momento do saque. Mitigação no Raydium: Raydium lista um ID de programa hook no estado do pool. Integrações devem exibir o ID do programa hook aos usuários para que possam verificar se é o programa esperado (não-atualizável, auditado). Risco residual: Se um hook é atualizável e sua autoridade se torna hostil, o pool pode ser congelado. Raydium não bloqueia pools com transfer hooks, mas os sinaliza. Faça LP em um pool com transfer-hook apenas se o hook for verificado como seguro.

Freeze authority

O que é: A autoridade de congelamento de um mint pode congelar qualquer conta de token que detenha esse mint, prevenindo todas as transferências. Risco: Uma autoridade de congelamento com a capacidade de congelar a conta vault do pool efetivamente desativa o pool — usuários não podem sacar, traders não podem fazer swap. Isso se aplica a SPL Token e Token-2022; não é novo com Token-2022, mas ainda é um risco. Mitigação no Raydium: Nenhuma no nível do programa — o congelamento de SPL Token é opaco ao pool. A UI do Raydium avisa em pools com mints congeláveis. Usuários depositando devem verificar se a autoridade de congelamento é nula ou um multisig em que confiam (USDC tem uma autoridade de congelamento; é do emissor Circle). Risco residual: Aceite que mints congeláveis podem ser congelados. Mints principais (USDC, USDT, USDY) têm autoridades de congelamento mantidas pelo emissor e usadas apenas para conformidade regulatória; isso geralmente é aceitável.

NFTs de posição CLMM com freeze authority de emissor restrito

CLMM aplica um controle adicional para autoridades de congelamento de emissor restrito por KYC selecionadas. Quando a autoridade de congelamento de qualquer mint do pool corresponde à lista codificada do programa, novas posições abertas através de OpenPositionV2 ou OpenPositionWithToken22Nft têm sua conta de token NFT congelada imediatamente. O PDA correspondente do pool é a autoridade de congelamento do mint do NFT da posição. Isso previne que a posição seja transferida para uma carteira não aprovada ou que mude o proprietário de sua conta de token. Isso não dá ao emissor do token subjacente controle da posição NFT: apenas o PDA do pool CLMM é a autoridade de congelamento do NFT da posição, e o programa a usa para descongelar apenas como parte de ClosePosition antes de queimar. Gerenciamento de liquidez e coleta de taxa ou recompensa continuam exigindo o proprietário do NFT. Posições existentes permanecem descongeladas. Integradores devem tratar transferibilidade como estado específico da posição e ler a flag isFrozen da conta de token do NFT.

Permanent delegate

O que é: Uma extensão Token-2022 que designa um delegado permanente que pode transferir tokens de qualquer detentor sem aprovação. Risco: O delegado permanente pode drenar o vault do pool a qualquer momento. Mitigação no Raydium: CPMM e CLMM recusam criar pools com mints que têm um delegado permanente. A inicialização reverte. Nenhum pool Raydium em execução tem um mint com delegado permanente. Risco residual: Zero (contanto que a verificação esteja correta, o que ambas as auditorias verificaram).

Non-transferable

O que é: Mints que não podem ser transferidos por detentores. Risco: Pools dependem de transferibilidade para mover tokens entre ATAs de usuário e vaults de pool. Mints não-transferíveis trivialmente quebram pools. Mitigação no Raydium: Criação de pool reverte em mints não-transferíveis. Farms também recusam mints de staking não-transferíveis.

Default-frozen / close-authority / interest-bearing

Extensões de menor impacto tratadas pelo Raydium:
  • Default-frozen: novas contas de token precisam ser descongeladas antes do uso. Raydium lida com isso transparentemente na criação de ATA.
  • Close-authority: uma autoridade designada pode fechar contas de token. Vaults de pool são possuídos pela autoridade derivada do programa do pool, então close-authority no mint não se aplica ao vault.
  • Interest-bearing: o saldo exibido acumula juros; amount permanece fixo mas uiAmount cresce. Matemática de pool Raydium usa amount, não juros acumulados; exibição se ajusta separadamente.

Mint authority

Não é um risco específico de Token-2022, mas vale a pena notar: se um mint retém autoridade de mint, o detentor pode inflar a oferta à vontade. Para tokens lançados, isso dilui LPs ao preço atual do pool. LaunchLab recusa criar lançamentos a menos que a autoridade de mint seja nula.

Rótulos de risco na UI

O frontend do Raydium rotula cada pool com tags de risco aplicáveis:
  • TRANSFER_FEE — taxa de transferência não-zero.
  • TRANSFER_HOOK — extensão transfer-hook ativa.
  • FREEZE — mint tem uma autoridade de congelamento.
  • MINT — mint tem uma autoridade de mint (oferta pode inflar).
  • CLOSE — mint tem uma autoridade de fechamento.
Agregadores consumindo a API do Raydium devem exibir esses rótulos aos usuários.

Checklist para integradores

Antes de compor com um pool Raydium:
  • Verifique as extensões de cada mint via getMint(mint, TOKEN_2022_PROGRAM_ID).
  • Pule pools onde qualquer mint tem permanent_delegate ou non_transferable (estes não deveriam existir no Raydium, mas defesa em profundidade).
  • Verifique freeze authority para ambos os mints; apenas nula ou autoridade confiável.
  • Antes de oferecer transferência de posição, escrow ou Burn & Earn, confirme que a conta de token NFT da posição CLMM não está congelada.
  • Para pools com transfer-hook, verifique o ID do programa hook contra uma whitelist.
  • Dimensione exposição contra cenários de transfer-fee (e se a taxa for para o máximo?).
  • Use TWAP CLMM (ObservationState) em vez de preço spot para precificação de derivativos.

Declaração de aceitação de risco residual

Programas Raydium aplicam o que pode ser aplicado no nível do programa:
  • Criação de pool recusa mints com permanent-delegate / non-transferable.
  • Matemática de swap se ajusta corretamente para taxas de transferência atuais.
  • ObservationState fornece um oracle resistente a manipulação.
Riscos residuais que os usuários devem aceitar:
  • A autoridade de congelamento de um mint pode congelar o pool.
  • A autoridade de taxa de um mint pode aumentar a taxa de transferência (até o limite de maximum_fee) a qualquer momento.
  • Um programa transfer-hook pode ser atualizado para código malicioso.
  • A taxa de acúmulo de um mint interest-bearing pode ser alterada.
A defesa correta é diligência pré-LP: não deposite em pools com mints que têm autoridades concentradas em que você não confia. Raydium não pode decidir essa confiança por você; pode apenas expor os fatos relevantes.

Referências

Fontes: