Padrões de Taxa e Tesouraria
Padrões de taxa retiram basis points em ações, direcionam para PDAs ou ATAs de tesouraria e documentam arredondamento. Use matemática verificada e limite fee bps configurável na config de admin.
Receita
let fee = amount.checked_mul(config.fee_bps)?.checked_div(10_000)?;
let net = amount.checked_sub(fee)?;Quando usar isso:
- Taxa de protocolo de DEX.
- Taxa de marketplace de NFT.
- Taxa de saque cobrindo rent.
Exemplo de Trabalho
pub fn split_fee(amount: u64, bps: u16) -> Result<(u64, u64), ProgramError> {
if bps as u64 > 10_000 { return Err(ProgramError::InvalidArgument); }
let fee = amount.checked_mul(bps as u64)?.checked_div(10_000)?;
let net = amount.checked_sub(fee)?;
Ok((net, fee))
}O que isso demonstra:
- Limita bps a 100%.
- Retorna net e fee.
- Todas as operações verificadas.
Mergulho Profundo
Arredondamento
Floor de fee favorece protocolo ou usuário - documente a escolha.
Tesouraria
ATA PDA dedicada por mint.
Notas de Rust
// u128 intermediate for large mul if needed.Armadilhas
- Matemática de taxa não verificada - Dreno por wrap.. Correção: Somente checked_*.
- Bps ilimitado na config - Roubo de 100%.. Correção: Valide máximo em set_config.
- Taxa em parcial falho - Cobrança antes do sucesso.. Correção: Cobre taxa após sucesso ou na entrada.
- Mint errado na ATA de tesouraria - Taxas perdidas.. Correção: Verifique mint.
- Skim oculto de admin - Perda de confiança.. Correção: Bps transparente on-chain.
Alternativas
| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| Taxa off-chain | Não aplicável | Somente on-chain |
| Referral Jupiter | Taxas de parceiro | Taxa do seu programa separada |
| Doação opcional | Escolha de UX | Receita |
FAQs
Basis points?
1 bp = 0,01%.
Taxa em SOL?
Mesma matemática em lamports.
Transfer fee do Token-2022?
Camada adicional.
Saque de tesouraria?
Ix de admin.
Taxa imutável?
Fixa no programa.
Taxa dinâmica?
Conta de config.
Arredondar para baixo?
Comum favorecer usuário.
Múltiplos destinatários?
Vetor de divisão de taxa - limite len.
Eventos?
Emita taxa cobrada.
Auditoria?
Matemática + acesso à tesouraria.
Sim?
Afirme valores de taxa.
Anchor?
Mesma matemática no handler.
Relacionados
- Aritmética Segura - Matemática
- Cofre e Escrow - Custódia
- Taxa e Tesouraria em DeFi - Contexto
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.