Cómo crear un nodo Lightning de Bitcoin en Linux

Imagen destacada del nodo Lightning de Bitcoin

Uno de los mayores problemas al usar Bitcoin son los largos tiempos de transacción. Esto puede ser frustrante para los nuevos usuarios que recién están comenzando en esta moneda digital. Una de las maneras más fáciles de mejorar esto es usar una capa de pago secundaria como Bitcoin Lightning.

Bitcoin Lightning es un sistema que utiliza transacciones personalizadas de Bitcoin para mover activos rápidamente fuera del proceso regular de la blockchain. En este sentido, Lightning es similar a la red Tor, donde utiliza TCP/IP como su columna vertebral al enrutar conexiones anónimas.

Tabla de Contenidos

  • ¿Por qué es lento Bitcoin?
  • ¿Cómo funciona la red Lightning?
  • Configurando tu propio nodo Lightning de Bitcoin
  • Preguntas Frecuentes

También lee: Cómo gestionar tus finanzas con el modo Ledger en Emacs

Bitcoin te permite intercambiar dinero fácilmente a través de Internet sin una autoridad central. Cada transacción que realizas es directa al beneficiario, y la distribuyes a través de toda la red.

¿Por qué es lento Bitcoin?

Visualización de bloques de Bitcoin del nodo Lightning 03

Como resultado, cualquier pago que realices dentro de Bitcoin toma tiempo para completarse y confirmarse. Por ejemplo, una transacción regular de Bitcoin normalmente toma de 10 a 30 minutos en procesarse.

¿Cómo funciona la red Lightning?

En su núcleo, Lightning funciona creando un pago “on-chain” que estaciona una cantidad de Bitcoin en tu nodo. Lightning luego utiliza tu Bitcoin estacionado para crear un canal entre otros nodos Lightning.

Gráfico de la red Lightning del nodo Lightning de Bitcoin 04

Esto te permite crear pagos adicionales “off-chain” a través de Lightning que no necesitan procesarse en la blockchain, reduciendo significativamente el tiempo de pago entre dos usuarios. Por ejemplo, una transacción regular de Lightning solo toma alrededor de un segundo en procesarse.

También lee: Cómo solucionar el alto uso de CPU en Linux

Configurando tu propio nodo Lightning de Bitcoin

Para comenzar con Lightning, es bueno tener tu propio nodo personal. Similar a configurar un nodo de Bitcoin, un nodo Lightning te permite tener control total sobre tus transacciones en su red.

Para comenzar la instalación, necesitas tener disponibles y listos varios recursos:

  • Máquina con una cantidad decente de almacenamiento y memoria. En mi caso, estoy usando un viejo Dell Optiplex de escritorio con 1TB de almacenamiento y 2GB de RAM.
  • Conexión a Internet constante, ya que un nodo Lightning necesita comunicarse regularmente con otros nodos para mantener su estado.
  • Pequeña cantidad de Bitcoin que puedes usar para “financiar” tu nodo Lightning.

Conociendo estos factores, este tutorial se centra en instalar c-lightning en una máquina Ubuntu 22.04.1 LTS.

Obtención de las dependencias

El primer paso para instalar c-lightning es crear una nueva cuenta de usuario para asegurar que cualquier archivo y configuración para tu nodo estará separada de tu usuario principal:

sudo useradd -s/bin/bash-d/home/lightning -m-Gsudo lightning  
sudopasswd lightning

Crear nuevo usuario del nodo Lightning de Bitcoin 05

Cambia a este nuevo usuario ejecutando: su lightning, luego agrega un repositorio de terceros que contendrá todos los programas para que c-lightning funcione:

sudo add-apt-repository -u ppa:lightningnetwork/ppa

Instala las dependencias del nodo:

sudo apt install software-properties-common lightningd snapd

Instalar dependencias del nodo Lightning de Bitcoin 06

También lee: 4 maneras de aumentar la duración de la batería de tu laptop Linux

