Configurar un Watchtower y un Cliente en la red Lightning

Un watchtower monitorea la blockchain de bitcoin para detectar transacciones que intenten robarle cerrando un canal con un estado anterior inválido. Si se encuentra una infracción el watchtower transmite inmediatamente una transacción de castigo que mueve todos los fondos del canal a una billetera on-chain.

Si hay dos nodos bajo su control desde lnd v0.7.0, puede configurarlos para que se vigilen entre sí. Es mejor hacerlo con nodos en dos ubicaciones físicas separadas para reducir el riesgo de pérdida de conexión.

Actualizar lnd

Ver https://github.com/lightningnetwork/lnd/releases/arrow-up-right para obtener la última versión y sus notas correspondientes. Actualice manualmentearrow-up-right o use un script automatizadoarrow-up-right para actualizar lnd en un RaspiBlitz o un sistema compatible.

Configurar el Watchtower

Ejecute los siguientes comandos en la terminal del nodo

# significa $ sudo

  • Edite el lnd.conf:

    # nano /mnt/hdd/lnd/lnd.conf

  • inserte las siguientes líneas al final del archivo:

    [Watchtower]
    watchtower.active=1
    • de forma predeterminada el watchtower escucha en el puerto 9911 pero se puede configurar en cualquier otro utilizando watchtower.listen = 0.0.0.0: PORT en el archivo de configuración.

    • La dirección IP 0.0.0.0 se usa para aceptar conexiones desde cualquier lugar (configuración predeterminada)

  • habilite el puerto a través del firewall: # ufw allow 9911 comment "watchtower" # ufw enable

  • reinicie lnd # systemctl restart lnd

  • redireccione el puerto 9911 en el router

  • Verifique en el log si el servicio está funcionando: # tail -n 10000 /mnt/hdd/lnd/logs/bitcoin/mainnet/lnd.log

    Ejemplo del log:

      2019-06-21 09:08:58.544 [INF] WTWR: Starting watchtower
      2019-06-21 09:08:58.544 [INF] WTWR: Starting lookout
      2019-06-21 09:08:58.544 [INF] WTWR: Starting lookout from chain tip
      2019-06-21 09:08:58.544 [INF] WTWR: Lookout started successfully
      2019-06-21 09:08:58.545 [INF] WTWR: Starting watchtower server
      2019-06-21 09:08:58.544 [INF] DISC: Attempting to bootstrap with: Authenticated Channel Graph
      2019-06-21 09:08:58.545 [INF] CMGR: Server listening on 127.0.0.1:9911
      2019-06-21 09:08:58.545 [INF] NTFN: New block epoch subscription
      2019-06-21 09:08:58.545 [INF] WTWR: Watchtower server started successfully
      2019-06-21 09:08:58.546 [INF] WTWR: Watchtower started successfully
      2019-06-21 09:08:58.547 [INF] CHBU: Swapping old multi backup file from /home/bitcoin/.lnd/data/chain/bitcoin/mainnet/temp-dont-use.backup to /home/bitcoin/.lnd/data/chain/bitcoin/mainnet/channel.backup
      2019-06-21 09:08:58.575 [INF] DISC: Obtained 3 addrs to bootstrap network
      2019-06-21 13:10:27.014 [INF] WTWR: Watchtower started successfully
      2019-06-21 13:14:50.743 [INF] WTWR: Accepted incoming peer 02b5792e533ad17fc77db13093ad84ea304c5069018f97083e3a8c6a2eac95a63f@171.25.193.25:34413
      2019-06-21 13:14:51.074 [INF] WTWR: Accepted session for 02b5792e533ad17fc77db13093ad84ea304c5069018f97083e3a8c6a2eac95a63f
      2019-06-21 13:14:51.074 [INF] WTWR: Releasing incoming peer 02b5792e533ad17fc77db13093ad84ea304c5069018f97083e3a8c6a2eac95a63f@171.25.193.25:34413

    Filtre los mensajes relevantes con (presione CTRL+C para salir): # tail -f -n 10000 /mnt/hdd/lnd/logs/bitcoin/mainnet/lnd.log | grep WTWR

  • Consulte el pubkey con: $ lncli tower info

    El pubkey del watchtower es distinto del pubkey del nodo lnd.

