Empréstimos e Financiamento
Mercados de dinheiro da Solana (Kamino, MarginFi e similares) permitem que usuários forneçam garantias, tomem empréstimos de ativos e ganhem rendimento. Integre quando seu produto precisar de alavancagem, estratégias de cofre ou fluxos de pagamento automatizados.
Receita
Cartão de receita de referência rápida - pronto para copiar e colar.
// MarginFi - depositar garantia (padrão SDK)
import { MarginfiClient } from "@mrgnlabs/marginfi-client-v2";
const client = await MarginfiClient.fetch(config, wallet, connection);
const bank = client.getBankByMint(usdcMint);
await bank.deposit(amount, wallet.publicKey);#[account(constraint = health_factor >= MIN_HEALTH @ ErrorCode::Undercollateralized)]
pub user_state: Account<'info, UserState>,Quando usar isso:
- Construindo loops de alavancagem (pegar emprestado -> trocar -> depositar).
- Rendimento do tesouro em USDC/SOL ocioso.
- Bots de liquidação e monitoramento de saúde.
- Produtos de cofre que roteiam através de mercados de empréstimo.
Exemplo de Trabalho
import { createSolanaRpc, address } from "@solana/kit";
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
// Programa do mercado de empréstimos Kamino
const kaminoProgram = address("KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD");
const accounts = await rpc.getProgramAccounts(kaminoProgram, {
encoding: "jsonParsed",
filters: [{ dataSize: 1024 }], // filtro ilustrativo - use SDK para layout real
}).send();
console.log("Contas Kamino encontradas:", accounts.length);O que isso demonstra:
- Mercados armazenam configuração de reserva, utilização e chaves de oráculo on-chain.
- Posições de usuário são PDAs com chave pelo carteira e mercado.
- SDKs abstraem a matemática de reserva e a construção de instruções.
Mergulho Profundo
Como Funciona
- Fornecer - Usuários depositam tokens SPL em uma reserva; recebem tokens de recibo ou crédito de saldo interno.
- Tomar Empréstimo - Permitido até LTV contra garantia; juros acumulam via índice de reserva.
- Liquidação - Terceiros pagam a dívida e apreendem a garantia quando o fator de saúde ultrapassa o limite.
- Oráculos (Pyth) fornecem preços para avaliação de garantia e dívida.
Kamino vs MarginFi
| Aspecto | Kamino | MarginFi |
|---|---|---|
| Foco | Empréstimo + cofres automatizados | Puro mercado de dinheiro |
| Garantia | Cestas multi-ativos | Modelo de banco por mint |
| SDK | kamino-sdk | marginfi-client-v2 |
| Oráculo | Principalmente Pyth | Pyth + Switchboard |
Notas de Rust
pub fn health_factor(collateral_usd: u128, debt_usd: u128) -> Result<u128> {
if debt_usd == 0 {
return Ok(u128::MAX);
}
Ok(collateral_usd
.checked_mul(PRECISION)
.and_then(|v| v.checked_div(debt_usd))
.ok_or(ErrorCode::MathOverflow)?)
}Armadilhas
- Oráculo desatualizado - Empréstimo permitido com preço desatualizado. Correção: Programas impõem staleness máxima; clientes devem avisar mais cedo.
- Confusão de LTV - LTV máximo != limite de liquidação. Correção: Exiba ambos; deixe uma margem acima da linha de liquidação.
- Índice de juros - Dívida cresce a cada slot via índice de empréstimo cumulativo. Correção: Use os helpers
getOutstandingDebtdo SDK. - Mint de reserva errado - Símbolos semelhantes (USDC vs USDT). Correção: Valide a chave pública do mint, não a string do ticker.
- Callbacks de empréstimo flash - Reentrância via CPI na mesma transação. Correção: Siga Riscos de CPI e Reentrância.
- Picos de utilização - APR de empréstimo salta quando o pool está quase esgotado. Correção: Limite o tamanho do empréstimo ou divida entre reservas.
Alternativas
| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| Manter apenas spot | Sem risco de alavancagem | Você precisa de rendimento sobre capital ocioso |
| AMM LP | Ganhar taxas de negociação | Você quer exposição isolada a empréstimos |
| Crédito off-chain | Contrapartes KYC | Você precisa de composabilidade sem permissão |
FAQs
O que é um fator de saúde?
Valor da garantia dividido pelo valor da dívida (com cortes). Abaixo de 1.0 aciona a liquidação na maioria dos mercados.
Posso tomar emprestado e trocar em uma transação?
Sim - componha CPI de empréstimo, CPI de troca Jupiter e redeposite em uma transação versionada com CU suficiente.
Como o Kamino difere do empréstimo vanilla?
Kamino adiciona estratégias de cofre automatizadas que rebalanceiam a garantia entre reservas e fontes de rendimento externas.
Qual oráculo os mercados de dinheiro usam?
Feeds de preços Pyth são primários nas implantações mainnet do Kamino e MarginFi. Sempre leia a chave pública do oráculo configurada da reserva.
Como funcionam as liquidações para integradores?
Keepers monitoram os fatores de saúde e enviam transações de liquidação em troca de um bônus. Construa bots com feeds de oráculo de baixa latência.
Os tokens de recibo são transferíveis?
Depende do design da reserva - alguns usam cTokens (mints SPL), outros usam apenas contabilidade interna.
Como testar fluxos de empréstimo?
Faça fork das reservas mainnet com Surfpool 0.12.0 ou clone contas específicas no test-validator.
O que acontece se o oráculo falhar no meio da transação?
Instruções de empréstimo/saque falham fechadas quando as contas de preço estão desatualizadas ou inválidas - as transações revertem atomicamente.
Programas podem ter posições de empréstimo?
Sim, se um PDA for a autoridade - mas a autoridade de upgrade e o gerenciamento de chaves se tornam preocupações críticas de segurança.
Com que rapidez os juros se acumulam?
Continuamente via índice de reserva - até mesmo empréstimos sub-slot acumulam na próxima atualização do índice dentro do programa.
Relacionado
- Oráculos - feeds de preços para garantia
- Liquid Staking (LSTs) - garantia LST
- Swaps com Jupiter - estratégias de pagamento e loop
- Bases de Segurança - modelo de ameaça para mercados de dinheiro
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.