Configurando un nodo Bitcoin simple

Desde aquí, necesitas instalar y configurar un nodo Bitcoin simple. Como se discutió anteriormente, Lightning es una red de superposición que funciona utilizando transacciones personalizadas de Bitcoin para crear “canales de financiamiento”.

Para crear estos canales, tu nodo Lightning necesita funcionar junto a un nodo Bitcoin simple que se puede instalar ejecutando el siguiente comando:

sudo snap install bitcoin-core

Instalar Bitcoin con Snap del nodo Lightning de Bitcoin 07

Crea un enlace simbólico entre tu directorio raíz “snap” y la carpeta “bin”:

sudoln-s/snap/bitcoin-core/current/bin/bitcoin{d,-cli}/usr/local/bin/

Inicia la descarga del bloque inicial para tu nodo Bitcoin:

bitcoind -daemon

Este comando enviará el nodo al fondo para descargar y verificar toda la blockchain de Bitcoin. Puedes verificar su progreso ejecutando el siguiente comando:

tail-f/home/$USER/.bitcoin/debug.log

Registro de descarga del nodo Lightning de Bitcoin 08

Es importante tener en cuenta que este proceso puede tomar entre unas pocas horas y unos días. Por ejemplo, mi escritorio Dell Optiplex tardó 5 días en sincronizarse completamente con la red Bitcoin.

Configurando tu nodo Bitcoin simple

Una vez que tu nodo esté sincronizado con la red, asegúrate de que sea compatible con Lightning deteniendo primero el nodo de Bitcoin:

bitcoind stop

Edita su archivo de configuración en “ /etc/bitcoin.conf”:

nano/home/$USER/.bitcoin/bitcoin.conf

Archivo de configuración del nodo Lightning de Bitcoin 09

Desactiva dos opciones: walletbroadcast y prune. La primera opción le dice a tu nodo Bitcoin que solo use sus datos con Lightning, y la segunda opción asegura que estás guardando toda la blockchain en tu disco duro.

walletbroadcast=0  
prune=0

Reinicia tu nodo Bitcoin ejecutando el siguiente comando:

bitcoind -daemon

Iniciando tu nodo Lightning de Bitcoin

Inicia tu nodo Lightning ejecutando el siguiente comando:

lightningd --network=bitcoin --log-level=debug --daemon

Inicializar nodo Lightning de Bitcoin 11

Este comando enviará el nodo al fondo y creará sus archivos de configuración en “ /home/$USER/.lightning”. Prueba si tu nodo Lightning está funcionando correctamente con este comando:

lightning-cli --lightning-dir=$HOME/.lightning getinfo

Verificar información del nodo Lightning de Bitcoin 12

También lee: Las mejores herramientas de código abierto para asegurar tu servidor Linux

Finalizando tu nodo Lightning de Bitcoin

Con c-lightning en funcionamiento, puedes finalizar tu nodo creando los “canales de financiamiento” entre diferentes pares Lightning. Como se discutió anteriormente, un “canal de financiamiento” es una transacción personalizada de Bitcoin que te permite mover tu Bitcoin sin comprometerlo a la blockchain.

Para crear esto, primero “deposita” Bitcoin en tu nodo Lightning generando una dirección de recepción para tu nodo con el siguiente comando:

lightning-cli newaddr

Generar dirección de Bitcoin del nodo Lightning 13

Ve a una billetera externa y envía Bitcoin a esa dirección de recepción. En mi caso, enviaré 0.00050000 BTC usando mi billetera Bitcoin Core.

Enviar fondos desde billetera externa del nodo Lightning de Bitcoin 14

Una vez que la transacción esté en la blockchain, tu nodo Lightning actualizará automáticamente su saldo de fondos. Visualiza esto ejecutando el siguiente comando:

lightning-cli listfunds

Conectando con nodos Lightning de Bitcoin remotos

