La Lightning Network de Bitcoin es una solución de escalado de capa 2 para Bitcoin, diseñada para abordar los desafíos de escalabilidad de la cadena de bloques de Bitcoin. Permite transacciones instantáneas y de bajo costo en Bitcoin, haciéndolo más eficiente y accesible para los usuarios. En comparación con las transacciones en cadena en Bitcoin, las transacciones en la Lightning Network son privadas, ocurren fuera de la cadena, y sólo se registra el resultado general.
Una de las principales ventajas de la Lightning Network es su velocidad y asequibilidad. Permite a los usuarios enviar y recibir pequeños pagos en la red Bitcoin de manera simple y rentable. Al crear una red de canales de pago entre usuarios, la Lightning Network permite transacciones sin transmitir cada transacción a la cadena de bloques. Esto reduce la congestión en la cadena de bloques de Bitcoin y mejora la escalabilidad de las transacciones.
Sin embargo, es importante señalar que la Lightning Network aún está en desarrollo y enfrenta ciertos riesgos de seguridad y centralización. En octubre de este año, se descubrió una vulnerabilidad llamada “ataque de ciclo de reemplazo” en la Lightning Network, que implica el Mecanismo de Reemplazo de Transacciones y puede resultar en la pérdida de fondos del canal en la Lightning Network. La aparición de este método de ataque ha suscitado preocupaciones sobre la seguridad de la Lightning Network y ha impulsado investigaciones adicionales y mejoras en sus protocolos e implementaciones.
Mecanismo de la Lightning Network
La Lightning Network de Bitcoin aprovecha el mecanismo Multisig para garantizar la seguridad de los canales de pago. Los participantes deben bloquear fondos y establecer canales de pago. Los participantes pueden realizar pagos rápidos y de bajo costo dentro del canal, sin tener que enviar las transacciones a la cadena de bloques de Bitcoin cada vez. El canal de pago es simplemente una relación entre los participantes fuera de la cadena de bloques de Bitcoin, que se logra firmando una serie de transacciones dentro del canal que solo se propagan entre los dos extremos del canal sin implicar el consenso de toda la red Bitcoin.
En cuanto al proceso específico, al abrir un canal de pago, los participantes deben crear un script de firma múltiple que requiere que cada parte en el canal proporcione su clave pública, especificando el número requerido de firmas, por ejemplo, definiendo un script que contenga múltiples claves públicas y lógica de verificación de firma. Al generar la dirección de firma múltiple, este script se convertirá en una dirección de Bitcoin, formando la infraestructura del canal de pago.
Por ejemplo, como se muestra en la Figura 1, Bob y Alice primero crean una dirección de Bitcoin de firma 2-de-2 en cadena como fondo conjunto. Dentro del canal, pueden realizar transacciones de compromiso fuera de la cadena de manera ilimitada para registrar el estado actual de la asignación de fondos. Las dos partes pueden negociar y firmar nuevas transacciones de compromiso para actualizar el estado del canal, sin transmitir estas actualizaciones a toda la red Bitcoin. Cuando deciden cerrar el canal, la transacción final de liquidación en cadena distribuirá los fondos de acuerdo con la última asignación negociada. Esta transacción de liquidación requiere las firmas conjuntas tanto de Bob como de Alice, asegurando que los fondos se asignen de la manera acordada finalmente. De esta manera, la Lightning Network mejora la eficiencia de las transacciones de Bitcoin, reduce los costos, y al mismo tiempo conserva sus características descentralizadas.
Figura 1: Diagrama del Canal de Estado
Mecanismo HTLC (Contratos con bloqueo de tiempo y hash)
La Lightning Network de Bitcoin también adopta canales de pago basados en Contratos con Bloqueo de Tiempo y Hash (HTLC, por sus siglas en inglés) para implementar un sistema de canal de pago multi-salto y enrutado. En la implementación, los HTLC requieren un script de transacción complejo definido en un lenguaje de script para cumplir con la condición de hash y la condición de bloqueo de tiempo. Este script se utiliza para la inicialización al abrir el canal de pago y se activa durante el pago. De esta manera, la Red Lightning de Bitcoin logra eficiencia y seguridad para pagos entre cadenas.
HTLC (Contrato con Bloqueo de Tiempo y Hash) es un contrato de bloqueo de tiempo y hash, que es uno de los componentes importantes para implementar transacciones entre cadenas en la cadena de bloques. Los HTLC tienen dos aplicaciones comunes: intercambios atómicos entre cadenas y canales de pago en la Lightning Network. Los HTLC pueden bloquear una transferencia y establecer condiciones de desbloqueo, como proporcionar información específica dentro de un tiempo especificado. Esto asegura que los fondos solo se puedan retirar por el destinatario cuando se cumplen las condiciones.
Técnicamente, un HTLC es una salida adicional en una Transacción de Compromiso con un script de salida único. Este es un script que contiene operaciones como OP_HASH160, OP_EQUALVERIFY, etc., utilizado para bloquear fondos de manera que solo proporcionar el valor preimagen R pueda desbloquearlos. Este script tiene dos caminos posibles. El primer camino (definido en OP_IF) envía fondos a Bob si Bob puede proporcionar R. El segundo camino es aplicar un bloqueo de tiempo usando nLockTime en la transacción de pago, permitiendo reembolsos a Alice después de que caduque el bloqueo.
Ejemplo de enrutamiento
En la Lightning Network, Alice desea pagar 1 bitcoin a Eric, pero no hay un canal de pago directo entre Alice y Eric. Entonces, Alice enruta el pago a través de nodos intermedios en la red de canales de pago (Bob, Carol, Diana) para construir un camino de pago seguro, permitiéndole pagar indirectamente 1 bitcoin a Eric. El enrutamiento de pagos utiliza HTLCs: solo proporcionando el “secreto” correcto dentro de una ventana de tiempo específica se pueden desbloquear los fondos, asegurando la seguridad del pago.
En este ejemplo, en el Paso 1, Eric genera un Secreto R (solución) y calcula el valor hash H (rompecabezas), luego da el valor hash H a Alice.
Pasos 2-5: Alice, Bob, Carol, Diana y Eric construyen cada uno pares de HTLCs, requiriendo la provisión de R (solución) dentro de un período de tiempo determinado para recuperar los fondos bloqueados de la parte aguas arriba.
Pasos 6-9: Eric proporciona R (solución) a Diana para recuperar 1 BTC. Diana luego recupera el BTC de Carol con R, y R se pasa hacia atrás de esta manera hasta que se recupera el 1.003 BTC de Alice (0.003 BTC de los cuales es la tarifa de servicio para nodos intermedios).
En este ejemplo, si en el Paso 6 Eric no proporciona R (solución) dentro del tiempo fijo, después de la expiración del tiempo, los fondos bloqueados en los Pasos 2-5 se desbloquearán directamente y se devolverán.
Figura 2: Ejemplo de Enrutamiento
Ataque de ciclo de reemplazo
El mecanismo de reemplazo de transacciones en Bitcoin se refiere a cuando una transacción se marca como reemplazable; entonces, otra transacción con una tarifa más alta puede reemplazarla en la red antes de que se confirme en un bloque. Si una transacción recibe una tarifa absoluta y una tarifa porcentual más altas, puede reemplazar transacciones pendientes no confirmadas que entren en conflicto directo con ella. Después de recibir la transacción de reemplazo, los nodos eliminarán la transacción original con una tarifa porcentual más baja de la mempool y solo conservarán la transacción de reemplazo. El mecanismo de reemplazo de transacciones permite ajustar las tarifas de transacción u otros parámetros antes de que la transacción se confirme. Sin embargo, este mecanismo también puede ser utilizado para llevar a cabo ataques de denegación de servicio de transacciones, como reemplazar repetidamente una transacción crítica, provocando que no se confirme. Por lo tanto, el mecanismo de reemplazo de transacciones proporciona conveniencia para ajustar transacciones, pero también introduce riesgos de abuso.
Según el correo electrónico del desarrollador de Bitcoin Core, Antoine Riard, el ataque de ciclo de reemplazo se centra principalmente en los canales de pago en la Lightning Network de Bitcoin. El atacante transmite una transacción HTLC-preimagen con una tarifa absoluta y tarifa porcentual más altas para reemplazar la transacción HTLC-timeout del nodo honesto.
Durante el reemplazo, el atacante puede agregar entradas o salidas adicionales para asegurar que la transacción de reemplazo sea aceptada con éxito por la red. Este método de ataque puede resultar en el doble gasto de fondos en los canales de pago, es decir, después de que el nodo honesto transmite la transacción HTLC-timeout, el atacante recupera con éxito los fondos a través del reemplazo.
Podemos proporcionar un ejemplo sencillo para ilustrar, similar al ejemplo anterior, asumiendo que la ruta se simplifica solo a Alice, Bob y Eric, y Alice y Eric coluden para robar los BTC de Bob.
Paso 1: Alice tiene la intención de pagar 1 BTC a Eric a través de Bob. Tanto Alice\Bob como Bob\Eric construyen un HTLC. Eric debe proporcionar R (solución) a Bob antes del bloque 1020 (asumamos que la altura actual es 1000), de lo contrario, Bob puede recuperar los 1 BTC bloqueados; de manera similar, Bob debe responder a Alice antes del bloque 1080, de lo contrario, Alice puede recuperar su 1 BTC.
Paso 2: Eric no proporciona R (solución) a Bob antes del bloque 1020. Bob transmitirá una transacción que contiene HTLC-timeout. Los fondos en esta transacción se reembolsarán a Bob.
Paso 3: Eric monitorea la transacción HTLC-timeout de Bob y la reemplaza con una transacción HTLC-preimagen con una tarifa porcentual más alta. Luego, Eric inicia otra transacción para expulsar la HTLC-preimagen anterior de la mempool.
Paso 4: El nodo de Bob volverá a transmitir la transacción HTLC-timeout hasta el bloque 1080. Eric puede iniciar un reemplazo cada vez. Hasta el bloque 1080, la transacción de la otra parte del canal, Alice, se confirma, y Alice recupera los BTC bloqueados.
Paso 5: Eric obtiene que su HTLC-preimagen se confirme, por lo que los 1 BTC bloqueados por Bob se transfieren a Eric.
Así, los 1 BTC de Bob se transfirieron a Eric, mientras que él no recibió los BTC debidos de Alice.
Resumen
Hasta noviembre de 2023, la Red Lightning cuenta con más de 16.000 nodos Lightning y 5000 BTC. Aunque no se han confirmado casos reales de ataques de ciclo de reemplazo, esto resalta la necesidad de una investigación continua de seguridad y mejoras para la Lightning Network. Antoine Riard también sugirió varias medidas para evitar o mitigar los ataques de ciclo de reemplazo, como monitorear la mempool local y las transacciones transmitidas, construir redes superpuestas entre mineros y nodos Lightning, y reproducir activamente transacciones de expiración HTLC para aumentar los costos del atacante. Sin embargo, al mismo tiempo, anunció la interrupción de su participación en la Lightning Network y en el trabajo de implementación, incluida la coordinación de soluciones para vulnerabilidades de seguridad a nivel de protocolo.
A medida que la Lightning Network se expande, la amenaza potencial de ataques de ciclo de reemplazo puede convertirse en un obstáculo en su camino de desarrollo, obligando a la comunidad a centrarse más en la investigación de seguridad y las mejoras. Sin embargo, es precisamente abordando seriamente y mejorando los problemas de seguridad que podríamos presenciar cómo la Lightning Network resuelve gradualmente los riesgos potenciales en el futuro, logrando un ecosistema más saludable y confiable.