Melhores Práticas para Integrações DeFi
Um resumo condensado das 25 práticas mais importantes para integrações DeFi, extraídas de todas as páginas desta seção.
-
Listar pubkeys de mints: Nunca confie em strings de ticker - codifique os mints da mainnet na configuração (Noções Básicas de DeFi).
-
Recotar antes de enviar: As cotações da Jupiter expiram em segundos - obtenha uma cotação nova imediatamente antes da troca (Trocas com Jupiter).
-
Definir slippage explícito: Padrão de 50 bps para pares líquidos; aumente para pools finos - registre o
slippageBpsescolhido por tx. -
Simular toda tx da mainnet: Use
simulateTransactionda RPC ou o fork do Surfpool 0.12.0 antes de gastar SOL. -
Usar limites de computação dinâmicos: Trocas multi-hop excedem 200k CU - habilite
dynamicComputeUnitLimitda Jupiter ou defina um orçamento ix. -
Lidar com wSOL explicitamente: Habilite
wrapAndUnwrapSolou gerencie o ciclo de vida do ATA wSOL manualmente. -
Validar IDs de programas de pool: CPIs diretas de AMM devem verificar se o proprietário do pool corresponde ao programa Raydium/Orca/Meteora (AMMs).
-
Ler reservas na execução: Pré-visualizações do cliente usam estado obsoleto - simule ou leia reservas on-chain no mesmo slot.
-
Verificar obsolescência de oráculos: Empréstimos e perps devem falhar fechados quando a idade do Pyth/Switchboard exceder o limite (Oráculos).
-
Separar LTV e liquidação: Exiba o LTV máximo de empréstimo e o limite de liquidação com um buffer de segurança (Empréstimos).
-
Rastrear taxas de câmbio de LST: Nunca assuma 1 LST = 1 SOL - leia a taxa do pool de staking (Staking Líquido).
-
Listar mints de LST: Rejeite tokens de pool de staking desconhecidos - golpes imitam tickers jitoSOL.
-
Agrupar sob contenção: Grandes trocas na mainnet usam bundles Jito ou RPC privado (Jito e MEV).
-
Limitar impacto no preço: Aborte trocas quando
priceImpactPctexceder a política do produto. -
Usar transações versionadas: Rotas DeFi precisam de ALTs - formatos de tx legados atingem limites de conta.
-
Taxas de prioridade na mainnet: Defina
prioritizationFeeLamportsde um oráculo de taxas durante congestionamento. -
Testar em fork da mainnet: A liquidez da devnet é escassa - Surfpool 0.12.0 para rotas Jupiter realistas.
-
Registrar planos de rota: Persista o JSON
routePlanpara depuração de incidentes e suporte ao usuário. -
Isolar loops de alavancagem: Cadeias de empréstimo-troca-depósito falham atomicamente - modele a saúde do estado final antes de enviar.
-
Marcas de oráculo Perp: Liquidações usam preço do oráculo, não a última negociação (Perps).
-
Apenas inteiros de tick/lote: Preços CLOB são ticks - sem matemática de ponto flutuante JavaScript em caminhos de produção.
-
Monitorar saldos de tokens de recebimento: Depósitos de empréstimo podem retornar cTokens - rastreie o mint correto para saques.
-
Limitar taxa da API de cotação: Faça backoff em HTTP 429 da Jupiter; armazene em cache cotações < 5s apenas.
-
Falhar fechado em erros de CPI: Propague erros de programa - nunca ignore CPIs DeFi falhas em seu programa.
-
Documentar risco do local: Divulgue riscos de contrato inteligente, oráculo e depeg por protocolo integrado na cópia da UX.
FAQs
Qual é o slippage mínimo para SOL-USDC?
50 bps é um padrão comum; ajuste para verificações de impacto dependentes do tamanho usando priceImpactPct.
Aplicativos de varejo devem usar bundles Jito?
Opcional para negociações grandes; taxas de prioridade sozinhas podem ser suficientes para trocas pequenas.
Como testar sem SOL da mainnet?
Fork do Surfpool com ATAs de usuário e estado do pool clonados - não devnet crua para testes de roteamento.
Qual é o principal erro de integração?
Cotações obsoletas e falta de verificações de slippage - causam txs falhas ou preenchimentos ruins.
Relacionados
- Noções Básicas de DeFi na Solana - entrada da seção
- Trocas com Jupiter - caminho de troca principal
- Melhores Práticas de Segurança de Programa - segurança on-chain
- Melhores Práticas de Teste - política de teste DeFi
Versões da Stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, e LiteSVM 0.6.x.