Comienza a conectar tu nodo con sus pares en la red para permitirte enviar y recibir Bitcoin a través de Lightning.

Para comenzar, encuentra tanto su clave pública como su dirección IP. Similar a usar cifrado PGP, esto te permite conectar y verificar la autenticidad de un nodo a través de la criptografía de clave pública.

Una de las herramientas más comunes para hacer esto es 1ML: un sitio web que lista todos los nodos Lightning activos en la red.

Lista de nodos 1ml del nodo Lightning de Bitcoin 15

Una vez que tengas un nodo activo, usa el comando lightning-connect para establecer una solicitud de par. Por ejemplo, este comando conectará mi nodo a ACINQ:

lightning-cli connect 1 03864ef025fde8fb587d989186ce6a4a186895ee44a926bfc370e2c366597a3f8f 3.33.236.230
  • El primer valor indica el número de ranura que deseas asignar al par actual. Para este nodo, estoy usando la ranura 1.
  • El segundo valor es la clave pública del nodo remoto. En este caso, estoy usando la clave pública de ACINQ.
  • El tercer valor es la dirección IP pública del nodo remoto.

Para finalizar la solicitud, envía parte del saldo de Bitcoin de tu nodo al nodo remoto para crear un “canal de financiamiento” entre tú y un nodo par.

Por ejemplo, este comando creará un “canal de financiamiento” por 0.00030000 BTC al primer par en mi lista:

lightning-cli fundchannel 130000

Canal de financiamiento del nodo Lightning de Bitcoin 16

Enviando y recibiendo pagos Lightning

Con un “canal de financiamiento” activo, usa tu nodo para enviar y recibir pagos. Por defecto, Lightning utiliza el formato BOLT11 que comienza con “lnbc” para diferenciarlo de Bitcoin.

Para enviar Bitcoin a través de Lightning, debes conocer la dirección BOLT11 de tu destinatario. Por ejemplo, el siguiente comando envía 0.00005000 BTC a una dirección remota:

lightning-cli pay lnbc20m1[...]qdhhwkj 50000

Enviar Bitcoin Lightning del nodo Lightning de Bitcoin 18

También puedes recibir Bitcoin a través de Lightning usando el comando invoice y especificar la cantidad exacta de Bitcoin que deseas recibir. Por ejemplo, este comando crea una factura por 0.00010000 BTC:

lightning-cli invoice 100000

Obtener Bitcoin Lightning del nodo Lightning de Bitcoin 19

También lee: Cómo encontrar archivos grandes en Linux

Preguntas Frecuentes

Estoy usando Dojo como mi nodo Bitcoin. ¿Es posible usarlo con c-lightning?

No. Por defecto, Dojo es un programa que utiliza contenedores Docker para ejecutar una instancia aislada de Bitcoin Core. Un nodo Bitcoin de Dojo no podrá comunicarse con ningún programa fuera de su contenedor aislado.

Mi billetera no soporta una dirección “bc1”. ¿Es posible depositar en mi nodo Lightning?

¡Sí! Aunque c-lightning genera nativamente en un formato de dirección “bc1”, es posible transferir Bitcoin a un nodo Lightning utilizando el formato P2SH más antiguo. Para hacer esto, ejecuta el siguiente comando: lightning-cli newaddr p2sh-segwit.

Mi pago Lightning ocasionalmente falla. ¿Está roto mi nodo?

¡No! Este problema se debe probablemente a una falta de conexiones de nodo entre tú y el destinatario. La red Lightning, por diseño, depende de que cada nodo hable de manera consistente y directa entre sí.

Una forma de solucionar este problema es aumentar la cantidad de pares y “canales de financiamiento” a los que tu nodo local se conecta. Por ejemplo, tener al menos dos o tres pares activos te permitirá conectarte a casi cualquier usuario de Lightning.

Crédito de imagen: Unsplash y Wikimedia Commons. Todas las alteraciones y capturas de pantalla por Ramces Red.