Melhores práticas de token SPL
Regras para manuseio correto e seguro do token SPL no Agave 4.1.1 - desde o lançamento do mint até CPIs do programa e leituras do cliente.
Como usar esta lista
- Aplique A antes de criar qualquer mainnet mint
- Revise B antes de enviar o cofre na rede ou o código de pagamento
- Use C ao criar carteiras, painéis e indexadores
A - Lançamento do Mint
- Escolha os decimais uma vez no início da casa. Imutável para sempre - indústria de correspondência (6 para stablecoins, 9 para SOL-like).
- Revogar a autoridade da casa da moeda após a distribuição. O fornecimento fixo é o sinal de confiança padrão, a menos que a inflação seja documentada.
- Revogar a autoridade de congelamento para tokens da comunidade. A menos que a conformidade exija o congelamento, os titulares não devem enfrentar o congelamento de contas.
- Documente transações de autoridade publicamente. Indexadores e exploradores devem corresponder aos seus anúncios.
- Verifique o mint pubkey on-chain antes do marketing. Erros de digitação em URLs causam perda irreversível do usuário.
B - Programas On-Chain
- Use
transfer_checkedcom decimais perfeitos. Evita confusão entre decimais cruzados em programas de vários ativos. - Restringir
token::mintem cadaTokenAccount. Interrompe depósitos de ativos errados em cofres. - Validar endereços ATA por meio de derivação. Não confie cegamente nas chaves públicas da conta de token fornecidas pelo usuário.
- Assine CPIs do vault do PDA com
new_with_signer. Sementes faltantes são a falha na transferência do vault superior. - Use
token_interfaceao aceitar o Token-2022. A restrição clássica do programaTokenrejeita extensões de hortelã. - Rejeitar transferências/mints de valor zero. Desperdiça CU e confunde análises.
C - Clientes e Operações
- Converta valores de UI com BigInt/string math. Nunca
float * 1e6para valores de pagamento de produção. - Leia decimais do RPC mint, não constantes. Aplicativos com vários tokens precisam de decimais por mint.
- ATAs do destinatário do fundo (
--fund-recipientou criação idempotente). As transferências falham sem a conta de token de destino. - Reutilize o WSOL ATA para traders ativos. Evite repetidas rotações de aluguel.
- Mostrar valores brutos e de UI nas ferramentas administrativas. Suporte para depuração de incidentes decimais.
- Revogar aprovações de delegados obsoletos após trocas DeFi. Reduz o risco de esgotamento da carteira.
Perguntas frequentes
Qual é a etapa de lançamento mais importante?
Revogar a autoridade da casa da moeda após a cunhagem final, se for prometido um fornecimento fixo.
Os programas devem usar transfer ou transfer_checked?
transfer_checked em todos os programas Anchor que lidam com múltiplas moedas.
Como posso verificar se um token é seguro?
Leia as autoridades da casa da moeda na cadeia, no fornecimento e no ID do programa - nunca apenas os crachás da UI.
Devo subsidiar a criação de ATA?
Sim, para integração do consumidor quando os usuários não têm SOL para aluguel – orçamente explicitamente.
Token Clássico ou Token-2022 para novo fungível?
Token-2022 somente quando você precisar de extensões; o token clássico tem a maior compatibilidade atualmente.
Como faço para testar fluxos de token?
Surfpool 0.12.0 ou LiteSVM 0.6.x com devnet mints antes do lançamento da mainnet.
E quanto ao SOL encapsulado?
Sempre sync_native após depósito de laminação; desembrulhe a poeira após o DeFi.
Como os indexadores rastreiam os saldos?
Instruções do programa Parse Token mais reconciliação getTokenAccountsByOwner periódica.
Posso atualizar os parâmetros do mint?
Os decimais e o programa são fixos - planeje a migração como nova casa da moeda + migração do titular, se necessário.
O tesouro deve usar autoridade multisig mint?
Sim para emissões DAO - document timelock e pubkey na cadeia.
Relacionado
- SPL Token Basics - visão geral da seção
- Authorities - revogar detalhes
- Token SPL em programas - Padrões de CPI
Versões 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.