Configurar el nodo a monitorear (el cliente watchtower)

  • [LND v0.8.0+] Registre uno o mas watchtower(s):

    • Edite lnd.conf:

      # nano /mnt/hdd/lnd/lnd.conf

    • inserte las siguientes líneas al final del archivo:

      Agregue un watchtower desde la consola (puede agregar varios, uno por uno):

    • Use el watchtower-pubkey anotado anteriormente con $ lncli tower info.

    • Para un cliente clearnet, el host debe ser la IP clearnet (o dynamicDNS) del watchtower, incluso si este se ejecuta a través de Tor.

  • Reinicie lnd # systemctl restart lnd

  • Verifique en el log si el servicio está funcionando: # tail -n 100 /mnt/hdd/lnd/logs/bitcoin/mainnet/lnd.log

    Ejemplo del log:

    Filtre los mensajes relevantes con: (presione CTRL+C para salir): # tail -f -n 10000 /mnt/hdd/lnd/logs/bitcoin/mainnet/lnd.log | grep WTCL

    Para tener más información en el log, agregue la siguiente línea al archivo lnd.conf:

    o ejecute el siguiente comando: lncli debuglevel --level=WTWR=debug,WTCL=debug

    Ejemplo del log:

    ¡Siéntese y disfrute que ahora no hay forma de engañar a su nodo incluso cuando está desconectado!

Configuración para nodos con Tor

Ambos nodos (el watchtower y el cliente lnd) deben usar Tor para poder comunicarse.

Configuración de Tor Watchtower

  • Edite lnd.conf:

    # nano /mnt/hdd/lnd/lnd.conf

  • inserte las siguientes líneas al final del archivo:

  • Edite el archivo de configuración de Tor del watchtower: # nano /etc/tor/torrc

    agregue las siguientes líneas:

  • reinicie Tor y lnd con systemctl: # systemctl restart tor y # systemctl restart lnd

  • Consulte la dirección onion del watchtower ejecutando: # cat /mnt/hdd/tor/lndWT9911/hostname

  • Consulte el pubkey del watchtower (watchtower-pubkey) con $ lncli tower info

  • Filtre los mensajes relevantes con (CTRL+C para salir): # tail -f -n 10000 /mnt/hdd/lnd/logs/bitcoin/mainnet/lnd.log | grep WTWR

    Ejemplo del log del watchtower:

Configuración del cliente Tor Watchtower

  • [LND v0.8.0+] Registre uno o mas watchtower(s):

    • Edite lnd.conf:

      # nano /mnt/hdd/lnd/lnd.conf

    • inserte las siguientes líneas al final del archivo:

    • Agregue un watchtower desde la consola (puede agregar varios, uno por uno):

      • Los detalles de un nodo de prueba están precargados. Recibe conexiones pero no hay garantía de que este servicio permanezca conectado.

      • Utilice el watchtower-pubkey que se indicó anteriormente de $ lncli tower info.

      • El host es la dirección .onion del watchtower anotada anteriormente de: # cat /mnt/hdd/tor/lndWT9911/hostname

  • reinicie lnd con systemctl: # systemctl restart lnd

  • Verifique qué watchtowers están escuchando: $ lncli wtclient towers

    Ejemplo:

  • Filtre los mensajes relevantes con (CTRL+C para salir): # tail -f -n 10000 /mnt/hdd/lnd/logs/bitcoin/mainnet/lnd.log | grep WTCL

    Ejemplo del log del cliente:

Más información:

https://github.com/lightningnetwork/lnd/blob/master/docs/watchtower.mdarrow-up-right

Últimas notas del release de lnd: https://github.com/lightningnetwork/lnd/releasesarrow-up-right

https://thebitcoinnews.com/watchtowers-are-coming-to-lightning/arrow-up-right

https://bitcoinops.org/en/newsletters/2019/06/19/arrow-up-right

Will O`Beirne muestra en este artículo (y el repositorio de GitHub) cómo demostrar una infracción y las acciones de un watchtower en una red simulada: https://medium.com/@wbobeirne/testing-out-watchtowers-with-a-simulated-breach-f1ad22c01112arrow-up-right

SLP83 Conner Fromknecht – Bitcoin Lightning Watchtowers in depth podcast: https://stephanlivera.com/episode/83arrow-up-right transcripción: http://diyhpl.us/wiki/transcripts/stephan-livera-podcast/2019-06-24-conner-fromknecht-stephan-livera/arrow-up-right

Busque algunos watchtowers altruistas y comparta los suyos: https://github.com/openoms/lightning-node-management/issues/4arrow-up-right

Last updated