# Curso Mastering Lightning 2023 - Bitácora
## Tabla de contenido
[TOC]
## Sesión 1 - Socrático Capítulos 1 y 2
:::warning
:warning: Repaso pendiente :eyes:
:::
### Material
:::info
- [ ] [Capítulo 1: “Introduction”](https://github.com/lnbook/lnbook/blob/develop/01_introduction.asciidoc)
- [ ] [Capítulo 2: “Getting Started”](https://github.com/lnbook/lnbook/blob/develop/02_getting_started.asciidoc)
- [ ] [Introducción a la lightning network](https://www.youtube.com/watch?v=u-Blz9FMBpc)
- [ ] [La vida de un canal de pagos](https://www.youtube.com/watch?v=RhwqnjO-AdY&t=736s)
- [ ] [Bitcoin is an innovative payment network and a new kind of money](https://btcinformation.org/)
- [ ] [Bitcoin Wiki](https://en.wikipedia.org/wiki/Bitcoin)
:::
### Preguntas y respuestas
1. ¿Qué es Lightning Network y cuál es la motivación para su desarrollo?
R. En pocas palabras: no puede escalar una cadena de bloques para validar las transacciones de todo el mundo de forma descentralizada.
Lightning Network propone una nueva red, una segunda capa, donde los usuarios pueden realizar pagos entre pares, sin la necesidad de publicar una transacción en la cadena de bloques de Bitcoin para cada pago. Los usuarios pueden pagarse entre sí en Lightning Network tantas veces como quieran, sin crear transacciones de Bitcoin adicionales ni incurrir en tarifas en cadena. Solo hacen uso de la cadena de bloques de Bitcoin para cargar bitcoins en Lightning Network inicialmente y liquidar, es decir, para eliminar bitcoin de Lightning Network. El resultado es que se pueden realizar muchos más pagos de Bitcoin fuera de la cadena, con solo la carga inicial y las transacciones de liquidación final que necesitan ser validadas y almacenadas por los nodos de Bitcoin. Además de reducir la carga sobre los nodos, los pagos en Lightning Network son más baratos para los usuarios porque no necesitan pagar tarifas de blockchain y más privados para los usuarios porque no se publican para todos los participantes de la red y, además, no se almacenan permanentemente.
Lightning Network es una red que opera como un protocolo de segunda capa sobre Bitcoin. Lightning Network permite pagos rápidos, seguros, privados, sin confianza y sin permiso.
2. Entre las características de LN reflejadas en el capítulo, ¿cuáles son las diferencias entre la red de Lightning y la de Bitcoin?
R.
* Los usuarios que intercambian valor a través de Lightning Network no necesitan esperar las confirmaciones de bloqueo para los pagos.
* Mientras que las transacciones de Bitcoin en cadena son transmitidas y verificadas por todos los nodos de la red, los pagos enrutados en Lightning Network se transmiten entre pares de nodos y no son visibles para todos, lo que resulta en una privacidad mucho mayor.
* A diferencia de las transacciones en la red Bitcoin, los pagos enrutados en Lightning Network no necesitan almacenarse permanentemente. Por lo tanto, Lightning utiliza menos recursos y, por lo tanto, es más barato. Esta propiedad también tiene beneficios para la privacidad.
* Lightning Network utiliza el enrutamiento de cebolla, similar al protocolo utilizado por la red de privacidad The Onion Router (Tor), de modo que incluso los nodos involucrados en el enrutamiento de un pago solo conocen directamente a su predecesor y sucesor en la ruta de pago.
3. ¿Qué es the fairness protocol? Piensa y recrea un ejemplo similar que pueda ser aplicado en la vida diaria.
R.
A medida que estudie los sistemas criptográficos, notará un cierto patrón: en lugar de depender de un tercero de confianza, estos sistemas intentan evitar resultados injustos mediante el uso de un sistema de incentivos y desincentivos. En los sistemas criptográficos se confía en el protocolo, que es efectivamente un sistema con un conjunto de reglas que, si se diseñan adecuadamente, aplicarán correctamente los incentivos y desincentivos deseados. La ventaja de este enfoque es doble: no solo evita confiar en un tercero, sino que también reduce la necesidad de imponer resultados justos. Mientras los participantes sigan el protocolo acordado y permanezcan dentro del sistema, el mecanismo de incentivos en ese protocolo logra resultados justos sin aplicación.
El uso de incentivos y desincentivos para lograr resultados justos es un aspecto de una rama de las matemáticas llamada teoría de juegos, que estudia "modelos de interacción estratégica entre tomadores de decisiones racionales". Los sistemas criptográficos que controlan las interacciones financieras entre los participantes, como Bitcoin y Lightning Network, se basan en gran medida en la teoría del juego para evitar que los participantes hagan trampa y permitir que los participantes que no confían entre sí logren resultados justos.
En este libro, llamamos a este patrón fairness protocol, definido como un proceso que utiliza un sistema de incentivos y/o desincentivos para garantizar resultados justos para los participantes que no confían entre sí. La aplicación de un protocolo de equidad solo es necesaria para garantizar que los participantes no puedan escapar de los incentivos o desincentivos.
Fairness protocol es el concepto fundamental que subyace tanto en Bitcoin como en Lightning Network
4. ¿Qué factores debes de considerar para recomendar una wallet de LN?
R.
* Las cadenas de bloques, especialmente las cadenas de bloques abiertas como Bitcoin, intentan minimizar o eliminar la confianza en terceros y empoderar a los usuarios. Esto a menudo se denomina modelo "sin confianza", aunque "confianza minimizada" es un término mejor. En dichos sistemas, el usuario confía en las reglas del software, no en terceros. Por lo tanto, la cuestión del control de las claves es una consideración principal al elegir una billetera Lightning.
* Todos los demás componentes de una billetera Lightning aportan consideraciones similares de confianza. Si todos los componentes están bajo el control del usuario, la cantidad de confianza en terceros se minimiza, brindando el máximo poder al usuario. Por supuesto, esto conlleva una compensación directa porque con ese poder viene la responsabilidad correspondiente de administrar software complejo.
| Tipo de custodia | Nodo Lightning completo | Nodo Lightning de terceros |
| ------------- | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------- |
| **Auto-custodia** | Q1: alta habilidad técnica, menos confianza en terceros, más sin permiso | P2: Habilidades técnicas por debajo del nivel medio, confianza en terceros por debajo del nivel medio, requiere algunos permisos |
| **Custodia** | P3: por encima de las habilidades técnicas medias, por encima de la confianza media en terceros, requiere algunos permisos | P4: habilidades técnicas bajas, alta confianza en terceros, menos sin permiso |
5. ¿Qué tipo de wallet le recomendarías a una persona que no sabe de crypto y que no tiene ni un satoshi y por qué? ¿Qué tipo de wallet le recomendarías a un bitcoiner que tiene satoshis, pero no ha usado carteras de Lightning y por qué?
R. Cada usuario debe considerar sus propias habilidades técnicas antes de decidir qué tipo de billetera Lightning usar. Aquellos con fuertes habilidades técnicas deben usar una billetera Lightning que pone todos los componentes bajo el control directo del usuario.
Aquellos con menos habilidades técnicas, pero con el deseo de controlar sus fondos, deben elegir una billetera Lightning sin custodia. A menudo, la confianza en estos casos se relaciona con la privacidad. Si los usuarios deciden subcontratar alguna funcionalidad a un tercero, generalmente renuncian a cierta privacidad ya que el tercero obtendrá información sobre ellos.
Finalmente, aquellos que buscan simplicidad y conveniencia, incluso a expensas del control y la seguridad, pueden elegir una billetera Lightning de custodia. Esta es la opción técnicamente menos desafiante, pero socava el modelo de confianza de la criptomoneda y, por lo tanto, debe considerarse solo como un trampolín hacia un mayor control y autosuficiencia.
6. ¿Qué implicaciones tiene que una wallet tenga o no un nodo completo de Bitcoin?
R.
7. ¿Qué implicaciones tiene que una wallet use el nodo Lightning de un tercero?
R.
8. ¿Cuáles son las 3 principales características de un nodo LN?
R.
## Sesión 2 - Socrático Capítulo 3
:::warning
:warning: Repaso pendiente :eyes:
:::
### Material
:::info
- [x] [Capítulo 3: “How the Lightning Network Works”](https://github.com/lnbook/lnbook/blob/develop/03_how_ln_works.asciidoc)
- [ ] [Understanding Payment Channels](https://blog.chainside.net/understanding-payment-channels-4ab018be79d4)
- [ ] [Bitcoin Protocol Design: Payment Channels Revisited](https://www.youtube.com/watch?v=4SdBa8ZOfqg)
- [ ] [HTLC Overview](https://ellemouton.com/posts/htlc/)
:::
### Preguntas y respuestas
1. ¿Cuál es el mínimo de sats para abrir un canal?
R.
2. ¿Los canales a través de los cuales se enruta un pago cambian su balance?
3. ¿Qué son los Smart Contracts? ¿Es realmente Lightning, Smart Contracts sobre Bitcoin?
4. ¿A quién se aplica el timelock del commitment transaction?
5. ¿Cuántas commitment transaction se pueden hacer en un canal de pagos?
R.
6. ¿Quién es el responsable de los costos (cuando es de mutuo acuerdo y cuando no) de las transacciones de cierre de un canal?
R. **Cierre cooperativo**: Las tarifas de transacción en cadena para la transacción de cierre son pagadas por el socio de canal que abrió el canal y no por el que inició el procedimiento de cierre. Usando el estimador de tarifas en cadena, los socios del canal acuerdan la tarifa apropiada y ambos firman la transacción de cierre.
Una vez que la transacción de cierre es transmitida y confirmada por la red de Bitcoin, el canal se cierra efectivamente y cada socio del canal ha recibido su parte del saldo del canal. A pesar del tiempo de espera, un cierre mutuo suele ser más rápido que un cierre forzado.
7. ¿Cómo se mantiene el balance necesario para los fees del cierre de canal?
R.
9. ¿Cuáles son los casos en qué los invoice son ‘permanentes’?
10. ¿La capacidad de un canal de pago puede cambiar? Si tienes dos canales, y te llega una orden de pago a un canal, ¿la puedes cambiar a tu otro canal?
11. Channel funding: ¿para crear un payment channel es necesario que ambos participantes depositen btc o con el depósito de uno de ellos es suficiente?
12. ¿Qué objetivo cumple el monto llamado “reserve” que mantiene cada participante dentro del canal?
13. ¿Es posible conectar tu nodo en modo híbrido, es decir, a través de clearnet y detrás de TOR? - Verdadero o Falso
## Sesión 3 - Taller: Fundamentos de la línea de comandos / Introducción a Docker
### Material
:::info
- [x] [Líneas de Comando - The command line-](https://www.libreriadesatoshi.com/private-mln/mln-t1-linea-comandos)
- [x] [Killercoda](https://killercoda.com/playgrounds/scenario/ubuntu)
- [x] [Tutorial Completo de Docker](https://hackmd.io/w0ZeTnNDQSyHtOs6Mi7hEw)
- [ ] [Videotutorial Completo Docker](https://youtu.be/ME6WXuZE6G0)
- [x] [Tor desde la línea de comandos](https://hackmd.io/vu2zo_DsTyOI9wBrePpvVg)
:::
### Ejercicios de línea de comandos en Killercoda
1. Crear Usuario

2. Crear y encontar directorios. Obtener información de los directorios

3. Crear subdirectorios y archivos txt y ver su contenido


4. Copiar un archivo

5. Comando less

6. Ordenar - comando sort

7. Htop

### Instalación de Docker en Mint
* Mi equipo no soporta virtualización. No se puede instalar Docker.

### Instación de Docker en WSL Ubutu (subsistema linux en windows)
¡Exitosa! :100: Requirió actualización a WSL2. No hice capturas de pantalla.
### Ejercicios del tutorial de Docker
:::warning
:warning: Pendientes :eyes:
:::
## Sesión 4 - Capítulos 4 y 5 (teórico-prácticos)
### Material
:::info
- [x] [Capítulo 4: “Lightning Node Software”](https://github.com/lnbook/lnbook/blob/develop/04_node_client.asciidoc)
- [x] [Línea de comandos básica](https://www.youtube.com/watch?v=BZN7Tqeu8eA)
- [x] [Tutorial de dockers básico](https://youtu.be/12GnSq2T_ZQ)
- [x] [Tutorial de dockers práctico](https://youtu.be/chb5d5VKkA4)
- [ ] [Capítulo 5: “Operating a Lightning Network Node”](https://github.com/lnbook/lnbook/blob/develop/05_node_operations.asciidoc)
- [ ] [Watchtowers por Sergi Delgado](https://www.youtube.com/watch?v=6n5eaI6glHA)
- [ ] [Repositorio The Eye of Satoshi ](https://github.com/talaia-labs/rust-teos)
:::
### Preguntas y respuestas (Cap4)
1. ¿Por qué Segwit fue una mejora esencial de la capa base de Lightning?
R.
2. ¿La mejor forma de tener un nodo en la Lightning Network es utilizando contenedores docker?
R.
3. ¿Para hacer test en lightning network es mejor usar testnet o regtest?
R.
4. De las tres implementaciones más populares de lightning network, ¿cuál crees que es la mejor y por qué?
R.
### Ejercicios del Libro
**Nota preliminar:** Inicié estos ejercicios unas 6 veces antes de iniciar este registro. Solo 2 veces finalice con éxito el script de pago. Tengo apenas una captura de pantalla de esos prmeros intentos. La colocaré al final si esta vez falla. Aunque, confiaré en el 7 mágico :star2: :mage: :wink:
#### Nodo bitcoind
1. Clonar el repositorio del libro

2. Preparar el contenedor bitcoind. En este intento, voy a usar build en vez de pull.

3. Interactuar con el contenedor bitcoind


* Otro comando RPC que probé. No está en libro

#### Red lnbook
4. Construir el nodo c-lightning como contenedor

5. Configuración de una red Docker (ya estaba creada)

6. Iniciar bitcoind en la red lnbook

#### Nodo c-lightning como contenedor
7. Levantar c-lightning en la red lnbook

8. Interactuar con nodo c-lightning

#### Nodo LND como contenedor
9. Construir lnd node como contenedor. ¡Falló! :-1: :face_palm:

#### Nodo Eclair como contenedor
10. Construir nodo Eclair como contenedor.

11. Levantar Eclair en la red lnbook. :warning: Este nodo e congela :snowflake: al conectarse al puerto 80. Su actividad se vuelve esporádica o nula. :cry: Aún así se conectó a la red.

12. Interactuar con nodo Eclair: Aún congelado, el nodo sigue activo y devuelve información:

#### Orquestación de contenedores con Docker Compose
13. Levantar la red lnnet

14. Correr el script de pago. Después de muchas horas (como 6h en este intento) ¡Funcionó! :+1: :100: :dancer:

:::info
:information_source: **Observaciones y conclusiones personales:**
* El fallo del script de pago del libro podría ser ocasionado por el comprtamiento del nodo Eclair (Chan)
* El nodo Eclair podría estar fallando al intentar comunicarse con el puerto 80:80.
* En mi caso, abrir el puerto 80 en Windows aumentó el éxito del script. Abrí el puerto 80 en el Firewall de Windows siguiendo este tutorial: [Para abrir el puerto 80](https://learn.microsoft.com/es-es/sql/reporting-services/report-server/configure-a-firewall-for-report-server-access?view=sql-server-ver16#to-open-port-80)
:::
### Ejercicios propuestos en la web de la Librería de Satoshi
1. Actualiza los balances del diagrama después de que Alice hace el pago (3 puntos)
* Alice Balance:

* Bob Balance:

* Chan Balance:
El nodo se quedó congelado :face_with_head_bandage: Lo puede verificar usando:
```go=
$ docker-compose logs -f Chan
```
:::info
* Olvidé hacer la captura :cry:
* Para este momento aun no había abierto el puerto 80 en Windows
:::
* **Update del nodo Chan:**
Resuelto el problema (explico más adelante cómo lo hice), usé los siguientes comandos para verificar el balance:
```go=
$ docker exec Chan cli help
$ docker exec Chan cli usablebalances
$ docker exec Chan cli audit
```

* Dina Balance:

* Actualización del Diagrama

2. Dina debe generar un nuevo invoice de 20K que debe ser pagado por Bob.
R. Usando los comandos del script:
```go=
$ docker exec Dina cli addinvoice 20000
$ docker exec Bob cli help
$ docker exec Bob cli pay lnbcrt200u1pjt94ajpp5vw2wmrk9tq8uha8c94ct5h4mn4hgfucg2kjpamfcmu358e8ksyyqdqqcqzpgxqyz5vqsp509xv55r27wm2ny4yptkzjsuqs8cvq0jz826d7e60lthwell6fmxq9qyyssqyl82knasw7gacw3hmfvt0vd5e302grnqr4dz497nn7smy58zhqdhzq86jsll9x8kflmhvz2g9ufwnde2whzq84pqactyy6z6j554j8cp4syn5h
```
3. Para probar que hiciste el pago toma un pantallazo de la preimagen (4 puntos).
R.
* Preimagen de la invoice de Dina

* Bob paga la invoice de Dina

4. Abrir un canal de Dina a Alice de 500.000 satoshis.
```go=
$ docker exec Alice cli getinfo
$ Alice="03e20995ca6fccea568166c90df3d959284addde479f77c37f083a6d39892e14ce"
$ echo $Alice
$ docker exec Dina cli connect $Alice@Alice
$ docker exec Dina cli listpeers
$ docker exec Dina cli openchannel $Alice 500000
$ docker exec Dina cli listchannels | grep $Alice
$ docker exec Dina cli listchannels
```
5. Para probar que abriste el canal toma un pantallazo del comando listchannels desde el nodo de Dina (4 puntos)

:::info
:information_source: **Observaciones personales:**
* Abrí el script de pago, que para este momento era mi única fuente de información para completar los ejercicios, pero no supe cómo identificar los comandos adecuados.
* Completé los ejercicios con ayuda de los compañeros @entreplancton, @jonnyji y @seba más adelante, en la Sesión 7 de "office hours" ([Ir a Sesión 7](https://hackmd.io/fv1OWDxiQ5Gx4S1wIYUi1A?both#Sesi%C3%B3n-7---Office-hours))
:::
### Preguntas y respuestas (Cap5)
1. ¿Enuncia una configuración ideal de hardware para un nodo lightning en producción y por qué?
R.
* CPU de 2-4 cores
* 4gb RAM
* Discos: hdd 1 tera + sdd 256gb
* UPS
2. ¿Qué es (SCB)?
R.
3. ¿Cómo se configuran las watch towers?
R. La forma de configurar depende de la implementación de LN que estemos usando. Si estamos usando LND, el software ya incluye un servidor y un cliente WT. Se activa la opción y listo. También te puedes obtener el cliente de LND y conectarte a su servidor.
Si tienes implementación c-lightning, ya tiene la API, pero aún no la ha implementado. Pero te puedes conectar a servidores WT de The Eye of Satoshi que es el otro cliente disponible de WT. TEOS sería un servidor independiente para monitorear posibles cierres de canales maliciosos.
4. ¿Por qué se hace sweep y qué tipos hay?
R.
5. ¿Es necesario tener una ip pública para tener un nodo lightning?
R. Si desea ejecutar un nodo Bitcoin o Lightning, debe permitir que otros nodos en Internet se conecten a usted. Eso significa habilitar las conexiones TCP entrantes al puerto Bitcoin (puerto 8333 por defecto) o al puerto Lightning (puerto 9735 por defecto). Si bien puede ejecutar un nodo Bitcoin sin conectividad entrante, no puede hacerlo con un nodo Lightning. Un nodo Lightning debe ser accesible para otros desde fuera de su red.
Un mecanismo alternativo al reenvío de puertos es habilitar The Onion Router (Tor), que proporciona una especie de superposición de red privada virtual que permite las conexiones entrantes a una dirección de cebolla . Si ejecuta Tor, no necesita realizar el reenvío de puertos o habilitar las conexiones entrantes a los puertos Bitcoin o Lightning. Si ejecuta sus nodos con Tor, todo el tráfico pasa por Tor y no se utilizan otros puertos.
6. ¿Si mi nodo es un nodo enrutador tiene que estar siempre conectado a internet?
En Lightning, sin embargo, el usuario debe estar en línea tanto para enviar como parapara recibir pagos. Si el nodo Lightning está fuera de línea, no puede recibir ningún pago de nadie y, por lo tanto, sus facturas abiertas no se pueden cumplir. Además, los canales abiertos de un nodo fuera de línea no se pueden utilizar para enrutar pagos. Sus socios de canal notarán que está desconectado y no pueden comunicarse con usted para enrutar un pago. Si está desconectado con demasiada frecuencia, es posible que consideren que el bitcoin bloqueado en sus canales con usted es una capacidad infrautilizada y pueden cerrar esos canales. Ya discutimos el caso de un ataque de protocolo en el que su socio de canal intenta engañarlo al enviar una transacción de compromiso anterior. Por lo tanto, la confiabilidad del nodo es extremadamente importante para un nodo Lightning.
A diferencia de Bitcoin, los nodos Lightning deben estar en línea casi continuamente. Su nodo debe estar en línea para recibir pagos, abrir canales, cerrar canales (cooperativamente) y monitorear violaciones de protocolo. La disponibilidad de nodos es un requisito tan importante en Lightning Network que es una métrica utilizada por varias herramientas de administración automática de canales (por ejemplo, piloto automático) para decidir con qué nodos abrir canales. También puede ver la "disponibilidad" como una métrica de nodo en exploradores de nodos populares (ver [ln_explorer] ) como 1ML .
La disponibilidad de nodos es especialmente importante para mitigar y resolver posibles infracciones de protocolo (es decir, compromisos revocados). Si bien puede permitirse interrupciones breves desde una hora hasta uno o dos días, no puede tener su nodo fuera de línea durante períodos más prolongados sin correr el riesgo de perder fondos.
Mantener un nodo en línea de forma continua no es fácil, ya que varios errores y limitaciones de recursos pueden y, en ocasiones, provocarán tiempo de inactividad. Especialmente si ejecuta un nodo ocupado y popular, se encontrará con limitaciones de memoria, espacio de intercambio, cantidad de archivos abiertos, espacio en disco, etc. Una gran cantidad de problemas diferentes harán que su nodo o su servidor se bloqueen.
7. ¿Mi nodo tiene que estar siempre conectado si solo quiero recibir pagos?
R. El usuario debe estar en línea tanto para enviar como para recibir pagos.
## Sesión 5 - Taller: Instalar un nodo C-Lightning / Tor: Conceptos básicos
1. Instalación de un nodo c-lightning ¡Exitosa! :100:
2. Ya tenía preciamente instalado mi nodo de Bitcoin.
3. Seguí el tutorial en texto y video sin problemas. No tomé capturas del proceso de instalación y compilación, pero dejo una de lightningd levantado.

### Prueba en el entorno Killercoda
:::warning
:warning: Pendiente :eyes:
:::
## Tutorial: Usando Tor desde la línea de comandos
1. Instalación de Tor en Linux Mint:
```go=
$ sudo apt update
$ sudo apt install tor
$ sudo service tor start
```

2. Configuración: editar el archivo "torrc"

3. Añadir usuario debian-tor

4. Configurando Tor como servicio, activando y verificando. Mostrando los puertos que mi iP local está escuchando.


### Configuración de Tor en Bitcoind
1. Modificar el archivo bitcoin.conf

2. Arrancar bitcoind: ¡Falló! :-1:

### Configuración de Tor en lightningd
1. Modificar archivo "torrc"

2. Relanzar Tor (detener e iniciar) y lanzar el comando para obtener dirección onion

3. Agregar la nueva dirección onion en el archivo config en el directorio .lightning

4. Iniciando de nuevo lightningd. ¡Éxito! :100:

5. Crear un servicio para que lghtningd se ejecute automáticamente al iniciar el pc.

¡Falló! :-1:

```go=
$sudo systemctl enable lightningd.service
$sudo systemctl start lightningd.service
```
¡Falló! :-1:

## Sesión 6 - Socrático Capítulos 6 y 7
### Material
:::info
- [ ] [Capítulo 6: “Lightning Network Architecture”](https://github.com/lnbook/lnbook/blob/develop/06_lightning_architecture.asciidoc)
- [ ] [Capítulo 7: "Payment Channels"](https://github.com/lnbook/lnbook/blob/develop/07_payment_channels.asciidoc)
- [ ] [Bitcoin’s Time Locks](https://medium.com/summa-technology/bitcoins-time-locks-27e0c362d7a1)
- [x] [Part 1: Creating a channel](https://www.ellemouton.com/posts/creating-a-channel/)
- [ ] [Part 2: Updating State](https://ellemouton.com/posts/updating-state/)
- [ ] [Part 3: Revocation in more detail](https://ellemouton.com/posts/revocation/)
:::
### Preguntas y respuestas
1. ¿Qué son los Node Identifiers?
R.
2. ¿Qué son y cómo funcionan los canales de pago?
R.
3. ¿Para qué se construye la Presigned Refund Transaction?
R.
4. Dado el hecho de que Lightning se basa en castigos y requiere que los nodos estén en línea, ¿podría un atacante engañarlo para que publique estados antiguos y pierda todos sus fondos?
## Sesión 7 - Office-hours
1. Precisamos conceptos sobre el funcionamiento de Lightning, el panorama actual y cómo podemos llevar educación sobre Bitcoin y Lightning a las comunidades.
2. Traje mis dudas sobre los ejercicios de la sesión 4 y los compañeros me ayudaron a completarlos. :pray: :heartbeat: :hugging_face:
## Sesión 8 - Socrático Capítulo 8
### Material
:::info
- [ ] [Capítulo 8: “Routing on a Network of Payment Channels”](https://github.com/lnbook/lnbook/blob/develop/08_routing_htlcs.asciidoc)
- [ ] [Profundizando en HTLC’s](https://ellemouton.com/posts/htlc-deep-dive/)
- [ ] [The Lightning Protocol, an Application Design Perspective by Alex Bosworth](https://www.youtube.com/watch?v=1R5DNUcCYRg)
:::
### Preguntas y respuestas
1. ¿Cuál es la diferencia entre pathfinding y routing?
R.
2. Cuando dos partes intercambian los secretos de los commitments previos (para invalidar el estado previo), ¿cómo estás seguro de que el intercambio ocurre atómicamente? (es decir, que ambos reciban el secreto del otro, o ninguno)
R.
3. ¿Qué pasa si en la propagación hacia atrás de la preimagen para resolver los HTLC de la ruta de pago un hop no está encendido?
R.
4. ¿Por qué es necesario que el cltv_expiry de cada HTLC sea diferente para cada hop de la ruta?
R.
5. ¿En un ruteo de pagos, se realiza un nuevo commitment para quienes están enrutando el pago?
## Sesión 9 - Taller de uso de Voltage
En este taller aprendimos qué es Voltage, como crear una cuenta en la plataforma, crear y fondear canales de lightning networ en la nube.
## Sesión 10 - Socrático Capítulo 9
### Material
- [x] [Capitulo 9: “Channel Operation and Payment Forwarding”](https://github.com/lnbook/lnbook/blob/develop/09_channel_operation.asciidoc)
- [x] [Revocable transactions with ln penalty](https://www.derpturkey.com/revocable-transactions-with-ln-penalty/)
- [ ] [BOLT #2: Peer Protocol for Channel Management](https://github.com/lightning/bolts/blob/master/02-peer-protocol.md)
### Preguntas y respuestas
1. **¿Qué problema resuelven las operaciones de compromiso?**
R. Que un actor malintencionado pueda transmitir un estado anterior y más favorable.
2. **Cuando se encuentra una transacción de compromiso revocado, ¿qué salidas deben ser resueltas por la transacción de sanción? ¿Qué sucede con los HTLC?**
R. Si entendí bien, cuando se encuentra una transaccion de compromiso revocada, procede una transaccion de penalización. Para completarla, lo que se necesita resolver es la **llave privada de revocación** o `revocation_privkey`. Esta se resuelve con dos pieza del secreto. Cada pieza está en posesión de uno de los socios de canal. Quien inicia la apertura de canal (`to_local`) tiene la pieza: `per_commitment_secret`, y quien acepta abrir el canal (`to_remote`) posee: `revocation_basepoint_secret`. Con estas dos piezas se construye la **llave privada de revocación**.
*Cita del material:*
> _Antes de la revocación, si Alice suelta `ctx_0a` en la cadena, ni Alice ni Bob tienen suficiente información para generar la clave privada de revocación y gastar a través de esa ruta. Esto es perfecto. En `ctx_0a`, Bob tiene acceso inmediato a sus fondos a través de `to_remote`. Alice tendrá que esperar hasta que expire el retraso de la secuencia y luego podrá acceder a sus fondos._
>
> _¡Esto cambia una vez que se ha revocado un `ctx_0a`! Para revocar `ctx_0a`, Alice envía a Bob `per_commitment_secret_0a`. Bob ahora tiene su `revocación_basepoint_secret_b` y `per_commitment_secret_0a` de Alice. ¡Si Alice transmite `ctx_0a`, puede crear el secreto de revocación y barrer los fondos! ..._
5. **¿Por qué es complicado revocar una transacción en bitcoin? ¿Puede un usuario simplemente retirar una transacción?**
R. El protocolo de ln está diseñado para que ninguna de las partes pueda usar la llave privada de revocación por si mismo, para reclamar los fondos del canal. Es una forma de garantizar que no se puedan defraudar el uno al otro. Es decir que no se requiera confianza para que funcione el canal. Por eso un usuario no podría retirar una transacción unilateralmente. No obstante, una vez que una transacción se ha confirmado en la blokchain de bitcoin, es irrevocable.
7. **Si un nodo se apaga durante varios días, ¿qué ocurre con los HTLC pendientes que tiene ese nodo?**
R. Se pueden eliminar
:::warning
> 👀 Falté a 2 sesiones, teóricas. Otras 2, prácticas, están grabas pero no registradas acá.
> Actualuzar‼
:::
### Sesión 15
### Material
- [ ] [Capitulo 12: “Pathfinding and Payment Delivery”](https://github.com/lnbook/lnbook/blob/develop/12_path_finding.asciidoc)
- [x] [Algoritmo de Dijkstra: Distancia mínima](https://www.youtube.com/watch?v=w475Vm1ZgTk)
- [x] [Amount-independent payment routing in Lightning Networks](https://medium.com/coinmonks/amount-independent-payment-routing-in-lightning-networks-6409201ff5ed)
- [ ] [Security and Privacy of Lightning Network Payments with Uncertain
Channel Balances](https://arxiv.org/pdf/2103.08576.pdf)
#### Tambien revisé:
- [x] [Grafos: Camino mínimo con algoritmo de BELLMAN](https://youtu.be/Fskv5nHibKE)
### Preguntas y respuestas
1. ¿Cuál es el mejor algoritmo para hacer el pathfinding?
R.
3. ¿Cuál de estos tres parámetros es más importante para hacer el pathfinding: capacidad, balance o liquidez?
R.
5. ¿Por qué para efectuar el payment delivery se usa el Trial and error loop?
R.
7. ¿Por qué MPP aumenta la probabilidad de éxito en el pago?
R.