General

Conexiones (peer) y Canales

  • Los 'Peers' son nodos conectados entre si a través de internet (TCP/IP).

  • Un canal hace referencia a un "canal de pago" establecido entre dos nodos (peers) de la red Lightning.

  • Para abrir un canal primero se debe establecer una conexión entre nodos (peers).

  • Se puede establecer una conexión automática con nodos de acceso público.

  • Si uno de los nodos no es de acceso público, la conexión entre las partes debe iniciarse manualmente desde el nodo privado, incluso si el nodo de acceso público está abriendo el canal.

Recibir pagos

Para poder recibir pagos en la red Lightning, un nodo necesita:

  • "liquidez entrante" (balance remoto), es decir, se requiren algunos satoshis en el otro lado del canal.

  • un canal a un nodo "bien conectado" o un canal directo desde el nodo que paga. Esto asegura que exista una ruta de pago viable.

La cantidad máxima permitida para un pago está determinada por la "liquidez entrante" más alta de un canal en la ruta de pago (no es acumulable entre canales ).

Tamaño del canal y elección de nodos (peers)

  • No hay un número sugerido, pero en general se recomienda evitar la apertura de canales con menos 200K-500K sats.

  • https://1ml.com/statistics muestra el tamaño promedio por canal en la red:

    0.028 BTC = 2 800 000 satoshis (28 Mayo 2019).

  • Un canal demasiado pequeño podría resultar en que no se pueda cerrar cuando los costos por transacción "on-chain" estén altos. Esto dejará al canal vulnerable si la contraparte intenta cerrar con un estado previo (los fondos en el canal podrían ser robados ).

  • El tamaño máximo del un pago directo o enrutado está determinado por la liquidez direccional más alta de un solo canal en la ruta de pago (no acumulable entre canales ).

  • Un canal grande a un nodo estable y "bien conectado" es más útil que muchos pequeños.

  • Es recomendado conectarse a nodos donde el operador pueda ser contactado en caso de un problema.

  • Elija un nodo que conozca o uno de la siguiente lista: https://1ml.com/node?order=nodeconnectednodecount

  • Recomendaciones si su nodo es público: https://moneni.com/nodematch

