Préstamos y Empréstitos
Los mercados de dinero de Solana (Kamino, MarginFi y similares) permiten a los usuarios depositar garantías, pedir prestado activos y obtener rendimiento. Integra cuando tu producto necesite apalancamiento, estrategias de bóveda o flujos de pago automatizados.
Receta
Tarjeta de receta de referencia rápida, lista para copiar y pegar.
// MarginFi - depositar garantía (patrón 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>,Cuándo recurrir a esto:
- Construir bucles de apalancamiento (pedir prestado -> intercambiar -> depositar).
- Rendimiento de tesorería sobre USDC/SOL inactivos.
- Bots de liquidación y monitorización de salud.
- Productos de bóveda que se enrutan a través de mercados de préstamos.
Ejemplo de Trabajo
import { createSolanaRpc, address } from "@solana/kit";
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
// Programa del mercado de préstamos de Kamino
const kaminoProgram = address("KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD");
const accounts = await rpc.getProgramAccounts(kaminoProgram, {
encoding: "jsonParsed",
filters: [{ dataSize: 1024 }], // filtro ilustrativo - usa el SDK para el diseño real
}).send();
console.log("Cuentas de Kamino encontradas:", accounts.length);Lo que esto demuestra:
- Los mercados almacenan la configuración de la reserva, la utilización y las claves del oráculo en la cadena.
- Las posiciones de los usuarios son PDAs indexadas por billetera y mercado.
- Los SDK abstraen las matemáticas de la reserva y la construcción de instrucciones.
Análisis Profundo
Cómo Funciona
- Suministro - Los usuarios depositan tokens SPL en una reserva; reciben tokens de recibo o crédito en cuenta interna.
- Préstamo - Permitido hasta el LTV contra la garantía; los intereses se acumulan a través del índice de la reserva.
- Liquidación - Terceros pagan la deuda y se apoderan de la garantía cuando el factor de salud infringe el umbral.
- Los oráculos (Pyth) suministran precios para la valoración de la garantía y la deuda.
Kamino vs MarginFi
| Aspecto | Kamino | MarginFi |
|---|---|---|
| Enfoque | Préstamos + bóvedas automatizadas | Mercado de dinero puro |
| Garantía | Cestas multi-activo | Modelo de banco por emisión |
| 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)?)
}Trampas Comunes
- Oráculo obsoleto - Se permite el préstamo con precios desactualizados. Solución: Los programas imponen una antigüedad máxima; los clientes deben advertir antes.
- Confusión de LTV - El LTV máximo no es el umbral de liquidación. Solución: Mostrar ambos; dejar un margen por encima de la línea de liquidación.
- Índice de interés - La deuda crece en cada slot a través del índice de préstamo acumulativo. Solución: Usar las utilidades
getOutstandingDebtdel SDK. - Emisión de reserva incorrecta - Símbolos similares (USDC vs USDT). Solución: Validar la clave pública de emisión, no la cadena de texto.
- Callbacks de préstamos relámpago - Reentrada a través de CPI en la misma transacción. Solución: Seguir los Riesgos de CPI y Reentrada.
- Picos de utilización - El APR de préstamo salta cuando el pool está casi agotado. Solución: Limitar el tamaño del préstamo o dividirlo entre reservas.
Alternativas
| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| Mantener solo spot | Sin riesgo de apalancamiento | Necesitas rendimiento sobre capital inactivo |
| LP de AMM | Ganar comisiones de trading | Quieres exposición de préstamo aislada |
| Crédito fuera de cadena | Contrapartes con KYC | Necesitas composabilidad sin permisos |
Preguntas Frecuentes
¿Qué es un factor de salud?
Valor de la garantía dividido por el valor de la deuda (con recortes). Por debajo de 1.0 activa la liquidación en la mayoría de los mercados.
¿Puedo pedir prestado y cambiar en una sola transacción?
Sí - componer el CPI de préstamo, el CPI de intercambio de Jupiter y el redepósito en una transacción versionada con suficientes CU.
¿Cómo difiere Kamino de los préstamos convencionales?
Kamino añade estrategias de bóveda automatizadas que reequilibran la garantía entre reservas y fuentes de rendimiento externas.
¿Qué oráculo utilizan los mercados de dinero?
Las fuentes de precios de Pyth son las principales en los despliegues de Kamino y MarginFi en mainnet. Siempre lee la clave pública del oráculo configurada de la reserva.
¿Cómo funcionan las liquidaciones para los integradores?
Los "keepers" monitorizan los factores de salud y envían transacciones de liquidación a cambio de una bonificación. Construye bots con feeds de oráculos de baja latencia.
¿Son transferibles los tokens de recibo?
Depende del diseño de la reserva - algunos usan cTokens (emisiones SPL), otros solo usan contabilidad interna.
¿Cómo pruebo los flujos de préstamo?
Clona las reservas de mainnet con Surfpool 0.12.0 o clona cuentas específicas en el validador de pruebas.
¿Qué sucede si el oráculo falla a mitad de la transacción?
Las instrucciones de préstamo/retiro fallan de forma segura cuando las cuentas de precios están obsoletas o son inválidas - las transacciones se revierten atómicamente.
¿Pueden los programas mantener posiciones de préstamo?
Sí, si un PDA es la autoridad - pero la autoridad de actualización y la gestión de claves se convierten en preocupaciones críticas de seguridad.
¿Con qué rapidez se acumulan los intereses?
Continuamente a través del índice de la reserva - incluso los préstamos sub-slot se acumulan en la próxima actualización del índice dentro del programa.
Relacionado
- Oráculos - fuentes de precios para la garantía
- Staking Líquido (LSTs) - garantía LST
- Swaps con Jupiter - estrategias de pago y bucle
- Conceptos Básicos de Seguridad - modelo de amenazas para mercados de dinero
Versiones de Stack: Esta página fue 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, y LiteSVM 0.6.x.