Cómo funciona LNURL en Lightning Network:


Introducción a LNURL

El protocolo LNURL surge como una extensión de Lightning Network para simplificar la interacción entre usuarios y servicios. En lugar de intercambiar complejas rutas de pago o solicitudes de facturas, LNURL utiliza URLs codificadas que permiten realizar diversas operaciones con un simple escaneo de código QR o clic en un enlace.

Arquitectura y componentes clave

1. URL codificada

Cada operación se inicia con una URL (por ejemplo, lnurl1dp68gurn8ghj7mrww4exctnvdhk6tmvv9ujk6tppwgs9e3k7mn0w3skz7mf0w4hgzmn0w3kxyetvdhk6tr0d3skxyetvdhk6tmvdehk6tpmvdenjd3skxyetvdhk6tppw). Esta cadena, cuando se decodifica, revela un endpoint HTTPS seguro donde el cliente realizará peticiones.

2. Endpoint HTTPS

El servidor LNURL expone uno o varios endpoints que responden con objetos JSON. Cada objeto incluye un ”tag” que indica la operación (por ejemplo, ”withdrawRequest”, ”payRequest”, ”channelRequest”).

3. Cliente Lightning

El monedero o servicio que interpreta la URL decodificada y sigue el flujo. Realiza varias peticiones GET o POST al endpoint, recibe datos adicionales y finalmente genera o paga facturas de Lightning Network.

Tipos de servicios LNURL

LNURL-Pay: Permite que un comerciante ofrezca un botón de pago dinámico.
LNURL-Withdraw: Facilita que un servicio envíe fondos a un usuario dentro de Lightning Network.
LNURL-Channel: Automatiza la apertura de canales entre nodos.
LNURL-Auth: Proporciona un mecanismo de autenticación sin contraseñas.

Flujo detallado de LNURL-Pay

Paso 1: Cliente obtiene la URL

El usuario escanea un QR o hace clic. El monedero extrae la URL codificada y la descodifica en un endpoint HTTPS.

Paso 2: Solicitud de metadatos

El cliente envía una petición GET al endpoint:
GET https://ejemplo.com/lnurlpaytag=payRequestampk1=abcdef123456
El servidor responde:
{
tag: payRequest,
callback: https://ejemplo.com/lnurlpay/callback,
maxSendable: 2000000000,
minSendable: 1000,
metadata: [[text/plain,Pago por servicio XYZ]]
}

Paso 3: Generación de la factura

El cliente presenta opciones de cantidad dentro de minSendable y maxSendable. El usuario elige un valor y el monedero realiza una segunda petición: {
amount: 1500000,
k1: abcdef123456
} a callback
El servidor responde con una ”pr” (la factura en formato BOLT11): {
pr: lnbc15u1p0…,
routes: []
}

Paso 4: Pago de la factura

El cliente paga la factura usando la ruta de Lightning Network. Tras la confirmación, el servidor valida el pago referenciado por k1 y completa la operación.

Seguridad y validación

HTTPS obligatorio: Protege la integridad y confidencialidad de las peticiones.
Nonce (k1): Previene replay attacks y asegura que cada petición sea única.
Verificación de montos: El servidor valida que el monto final esté dentro de los límites establecidos.

Implementaciones y casos de uso

Numerosos monederos y servicios han adoptado LNURL: Monero Lightning: Pagos sin necesidad de facturas manuales.
Servicios de tipping: Integración en blogs y redes sociales.
Automatización de canales: Apertura bajo demanda con LNURL-Channel.

Conclusión

LNURL simplifica y estandariza la experiencia de usuario en Lightning Network. Al abstraer detalles técnicos y proporcionar flujos basados en URLs, reduce fricciones y abre la puerta a nuevas aplicaciones descentralizadas. Para profundizar, se recomienda consultar la especificación oficial en GitHub.

Leave a Reply

Your email address will not be published. Required fields are marked *