Costos "On-chain" bitcoin

  • Abrir o cerrar un canal Lightning es una transacción "on-chain" bitcoin (visible/hecha en la blockchain )

  • El tiempo de confirmación depende del estado de la "mempool" de bitcoin (https://jochen-hoenicke.de/queue/#0,24h) y de los sats/byte usados para pagar los costos de transacción (https://bitcoinfees.earn.com/).

  • Verificar https://whatthefee.io/ para obtener una estimación de confirmación de acuerdo al tiempo/costo.

  • Use un costo personalizado y elija el número más bajo de acuerdo a un tiempo de confirmación aceptable.

  • Los costos pagados deben cubrir al menos 141 bytes, sin embargo, este número suele ser mayor dependiendo de las entradas (en la transacción), "script" y cantidad de firmas.

  • Aprenda qué hacer en un entorno de costos "on-chain" altos

Nodos Tor

Tor es una red "anonimizada" diseñada para ocultar la dirección IP de los participantes. Algo similar a usar una VPN pero con "varios saltos". Más información en: https://es.wikipedia.org/wiki/Tor_(red_de_anonimato)

  • Un nodo Lightning "detrás" de Tor puede conectarse y abrir un canal con cualquier otro nodo.

  • Los nodos corriendo en "clearnet" no pueden ver "detrás" de Tor.

  • Un nodo corriendo en "clearnet" debe ser agregado primero por el nodo "detrás" de Tor para poder abrir un canal.

  • Una vez se crea el canal, la conexión persistirá, sin embargo, si se reinicia alguno de los nodos es posible que tarde un poco en reestablecerse la conexión.

  • Si ambos nodos se reinician al mismo tiempo o si la dirección IP del nodo en la "clearnet" cambia mientras ambos están fuera de línea, la conexión debe agregarse manualmente nuevamente.

Pagos enrutados

  • Imagine un nodo B en una conexión en serie A-B-C.

  • Los canales de B están configurados para que haya capacidad de entrada (balance remoto) desde A y capacidad de salida (balance local) a C.

  • Si "A" quiere hacer un pago a "C", habrá 1 nodo intermedio (o 1 salto) en la ruta.

  • Internamente: A envía los satoshis a B (nodo de enrutamiento) y este pagará a C.

  • La capacidad de los canales no cambia, solo "se mueve".

  • El pago solo puede realizarse si se puede enviar una "imagen hash" (un mensaje) desde el destino.

  • El proceso es "todo o nada", el pago no se puede "atascar" en un nodo intermedio.

Canal privado

  • mejor conocido como canal "no anunciado"

  • no será publicado en el "grafo de canales" (red gossip)

  • más útil para enviar pagos

  • para recibir pagos es necesario tener un "route hint" (pista de ruta) incluida en la factura:

    lncli addinvoice <amount> --private

  • el "route hint" es el identificador de la transacción de financiación (expone el canal a cualquiera que conozca la factura)

  • es posible recibir pagos "keysend" si se conoce el "route hint"

  • no enruta pagos (a menos que se use en paralelo con un canal público al mismo nodo, también conocido como liquidez en la sombra)

Costos de enrutamiento de la red Lightning

Configuración avanzada y automatizada de costos: fees.md

A diferencia de las transacciones "on-chain" (donde los costos de transacción se pagan por los bytes que ocupa la transacción en un bloque ), los costos en la red Lightning están relacionados con la cantidad enrutada. Hay dos componentes de tarifa:

  • costo base (base_fee_msat). El valor por defecto es 1000 milisat, es decir, 1 satoshi por cada pago enrutado.

  • el costo proporcional (fee_rate). El valor por defecto en lnd es 0.000001 BTC, es decir, se cobra 1 satoshi adicional por cada millón de satoshis enrutado.

No hay costo por transacción para pagos en un canal directo entre dos nodos.

Para cambiar los costos de enrutamiento de su nodo, use lo siguiente: https://api.lightning.community/#updatechannelpolicy

  • Puede reducir el costo base a 500 msat y aumentar la tarifa proporcional a 100ppm/0.01% con este comando: $ lncli updatechanpolicy 500 0.0001 144

  • La configuración por defecto es (1 sat por pago + 1 ppm/0.0001%): $ lncli updatechanpolicy 1000 0.000001 144

En caso de que se enruten pagos a través de un canal "costoso" es importante aumentar la tarifa de enrutamiento para poder pagar el rebalanceo o cierre del canal. Verifique las tarifas de enrutamiento en 1ml.com o en lndmanage.

Configurar costos para canales individuales solo requiere un clic en el app RTL.

Watchtowers

Leer más sobre cómo configurar uno en watchtower.md.

Liquidez

Lea las ideas básicas de Alex Bosworth: https://github.com/alexbosworth/run-lnd/blob/master/LIQUIDITY.md

Crear liquidez entrante (Inbound)

Paga con Lightning y recibe "on-chain". Ver lista de recomendaciones CreateInboundLiquidity.md

Crear liquidez saliente (Outbound)

Abra canales o pague "on-chain" y reciba en la red Lightning. Ver lista de recomendaciones CreateOutboundLiquidity.md

Administración de canales

Para maximizar la capacidad de enrutar pagos es mejor balancear los canales con fondos en ambos lados (permite tráfico bidireccional).

Es una herramienta con multiples funciones para trabajar con balances LND. Tiene una funcionalidad experimental para conectarse a un bot en Telegram y notificar la actividad del nodo.

Es un administrador automatizado para nodos de reenvío C-Lightning

lndmanage

Es una herramienta de consola, escrita en python, para la administración avanzada de canales de un nodo LND.

  • Instalar con:

    # activate virtual environment
    sudo apt install -y python3-venv
    python3 -m venv venv
    source venv/bin/activate
    # get dependencies
    sudo apt install -y python3-dev libatlas-base-dev
    pip3 install wheel
    python3 -m pip install lndmanage
  • Iniciar modo interactivo (hacer esto cada vez):

    $ source venv/bin/activate
    (venv) $ lndmanage
  • Mostrar el estado de los canales:

    $ lndmanage status
    $ lndmanage listchannels rebalance
  • Ejemplo de rebalanceo:

    $ lndmanage rebalance --max-fee-sat 20 --max-fee-rate 0.0001 CHANNEL_ID --reckless

Este script de Python permite reequilibrar fácilmente los canales individuales un nodo lnd.

  • Para instalar ejecutar los siguiente en la terminal del nodo lnd:

    $ git clone https://github.com/C-Otto/rebalance-lnd
    $ cd rebalance-lnd
    $ pip install -r requirements.txt
  • Modo de uso (más opciones en el readme):

    $ python rebalance.py -t <channel_ID-where-to-move-sats> -f <channel_ID-from-which-to-move-sats> -a <amount-of-sats-to-be-moved>

  • Realice un intercambio de confianza entre "on-chain" y "off-chain".

  • Abra un canal balanceado y con doble financiación con un nodo de confianza utilizando el comando que requiere una transacción Lightning y una "on-chain".

Software de monitoreo

RTL es una interfaz web para Lightning Network Daemon(LND). Destinado a ser utilizado en una red local. Los métodos de conexión disponibles son HTTPS o Tor.

https://medium.com/@suheb__/how-to-ride-the-lightning-447af999dcd2

Un administrador para nodos Lightning LND en su navegador.

ZeusLN

Aplicación móvil (Android e iOS) para operadores de nodos Lightning Network Daemon (lnd). Se conecta a través del API REST (puerto 8080 o Tor)

Zap

Billetera Lightning de escritorio y móvil (iOS y Android), puede conectarse a su nodo LND de forma remota a través de la interfaz GRPC (puerto 10009)

Joule

Trae el poder de Lightning a la web con pagos e identidad en el navegador, todo con su propio nodo. https://medium.com/lightning-power-users/bitcoin-lightning-joule-chrome-extension-ac149bb05cb9

lndash

lndash es un dashboard web (simple) de solo lectura para lnd - Lightning Network Daemon. Demo: https://lightninglayer.com/

Características:

  • Vista de nodos (peers)

  • Vista de canales

  • Vista de eventos Forwarding (pagos enrutados)

  • Herramienta Looking Glass (ruta/búsqueda de ruta)

  • Grafo de la red Lightning

lntop

lntop es un visor de canales, en modo texto, para sistemas Unix.

lnd-admin

Interfaz web de administración para LND a través de gRPC. Hecho en Node.js, express, bootstrap-v4. Demo: https://lnd-admin.chaintools.io/

lndmon

Solución de monitoreo para nodos lnd utilizando Prometheus y Grafana. https://blog.lightning.engineering/posts/2019/07/24/lndmon-v0.1.html

Spark es una billetera minimalista para c-lightning. Es accesible a través de la web o mediante aplicaciones móviles y de escritorio (para Android, Linux, macOS y Windows). Actualmente está orientado a usuarios técnicos y no es un paquete "todo en uno", es mas una interfaz de "control remoto" para un nodo c-lightning que debe administrarse por separado.

Exploradores de la red Lightning

Recursos

Enrutamiento

Videos

Foros

Aprende