bitcoin · Principiante
Convertir MXN a sats sin perder precisión
Flujo reproducible para cotizar Bitcoin, fijar el precio de una venta y redondear sats correctamente.
El problema
Un comercio fija precios en MXN, pero una invoice Lightning expresa el importe en millisatoshis. La conversión debe usar una cotización identificable y evitar decimales binarios.
Implementación
Prerequisitos
- Una fuente de precio BTC/MXN.
- Un tipo decimal o enteros para importes monetarios.
- Un timeout y política de precio vencido.
La relación básica es:
const SATS_PER_BTC = 100_000_000;
const sats = Math.ceil((amountMxn / btcMxn) * SATS_PER_BTC);
En producción, reemplaza number por una librería decimal. Guarda amountMxn, btcMxn, sats y quotedAt; así la venta puede auditarse aunque cambie el mercado.
Validación
Prueba importes pequeños, precios con decimales, respuestas vencidas y valores cero. Nunca genera una invoice si falta cotización o excede la edad permitida.
Errores comunes
- Recalcular sats después de mostrar el QR.
- Redondear hacia abajo y cobrar menos.
- No guardar la cotización usada.
Conclusión
Fijar el precio es parte del checkout, no una operación visual. Una cotización guardada hace que el resultado sea reproducible.