Skip to content

Commit e495a85

Browse files
authored
Merge pull request #371 from javiervargas/patch-57
Chapter 19-2 19_2__Interludio_Accediendo_a_un_Segundo_Nodo_Lightning.md
2 parents 57c34e4 + 04259d8 commit e495a85

File tree

1 file changed

+324
-0
lines changed

1 file changed

+324
-0
lines changed
Lines changed: 324 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,324 @@
1+
# Interludio: Acceso a un segundo nodo de Lightning
2+
3+
> :information_source: **NOTA:** Esta sección se ha añadido recientemente al curso y es un borrador temprano que todavía puede estar pendiente de revisión. Lectura con advertencias.
4+
5+
Cuando jugaba con Bitcoin estaba accediendo a una red existente, y eso hizo que fuera relativamente fácil trabajar con ello: solo fue arrancar `bitcoind` e inmediatamente interactuaba con la red. Así funciona ahora Lightning: es fundamentalmente una red de igual a igual, construida a partir de las conexiones entre dos nodos individuales. En otras palabras, para interactuar con la red Lightning, primero tendrá que encontrar un nodo al cual conectarse.
6+
7+
Hay cuatro maneras de hacerlo (las tres primeras son posibles para su primera conexión):
8+
9+
## Solicitar información sobre un nodo
10+
11+
Si alguien más ya tiene un nodo Lightning en la red de su elección, simplemente pídale su ID.
12+
13+
Si están ejecutando c-lightning, solo necesitan usar el comando `getinfo`:
14+
15+
```
16+
$ lightning-cli getinfo
17+
lightning-cli: WARNING: default network changing in 2020: please set network=testnet in config!
18+
"id": "03240a4878a9a64aea6c3921a434e573845267b86e89ab19003b0c910a86d17687",
19+
"alias": "VIOLETGLEE",
20+
"color": "03240a",
21+
"num_peers": 0,
22+
"num_pending_channels": 0,
23+
"num_active_channels": 0,
24+
"num_inactive_channels": 0,
25+
"address": [
26+
{
27+
"type": "ipv4",
28+
"address": "74.207.240.32",
29+
"port": 9735
30+
}
31+
],
32+
"binding": [
33+
{
34+
"type": "ipv6",
35+
"address": "::",
36+
"port": 9735
37+
},
38+
{
39+
"type": "ipv4",
40+
"address": "0.0.0.0",
41+
"port": 9735
42+
}
43+
],
44+
"version": "v0.9.1-96-g6f870df",
45+
"blockheight": 1862854,
46+
"network": "testnet",
47+
"msatoshi_fees_collected": 0,
48+
"fees_collected_msat": "0msat",
49+
"lightning-dir": "/home/standup/.lightning/testnet"
50+
}
51+
```
52+
A continuación, pueden decirle su `id` (`03240a4878a9a64aea6c3921a434e573845267b86e89ab19003b0c910a86d17687`). También tendrán que indicarle su dirección IP (`74.207.240.32`) y su puerto (`9735`).
53+
54+
## Crear un nuevo nodo c-lightning
55+
56+
Sin embargo, para fines de prueba, es probable que desee tener un segundo nodo bajo su propio control. La forma más fácil de hacerlo es crear un segundo nodo c-lightning en una máquina nueva, usando Bitcoin Standup, por [§2.1](02_1_Configurando_un_Bitcoin-Core_VPS_con_StackScript.md) o compilándolo a mano, por [§19.1](9_1_Verificando_Su_Configuracion_Lightning.md).
57+
58+
Una vez que tenga su nodo en ejecución, puede ejecutar `getinfo` para recuperar su información, como se muestra arriba.
59+
60+
## Crear un nuevo nodo LND
61+
62+
Sin embargo, para nuestros ejemplos en el siguiente capítulo, vamos a crear un nodo LND. Esto nos permitirá demostrar un poco de la profundidad del ecosistema Lightning al mostrar cómo funcionan comandos similares en las dos plataformas diferentes.
63+
64+
Una forma de crear un nodo LND es ejecutar los Scripts de Bitcoin de nuevo en una máquina nueva, pero esta vez debe elegir LND, en [§2.1](02_1_Configurando_un_Bitcoin-Core_VPS_con_StackScript.md).
65+
66+
Otra es compilar LND a partir del código fuente en una máquina donde ya está ejecutando un nodo Bitcoin, como sigue.
67+
68+
### Compilar el código fuente del LND
69+
70+
Primero, necesita descargar e instalar Go:
71+
```
72+
$ wget --progress=bar:force https://dl.google.com/go/"go1.14.4"."linux"-"amd64".tar.gz -O ~standup/"go1.14.4"."linux"-"amd64".tar.gz
73+
$ /bin/tar xzf ~standup/"go1.14.4"."linux"-"amd64".tar.gz -C ~standup
74+
$ sudo mv ~standup/go /usr/local
75+
```
76+
Asegúrese de que la versión Go es la más actualizada (es `go1.14.4` en el momento actual), y la plataforma y la arquitectura son adecuadas para su máquina. (Lo anterior funcionará para Debian.)
77+
78+
Actualizar su ruta:
79+
```
80+
$ export GOPATH=~standup/gocode
81+
$ export PATH="$PATH":/usr/local/go/bin:"$GOPATH"/bin
82+
```
83+
Entonces asegúrese de que `go` funciona:
84+
```
85+
$ go version
86+
go version go1.14.4 linux/amd64
87+
```
88+
También necesitará `git` y `make`:
89+
```
90+
$ sudo apt-get install git
91+
$ sudo apt-get install build-essential
92+
```
93+
Ahora está listo para recuperar LND. Asegúrese de obtener el verison actual (actualmente `v0.11.0-beta.rc4`).
94+
```
95+
$ go get -d github.com/lightningnetwork/lnd
96+
```
97+
Y ahora puede compilar:
98+
```
99+
$ cd "$GOPATH"/src/github.com/lightningnetwork/lnd
100+
$ git checkout v0.11.0-beta.rc4
101+
$ make
102+
$ make install
103+
```
104+
Esto se instalará en `~/gocode/bin`, que es `$GOPATH/bin`.
105+
106+
Debería moverlo a directorios globales:
107+
```
108+
$ sudo cp $GOPATH/bin/lnd $GOPATH/bin/lncli /usr/bin
109+
```
110+
### Crear un archivo de configuración de LND
111+
112+
A diferencia de c-lightning, necesitará crear un archivo de configuración predeterminado para LND.
113+
114+
Sin embargo, usted primero necesita habilitar ZMQ en su Bitcoind, si no lo hizo ya en [§16.3](6_3_Recibiendo_Notificaciones_de_Bitcoind_en_C_con_las_Bibliotecas_ZMQ.md).
115+
116+
Esto requiere agregar lo siguiente a su archivo `~/. bitcoin/bitcoin.conf` si no está ya allí:
117+
```
118+
zmqpubrawblock=tcp://127.0.0.1:28332
119+
zmqpubrawtx=tcp://127.0.0.1:28333
120+
```
121+
Si usted está usando un archivo de configuración de Bitcoin desde Standup o algún otro `conf` especializado, asegúrese de poner sus nuevos comandos en la sección correcta. Idealmente, deben ir cerca de la parte superior del archivo, de lo contrario en la sección `[test]` (asumiendo, como de costumbre, que está probando en testnet).
122+
123+
Luego debe reiniciar bitcoin (o simplemente reiniciar su máquina). Puede probar que está funcionando de la siguiente manera:
124+
```
125+
$ bitcoin-cli getzmqnotifications
126+
[
127+
{
128+
"type": "pubrawblock",
129+
"address": "tcp://127.0.0.1:28332",
130+
"hwm": 1000
131+
},
132+
{
133+
"type": "pubrawtx",
134+
"address": "tcp://127.0.0.1:28333",
135+
"hwm": 1000
136+
}
137+
]
138+
```
139+
Ahora está listo para crear un archivo de configuración.
140+
141+
Primero, necesita recuperar su rpcuser y rpcpassword. Esta es una manera automatizada de hacerlo:
142+
```
143+
$ BITCOINRPC_USER=$(cat ~standup/.bitcoin/bitcoin.conf | grep rpcuser | awk -F = '{print $2}')
144+
$ BITCOINRPC_PASS=$(cat ~standup/.bitcoin/bitcoin.conf | grep rpcpassword | awk -F = '{print $2}')
145+
```
146+
> :warning: **ADVERTENCIA:** Obviamente, nunca almacene su contraseña RPC en una variable de shell en un entorno de producción.
147+
148+
Luego, puede escribir el archivo:
149+
```
150+
$ mkdir ~/.lnd
151+
$ cat > ~/.lnd/lnd.conf << EOF
152+
[Application Options]
153+
maxlogfiles=3
154+
maxlogfilesize=10
155+
#externalip=1.1.1.1 # change to your public IP address if required.
156+
alias=StandUp
157+
listen=0.0.0.0:9735
158+
debuglevel=debug
159+
[Bitcoin]
160+
bitcoin.active=1
161+
bitcoin.node=bitcoind
162+
bitcoin.testnet=true
163+
[Bitcoind]
164+
bitcoind.rpchost=localhost
165+
bitcoind.rpcuser=$BITCOINRPC_USER
166+
bitcoind.rpcpass=$BITCOINRPC_PASS
167+
bitcoind.zmqpubrawblock=tcp://127.0.0.1:28332
168+
bitcoind.zmqpubrawtx=tcp://127.0.0.1:28333
169+
EOF
170+
```
171+
172+
### Crear un servicio de LND
173+
174+
Por último, puede crear un servicio LND para ejecutar automáticamente `lnd`:
175+
```
176+
$ cat > ~/lnd.service << EOF
177+
# It is not recommended to modify this file in-place, because it will
178+
# be overwritten during package upgrades. If you want to add further
179+
# options or overwrite existing ones then use
180+
# $ systemctl edit lnd.service
181+
# See "man systemd.service" for details.
182+
# Note that almost all daemon options could be specified in
183+
# /etc/lnd/lnd.conf, except for those explicitly specified as arguments
184+
# in ExecStart=
185+
[Unit]
186+
Description=LND Lightning Network Daemon
187+
Requires=bitcoind.service
188+
After=bitcoind.service
189+
[Service]
190+
ExecStart=/usr/bin/lnd
191+
ExecStop=/usr/bin/lncli --lnddir /var/lib/lnd stop
192+
PIDFile=/run/lnd/lnd.pid
193+
User=standup
194+
Type=simple
195+
KillMode=process
196+
TimeoutStartSec=60
197+
TimeoutStopSec=60
198+
Restart=always
199+
RestartSec=60
200+
[Install]
201+
WantedBy=multi-user.target
202+
EOF
203+
```
204+
A continuación, tendrá que instalar eso y poner en marcha las cosas:
205+
```
206+
$ sudo cp ~/lnd.service /etc/systemd/system
207+
$ sudo systemctl enable lnd
208+
$ sudo systemctl start lnd
209+
```
210+
(Espere que esto tome un minuto la primera vez.)
211+
212+
### Habilitar conexiones remotas
213+
214+
Al igual que con c-lightning, va a tener que hacer LND accesible a otros nodos. He aquí cómo hacerlo si utiliza `ufw`, según las configuraciones de Bitcoin Standup:
215+
```
216+
$ sudo ufw allow 9735
217+
```
218+
### Crear una cartera
219+
220+
La primera vez que ejecute LND, debe crear una cartera:
221+
```
222+
$ lncli --network=testnet create
223+
```
224+
LND le pedirá una contraseña y luego le preguntará si desea ingresar un mnemónico existente (simplemente pulse `n` para el último).
225+
226+
Ahora debería tener un funcionamiento `lnd`, que puede verificar con `getinfo`:
227+
```
228+
$ lncli --network=testnet getinfo
229+
{
230+
"version": "0.11.0-beta.rc4 commit=v0.11.0-beta.rc4",
231+
"commit_hash": "fc12656a1a62e5d69430bba6e4feb8cfbaf21542",
232+
"identity_pubkey": "032a7572dc013b6382cde391d79f292ced27305aa4162ec3906279fc4334602543",
233+
"alias": "StandUp",
234+
"color": "#3399ff",
235+
"num_pending_channels": 0,
236+
"num_active_channels": 0,
237+
"num_inactive_channels": 0,
238+
"num_peers": 2,
239+
"block_height": 1862848,
240+
"block_hash": "000000000000000ecb6fd95e1f486283d48683aa3111b6c23144a2056f5a1532",
241+
"best_header_timestamp": "1602632294",
242+
"synced_to_chain": true,
243+
"synced_to_graph": false,
244+
"testnet": true,
245+
"chains": [
246+
{
247+
"chain": "bitcoin",
248+
"network": "testnet"
249+
}
250+
],
251+
"uris": [
252+
],
253+
"features": {
254+
"0": {
255+
"name": "data-loss-protect",
256+
"is_required": true,
257+
"is_known": true
258+
},
259+
"5": {
260+
"name": "upfront-shutdown-script",
261+
"is_required": false,
262+
"is_known": true
263+
},
264+
"7": {
265+
"name": "gossip-queries",
266+
"is_required": false,
267+
"is_known": true
268+
},
269+
"9": {
270+
"name": "tlv-onion",
271+
"is_required": false,
272+
"is_known": true
273+
},
274+
"13": {
275+
"name": "static-remote-key",
276+
"is_required": false,
277+
"is_known": true
278+
},
279+
"15": {
280+
"name": "payment-addr",
281+
"is_required": false,
282+
"is_known": true
283+
},
284+
"17": {
285+
"name": "multi-path-payments",
286+
"is_required": false,
287+
"is_known": true
288+
}
289+
}
290+
}
291+
```
292+
El ID de este nodo es `032a7572dc013b6382cde391d79f292ced27305aa4162ec3906279fc4334602543`. Aunque este comando no le muestra la dirección IP y el puerto, deben ser la dirección IP para su máquina y el puerto `9735`.
293+
294+
## Escuchando el Gossip
295+
296+
Si ya estaba conectado a la Red Relámpago, y estaba "chismeando" con nodos compañeros, también podría ser capaz de encontrar información sobre compañeros automáticamente, a través del comando `listpeers`:
297+
298+
```
299+
c$ lightning-cli --network=testnet listpeers
300+
{
301+
"peers": [
302+
{
303+
"id": "0302d48972ba7eef8b40696102ad114090fd4c146e381f18c7932a2a1d73566f84",
304+
"connected": true,
305+
"netaddr": [
306+
"127.0.0.1:9736"
307+
],
308+
"features": "02a2a1",
309+
"channels": []
310+
}
311+
]
312+
}
313+
```
314+
Sin embargo, eso definitivamente no será el caso para su primera interacción con la red Lightning.
315+
316+
## Resumen: Acceso a un segundo nodo de rayos
317+
318+
Siempre necesitará dos nodos Lightning para formar un canal. Si no tiene a alguien más que esté probando las cosas con usted, va a necesitar crear un segundo nodo, ya sea usando c-lightning o (como haremos en nuestros ejemplos) LND.
319+
320+
## ¿Qué es lo siguiente?
321+
322+
Aunque posiblemente haya creado un LND, c-lightning seguirá siendo el corazón de nuestros ejemplos hasta que necesitemos empezar a usar ambos, en el [Capítulo 19](19_0_Entendiendo_Su_Configuracion_Lightning.md).
323+
324+
Continuar "Comprender la configuración de nodo Lightning" con [§19.3: Creando un Canal en Lightning](19_3_Creando_un_Canal_en_Lightning.md).

0 commit comments

Comments
 (0)