Saltar al contenido
buybitcoinsmart

Glosario / Lightning y capa 2

Milisatoshi

También se conoce como msat.

¿Qué es un milisatoshi?
Un milisatoshi es la milésima parte de un satoshi, la unidad en que Lightning cuenta saldos de canal y comisiones de enrutamiento, y un monto que la propia blockchain de bitcoin no puede registrar.

Lightning lleva sus cuentas con un grado más de detalle que la blockchain: en milésimas partes de un satoshi. BOLT 2 establece la proporción sin rodeos: el campo push_msat no puede superar 1000 veces el valor de funding_satoshis, y solo se pueden hacer cumplir on-chain montos en satoshis enteros. Cualquier resto en milisatoshis de su saldo es real dentro del canal y desaparece por redondeo en el momento en que ese canal se cierra.

Cómo funciona

Un milisatoshi es una unidad de cuenta dentro de un canal Lightning, no una unidad de liquidación en la blockchain.

Todo monto de pago dentro de un canal se escribe en milisatoshis y lo indica en el nombre de su campo. El mensaje que añade un pago a un canal, update_add_htlc, lleva un campo amount_msat de 64 bits, y al abrir un canal se negocian los campos push_msat, htlc_minimum_msat y max_htlc_value_in_flight_msat en la misma unidad. BOLT 2 señala la salvedad junto a la definición: los montos están en milisatoshis, "though on-chain enforcement is only possible for whole satoshi amounts greater than the dust limit" (aunque solo pueden hacerse cumplir on-chain los montos en satoshis enteros superiores al límite de polvo), y la transacción de compromiso los redondea hacia abajo.

El factor de conversión no es folclore. Un nodo que abre un canal debe poner en push_msat un valor no superior a 1000 veces funding_satoshis, y el par que recibe el mensaje debe hacer fallar el canal si push_msat es mayor que funding_satoshis por 1000. La proporción de 1.000 a 1 está escrita en la negociación inicial (handshake) desde ambos lados.

Las facturas heredan el mismo piso. Un monto BOLT 11 se expresa en bitcoin con una letra multiplicadora, y la más pequeña, p de pico, lleva una regla que las demás no tienen: el último dígito del monto debe ser cero. Un picobitcoin es la décima parte de un milisatoshi, así que el cero final obliga a que la solicitud sea un número entero de milisatoshis. La especificación explica su razón con claridad: los montos inferiores a un milisatoshi no pueden transferirse en la red porque los HTLC se expresan en milisatoshis, y los vectores de prueba incluyen una factura rechazada bajo el título "Invalid sub-millisatoshi precision" (precisión inferior al milisatoshi no válida).

Los tres decimales extra se ganan su lugar en la aritmética de las comisiones. Un nodo que reenvía cobra una comisión proporcional expresada en millonésimas de satoshi por cada satoshi reenviado, así que una comisión proporcional de 1 sobre un pago de 1.000 satoshis equivale a un solo milisatoshi. Si se redondea a un satoshi entero, la comisión queda multiplicada por mil o se pierde.

Dónde aparece

Las cifras en milisatoshis aparecen allí donde una herramienta Lightning muestra sus números reales en lugar de una presentación redondeada.

Al decodificar una factura BOLT 11, los route hints (pistas de ruta) aparecen en esta unidad. El propio ejemplo práctico de la especificación enumera dos saltos que cobran una comisión base de 1 milisatoshi y de 2 milisatoshis, y su factura de muestra para un pedido de la tienda de Blockstream lleva un route hint cuya comisión base es de 1000, un satoshi entero. La actualización gossip de un canal publica htlc_minimum_msat y fee_base_msat en la misma unidad, así que un panel que lea esos campos muestra un número mil veces mayor que la cifra en satoshis que tiene al lado.

Las billeteras de consumo ocultan la unidad, pero no la aritmética. Phoenix publica una tabla de comisiones en lugar de descubrirlas en el momento del pago, y su envío Lightning cuesta 0,4 % más 4 satoshis; en un pago de 137 satoshis, la parte porcentual sale a 548 milisatoshis, un monto sin ninguna representación on-chain. Muun presenta on-chain y Lightning como un único saldo, lo que oculta la frontera por completo sin eliminarla.

Milisatoshi frente a satoshi

Un satoshi es el monto más pequeño que puede registrar la blockchain de bitcoin, mientras que un milisatoshi es la milésima parte de eso y solo existe en los mensajes de Lightning y en los libros contables que llevan sus dos pares.

La diferencia se hace sentir al cerrar. Un saldo de canal de 1.234.567 milisatoshis es exigible como 1.234 satoshis y nada más, porque la transacción de compromiso que liquida el canal on-chain paga satoshis enteros; los 567 milisatoshis sobrantes no tienen ninguna salida on-chain en la que existir y solo pueden gastarse mientras el canal siga abierto. Esa diferencia vale una fracción de centavo, y aun así es la razón por la que las dos unidades no pueden usarse una en lugar de la otra en nada que toque la blockchain.

No confundir con

Preguntas frecuentes

¿Cuántos milisatoshis hay en un satoshi?

Exactamente 1.000. La especificación de Lightning escribe la proporción en la negociación inicial de apertura del canal: un nodo debe poner en push_msat un valor no superior a 1000 veces funding_satoshis, y el par que recibe ese mensaje debe hacer fallar el canal si push_msat es mayor que funding_satoshis por 1000.

¿Puedo retirar realmente un milisatoshi?

No, porque la blockchain de bitcoin solo registra satoshis enteros. Un saldo en milisatoshis es real mientras un canal Lightning está abierto, pero BOLT 2 dice que solo es posible hacer cumplir on-chain montos en satoshis enteros por encima del límite de polvo, y la transacción de compromiso redondea el resto hacia abajo.

¿Por qué se molesta Lightning con una unidad tan pequeña?

Porque las comisiones de enrutamiento proporcionales se expresan en millonésimas de satoshi por satoshi reenviado, así que la comisión de un pago pequeño cae entre satoshis. Una comisión proporcional de 1 sobre un pago de 1.000 satoshis es un milisatoshi, y redondearla a un satoshi entero borraría la comisión o la multiplicaría por mil.

Para seguir leyendo

Términos relacionados

Más en la sección Lightning y capa 2

Leer esta página en inglés