[Introduzione] -- [Perché avere un nodo Bitcoin] -- [Preparativi] -- [Configurazione Iniziale da PC] -- [Preparazione Software Raspberry PI] -- [Assemblaggio Hardware Nodo] -- [Configurazione Software Nodo] -- [Bitcoin] -- [Lightning] -- [Mainnet] -- [Bonus]-- [FAQ] -- [TO DO]
Attivato il nodo bitcoin, attiviamo il nodo Lightning Network
Scaricheremo ed installeremo il LND (Lightning Network Daemon) by Lightning Labs. Potete trovare tutta la documentazione relativa sul protocollo Lightning in generale e sulla loro specifica implementazione open source sul loro repository Github 🇬🇧 .
Scarichiamo, verifichiamo le firme, ed installiamo il software dal GitHub ufficiale. Olaoluwa Osuntokun @roasbeef è il CTO di Lightning Labs
$ cd /home/admin/download
$ rm -rf /home/admin/download/*
$ wget https://github.com/lightningnetwork/lnd/releases/download/v0.9.1-beta/lnd-linux-armv7-v0.9.1-beta.tar.gz
$ wget https://github.com/lightningnetwork/lnd/releases/download/v0.9.1-beta/manifest-v0.9.1-beta.txt
$ wget https://github.com/lightningnetwork/lnd/releases/download/v0.9.1-beta/manifest-v0.9.1-beta.txt.sig
$ wget https://keybase.io/roasbeef/pgp_keys.asc
$ sha256sum --check manifest-v0.9.1-beta.txt --ignore-missing
> lnd-linux-armv7-v0.9.1-beta.tar.gz: OK
$ gpg ./pgp_keys.asc
> BD599672C804AF2770869A048B80CD2BB8BD8132
$ gpg --import ./pgp_keys.asc
$ gpg --verify manifest-v0.9.1-beta.txt.sig
> gpg: Good signature from "Olaoluwa Osuntokun <laolu32@gmail.com>" [unknown]
> Primary key fingerprint: BD59 9672 C804 AF27 7086 9A04 8B80 CD2B B8BD 8132
> Subkey fingerprint: F803 7E70 C12C 7A26 3C03 2508 CE58 F7F8 E20F D9A2
$ tar -xzf lnd-linux-armv7-v0.9.1-beta.tar.gz
$ sudo install -m 0755 -o root -g root -t /usr/local/bin lnd-linux-armv7-v0.9.1-beta/*
$ lnd --version
> lnd version 0.9.1-beta commit=v0.9.1-beta
Ora che LND è installato, dobbiamo prima di tutto configurarlo per poter funzionare con Bitcoin Core e successivamente abilitarne l'avvio automatico in fase di startup.
-
Ancora collegati come utente Admin, create un link simbolico al file binario
ip
che si trova nella directory/bin/ip
, visto che sembra che LND fatichi a trovarlo in qualche caso.$ sudo ln -s /bin/ip /usr/bin/ip
-
Aprite una sessione utente "bitcoin"
$ sudo su - bitcoin
-
Create la directory di lavoro per LND ed il corrispondente link simbolico
$ mkdir /mnt/hdd/lnd
$ ln -s /mnt/hdd/lnd /home/bitcoin/.lnd
$ ls -la
-
Create il file di configurazione LND ed incollate il codice seguente (cambiatelo nella parte rilevante per adattarlo al vostro alias). Salvate ed uscite.
$ nano /home/bitcoin/.lnd/lnd.conf
# Nodobitcoin: lnd configuration
# /home/bitcoin/.lnd/lnd.conf
[Application Options]
debuglevel=info
maxpendingchannels=5
alias=IL_VOSTRO_NOME[LND]
color=#68F442
# Se il vostro router supporta ed ha UPnP attivo inserite la seguente linea, altrimenti commentatela
nat=true
[Bitcoin]
bitcoin.active=1
# Abilitate la testnet o la mainnet di bitcoin
bitcoin.testnet=1
#bitcoin.mainnet=1
bitcoin.node=bitcoind
[autopilot]
autopilot.active=1
autopilot.maxchannels=5
autopilot.allocation=0.6
Qualche spiegazione su questa configurazione:
-
L'opzione di configurazione nat=true implica che il vostro router sia compatibile con Universal Plug'n'Play (UPnP) e lo abbia abilitato. Questo permette al nodo LND di rendere il vostro nodo raggiungibile dall'esterno della vostra rete configurando automaticamente il port forwarding, annunciando il vostro indirizzo IP esterno ed aggiornando questa informazione se il vostro IP cambia. Questa è al momento l'unica configurazione affidabile per avere un nodo LND che faccia routing delle transazioni esterne.
Se il vostro router non supporta UPnP, LND funzionerà ugualmente, ma il vostro nodo sarà un nodo privato solo per i vostri pagamenti e non sarà in grado di indirizzare pagamenti per altri. In questo caso, dovrete cancellare la riga
nat=true
nel file di configurazione sopra, altrimenti LND non si avvierà. Un'altra opzione è quella di passare il vostro indirizzo IP all'avvio di LND (consultate questa guida esterna 🇬🇧). -
La configurazione riportata sopra ha autopilot abilitato ed aprirà automaticamente fino a 5 canali con il 60% dei vostri fondi. Potete in ogni caso aggiustare queste configurazioni a vostro piacimento. Con
autopilot.active=0
potete disabilitare completamente l'autopilot e gestire i vostri canali interamente in modalità manuale.
👉 Informazioni supplementari: sample-lnd.conf nel repository del progetto LND 🇬🇧
Come per la parte Bitcoin, prima cambiamo l'utente attivo in bitcoin, successivamente avviamo il programma manualmente per controllare che tutto funzioni correttamente.
$ sudo su - bitcoin
$ lnd
Il demone LN stampa le proprie informazioni di status direttamente nella linea di comando. Questo significa che non possiamo usare questa sessione senza fermare il server. Dobbiamo quindi aprire una seconda sessione SSH.
Avviate il vostro programma SSH (es. PuTTY) una seconda volta, connettetevi al Pi e loggatevi come "admin". I comandi per la seconda sessione saranno evidenziati con $2
(che non dovrete inserire nella riga di comando, naturalmente).
Una volta che LND si è avviato, il processo aspetta che venga creato il portafoglio Bitcoin integrato (non userà difatti il portafoglio del demone "bitcoind").
-
Avviate una sessione utente bitcoin (dalla seconda sessione quindi)
$2 sudo su - bitcoin
-
Create il wallet LND
$2 lncli --network=testnet create
-
Se volete creare un nuovo wallet, inserite la vostra
password [C]
come password del portafoglio e selezionaten
come risposta alla domanda riguardo al seed, in quanto non lo avete e volete crearne uno nuovo, ed infine inserite la password opzionalepassword [D]
come password per generare il nuovo seed. Questo creerà un nuovo seed da 24 parole.
Queste 24 parole, assieme alla vostra password (la password opzionale password [D]
) è tutto ciò di cui avrete bisogno in caso dobbiate recuperare il vostro portafoglio Bitcoin e tutti i canali Lightning. Lo stato attuale dei canali, invece, non potrà essere ricreato da questo seed: questo richiede un backup continuo ed è ancora in sviluppo da parte di LND.
- Uscite dalla sessione utente bitcoin
$2 exit
Autorizziamo l'utente "admin" a lavorare con LND usando l'interfaccia a riga di comando lncli
. Per far sì che questo funzioni, dobbiamo copiare il certificato del Transport Layer Security (TLS- Sicurezza dello Strato di Trasporto) ed i file di permesso (macaroons) nella directory home dell'utente "admin".
-
Controllate che i certificati TLS siano stati creati
$2 sudo ls -la /home/bitcoin/.lnd/
-
Controllate che i file di permesso
admin.macaroon
ereadonly.macaroon
siano stati creati.
$2 sudo ls -la /home/bitcoin/.lnd/data/chain/bitcoin/testnet/
-
Copiate i macaroons ed il certificato TLS nella directory home di "admin"
$2 cd /home/bitcoin/
$2 sudo cp --parents .lnd/data/chain/bitcoin/testnet/admin.macaroon /home/admin/
$2 sudo cp /home/bitcoin/.lnd/tls.cert /home/admin/.lnd
$2 sudo chown -R admin:admin /home/admin/.lnd/
-
Assicuratevi che l'interfaccia da riga di comando
lncli
funzioni sbloccando il portafoglio (utilizzate la vostrapassword [C]
) e interrogando il nodo su alcune informazioni di base.
$2 lncli --network=testnet unlock
-
Controllate lo stato corrente del nodo LND
$2 lncli --network=testnet getinfo
Potete anche vedere il progresso della sincronizzazione iniziale di LND con Bitcoin nella prima sessione SSH.
Controllate che nel dump a schermo siano presenti le seguenti linee per assicurarvi che il port forwarding abbia avuto successo con UPnP. Se LND non riesce a configurare il router (nel caso quest'ultimo non supporti UPnP, per esempio), il nodo funzionerà ugualmente, ma non sarà in grado di effettuare il routing di transazioni di altri partecipanti al network.
[INF] SRVR: Scanning local network for a UPnP enabled device
[INF] SRVR: Automatically set up port forwarding using UPnP to advertise external IP
Fermiamo un attimo il server e torniamo ad occuparci della prima sessione SSH.
$2 lncli --network=testnet stop
$2 exit
Questo arresterà LND in modo corretto nella prima sessione SSH, in modo che questa possa essere nuovamente utilizzata.
Impostiamo LND in modo che parta automaticamente con lo startup del sistema.
-
Uscite dalla sessione utente bitcoin per tornare ad Admin
$ exit
-
Create un file di configurazione per il demone LND systemd con il seguente contenuto
$ sudo nano /etc/systemd/system/lnd.service
# NodoBitcoin: configurazione systemd per lnd
# /etc/systemd/system/lnd.service
[Unit]
Description=LND Lightning Daemon
Wants=bitcoind.service
After=bitcoind.service
[Service]
ExecStart=/usr/local/bin/lnd
User=bitcoin
Group=bitcoin
Type=simple
KillMode=process
LimitNOFILE=128000
TimeoutSec=240
Restart=always
RestartSec=60
[Install]
WantedBy=multi-user.target
Salvate ed uscite.
Ctrl - O
Ctrl - X
-
Abilitate, avviate e sbloccate LND
$ sudo systemctl enable lnd
$ sudo systemctl start lnd
$ systemctl status lnd
$ lncli --network=testnet unlock
Ora il demone non mostrerà più le informazioni a schermo sulla linea di comando, ma saranno registrate nel registro di sistema. Potrete monitorare il progresso dell'avvio di LND fino a quando non sarà sincronizzato con la blockchain di testnet (circa 1.3 milioni di blocchi al momento). Saranno necessarie fino a due ore, dopo di che vedrete un sacco di scritte veloci (uscite con Ctrl-C).
$ sudo journalctl -f -u lnd
Ora è tutto pronto, Bitcoin Core e nodo Lightning Network. Possiamo quindi iniziare ad impratichirci. Per fare questo avremo bisogno di Bitcoin sulla rete testnet: possiamo averli da un faucet (letteralmente: "rubinetto")
-
Generate un indirizzo Bitcoin per ricevere fondi sulla blockchain
$ lncli --network=testnet newaddress np2wkh
> "address": "2NCoq9q7............dkuca5LzPXnJ9NQ"
-
Mandate dei Bitcoin di Testnet al vostro indirizzo:
https://testnet-faucet.mempool.co -
Controllate il saldo del vostro wallet LND
$ lncli --network=testnet walletbalance
-
Monitorate le vostre transazioni (il faucet mostra l'identificativo della transazione, TX ID) su un Blockchain explorer:
https://testnet.smartbit.com.au
Non appena la vostra transazione per alimentare il nodo bitcoin è stata confermata, LND inizierà ad aprire e mantenere i canali. Questa feature è chiamata Autopilot ed è configurata nel file "lnd.conf". Se volete mantenere i canali in modalità manuale, disabilitate Autopilot.
Procuratevi una richiesta di pagamento su StarBlocks o Y’alls e muovete qualche bitcoin!
$ lncli --network=testnet listpeers
$ lncli --network=testnet listchannels
$ lncli --network=testnet sendpayment --pay_req=lntb32u1pdg7p...y0gtw6qtq0gcpk50kww
$ lncli --network=testnet listpayments
👉 visitate il sito Lightning API reference 🇬🇧 per tutte le informazioni di dettaglio
Se vorrete upgradare ad una nuova release di LND in futuro, controllate la sezione dedicata alle FAQ: Come aggiornare LND
Questo è il punto di non ritorno. Fino ad ora si poteva benissimo ricominciare tutto da capo. Fate esperimenti con i bitcoin di testnet, aprite e chiudete canali sulla testnet. Una volta che passate sulla mainnet e manderete veri bitcoin con il vostro "nodo bitcoin", allora avrete la "Skin in the game" - "interessi in gioco")
- Assicuratevi che il vostro RasPi funzioni come atteso.
- Fate un pò di pratica con la
bitcoin-cli
e le relative opzioni (controllate Bitcoin Core RPC documentation) - Fate esperimenti con la
lncli
e le sue varie opzioni (consultate le Lightning API reference) :GB: - Provate a fare qualche restart (
sudo shutdown -r now
): funziona tutto come vi sareste aspettati?
Se sì, possiamo andare avanti
Avanti: 9.Mainnet