Come costruire un bancomat lightning ATM Bitcoin fai da te
In quest’articolo vediamo come costruire un bancomat lightning ATM Bitcoin fai da te grazie Fulmo dove si può comprare l’hardware necessario in bundle e le istruzioni per installare il software ( ovviamente open source ). E’ un bancomat portatile adatto per testare, stupire gli amici e giocarci; si potranno inserire monete ( e non banconote ) e si attingerà dal conto caricato in precedenza sul wallet lightning du Telegram ( o più difficile con BTCPay Server )
Premessa : è necessario conoscere il funzionamento del secondo livello della rete Bitcoin definito Lightning Network.
Premessa 2: questa guida è la traduzione in Italiano ( TESTATA) di quest’articolo
Premessa 3: richiede conoscenze medie di sistematica, un pò di manualità e qualche concezione di elettricità. Non è facile ma se segui tutti i passaggi con calma ci riesci come ce l’abbiamo fatta noi.
In ogni caso non è per tutti! Se vuoi puoi chiederci di assemblartelo anche se perderesti un pò di scoperta
Il principio di funzionamento del bancomat portatile ATM BTC Lightning
Il concetto all’apparenza semplice: deposito degli Euro e mi tornano sul mio wallet i satoshi convertiti. Attraverso una transazione off-chain ( senza pagare la commissione al miner e tempi di attesa lunghi )
- l’utente ha già un wallet lightning di Bitcoin
- l’utente versa il quantitativo di monete che vuole convertire in satoshi attraverso la fessura
- può depositare 6 monete diverse
- ATM una volta aver riconosciuto ( o scartato) la somma delle monete, converte al prezzo corrente di mercato il valore degli EUR in BTC
- Il display visualizza un qr code attraverso il quale, scansionando, è possibile depositare il corrispettivo convertito in satoshi ( al netto della commissione dell ATM) nel proprio wallet BTC lightning.
- La transizione è pressoché instantanea perchè avviene sul secondo livello della rete Bitcoin
[ I fondi da trasferire vengono presi da lntxbot wallet lightning su Telegram oppure tramite un wallet su BTCPAyserver attivo. Ovviamente questi wallet devono avere la giacenza per soddisfare la richiesta, altrimenti verrà negata ]
Cosa serve per costruire un costruire un ATM Bitcoin portatile
Facciamo l’elenco della spesa per la costruzione fai da te di un ATM Bitcoin portatile ( non adatto comunque ad un uso industriale o commerciale):
- Sul sito di Fulmo c’è già il kit di assemblaggio che comprende
- un alloggio in plastica stampato in 3D
- Accetattore di monete
- Raspberry Pi Zero
- Cavi di collegamento
- Convertitore di tensione
- ePaper display
- Cavo USB
- 16 GB Micro SD
- un misuratore di tensione
- cacciavite piccolo
- un computer
- Balena Etcher per flashare il sistema operativo
- la password del wifi a cui si aggancerà il bancomat
- powerbank o una presa di corrente
- TANTA PAZIENZA
Guida passo dopo passo per la costruzione del bancomat Bitcoin
Collega esattamente questi cavi sul raspberry e il display e-ink
- alla fine dovresti ottenere questo risultato
- sposta le tacchette ( se non lo sono già) nella posizione riportata qui sotto
- Accendiamo il PC / MAC
- scarichiamo l’immagine del SO: https://www.dropbox.com/s/kg5swxhdb9h2a4m/2019-04-08-raspbian-stretch-lightningatm.gz\
- Inseriamo la micro SD nel computer attraverso un adattatore in modo che la vediamo che periferica esterna
- Flashiamo tramite Etcher precedentemente scaricato ed installato, il Sistema Operativo sulla micro SD
- Aggiungiamo nella cartella di /boot il seguente file attraverso un editor di testo
-
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="You_WiFi_SSID"
psk="You_WiFi_Password"
}
- Salviamo il file rinominandolo come “wpa_supplicant.conf” sempre all’interno della cartella /boot
- Smontiamo la microSD dal computer
- inseriamola nell’apposito slot all’interno del raspberryPi
- Colleghiamo il raspberry con il cavo USB-C alla corrente /powerbank
- aspettiamo che si accenda
- dal computer accediamo al router a cui si è collegato il Raspberry ed identifichiamo il suo IP ( 192.168.xx.xx ad esempio)
- apriamo il terminale dal computer
- dobbiamo loggarsi tramite SSH all Raspberry quindi digitiamo
-
$ ssh pi@192.168.X.XXX
- se ci viene chiesto dobbiamo confermare la chiave ECDSA
- la password di default è la seguente: “raspberry”
- cambiamo la password digitando sempre da terminale
-
$ passwd
- inseriamo la nuova password desiderata
- ci chiederà di farlo 2 volte
- Facciamo gli aggiornamenti copiando, incollando e premendo invio il seguente codice
-
$ sudo apt update && sudo apt upgrade
$ git clone https://github.com/21isenough/LightningATM.git
$ cd LightningATM
$ pip3 install -r requirements.txt
- attendiamo che si rebooti nuovamente quindi colleghiamoci con ssh e la nuova password
-
$ ssh pi@192.168.X.XXX
- installiamo altri componenti per il display come di seguito
-
$ cd ~
$ git clone https://github.com/waveshare/e-Paper
$ cd ~/e-Paper/RaspberryPi*/python/
$ sudo python3 setup.py install - ora possiamo testare il display in questo modo sempre da terminale inseriamo i comandi
-
$ cd ~
$ cd e-Paper/RaspberryPi_JetsonNano/python/examples/
$ sudo python3 ./epd_2in13_V2_test.py - Se hai fatto tutto giusto dovrebbe per lo meno accendersi il display
- Ora sempre da terminale andiamo a cambiare questo file digitando
-
$ cd ~
$ nano ~/.lightningATM/config.ini - quando si aprirò il file avrà questo testo:
-
# Define what screen you are using with the ATM
# Current options are:
# display = papiruszero2in
# display = waveshare2in13
display = waveshare2in13 - verifichiamo che l’ultima parte sia display = waveshare2in13 ; in caso contrario la cambiamo
- Crtl + x per confermare e poi y per uscire
- Rilanciamo i comandi
-
$ cd ~/LightningATM/
$ ./app.py - dovremmo quindi avere questa schermata sul display:
DAI CHE CI SEI QUASI – la configurazione hardware è quasi conclusa
- passiamo ora all’accettatore di monete: il problema qui è che per funzionare lo stesso ha bisogno di 12V di tensione mentre con USB noi possiamo darne 5V (ed il raspberry funziona proprio a 5V). E’ necessario quindi usare il convertitore di tensione per convertire appunto da 12V a 5V.
- Dobbiamo tagliare in 2 il cavo USB-C. Prendi una forbice e senza paura taglia.
- Sfiletta il filo in modo da dividere le parti in rame dei 2 cavetti interni più piccoli
- un’estremità la colleghi al powerbank /alimentatore e l’altra al rasberry
- se guardi il video capisci meglio
- qui ti serve il misuratore di tensione. Infatti ,mettendo i morsetti nel polo + e – devi vedere che esattamente passino i 12V. Aiutati con una vite per girare la ghiera ed aggiustare la tensione ( la vedi nella freccia – questo perchè il convertitore è venduto non tarato )
- se non l’hai ancora fatto, collega i cavi dell’accettare di monete al convertitore
CONFIGURAZIONE HARDWARE CONCLUSA
Nella prossima parte ci addentriamo nella configurazione del software e di come far capire all’accettatore i vari “pesi” delle monete inserite a quanto corrispondono.
Come funziona l’accettatore di monete nel bancomat ATM Bitcoin lightning
Probabilmente non ci hai mai fatto caso, ma tutti gli accettatori di moneta (quelli che trovi anche nelle macchinette del caffè per intenderci ) funzionano con il peso. Non ti vanno a verificare se la moneta da 1€ ha proprio quella misura, quei colori, quella filettatura, no nulla di tutto questo: vanno a verificare se il peso della moneta è uguale a quella che hanno in memoria. Punto.
Ed è lo stesso motivo per cui se vai a lavare la macchina ad un altro distributore probabilmente il gettone, se entra nella stessa fessura, non funziona. Perchè avrà un peso diverso. Sta alla sensibilità della macchina ( ed al suo costo) capire la tolleranza.
Quello che dobbiamo fare è procurarci un set di monete ( al massimo 6 diverse riesce a tenere in memoria questo accettatore) dello stesso tipo ma fisicamente diverse. Cioè se voglio accettare la moneta da 1€ mi devo procurare almeno 5/6 monete da 1€ in modo da far “insegnare ” all’accettatore il peso medio di quella moneta.
Configurare validatore di monete (massimo 6 monete)
- Sul convertitore spostiamo il selezionatore su “NO” and “Medium”.
- diamo corrente (senza ancora collegarci Raspberry) => si illuminerà e comparirà 0
- Premiamo e teniamo premuti contemporaneamente il + e il bottone – fino a che non apparirà A sul display
- Quando apparirà B, torniamo ad A con il bottone + o –
- Teniamo premiato il pulsante SET per poco finché E non appare
- Se vogliamo inserire le 6 monete diverse (da 5 cents a 2 euro) inseriamo 6 spostandoci con il tasto + e –
- premiamo SET
- Adesso comparirà H1 (per la prima moneta).
- Dobbiamo ora inserire quante monete dello stesso tipo inseriremo per la calibrazione
- Ti consiglio almeno 10 monete quindi digitiamo 10 spostandoci sempre con il pulsante + o –
- premiamo SET
- Comparirà P1 per l’impulso
- 5 cents = 2 impulsi / 10 cent = 3 / 20 cent = 4 / 50 cent = 5 / 1 euro = 6 / 2 euro = 7
- impostiamo 2 pulses (per 5 cent) con + o – e
- premiamo SET
- F1 comparirà per la tolleranza; impostiamo ad 8 e premiamo SET
- i parametri per la prima moneta sono stati settati
- comparirà H2 per la seconda moneta
- ripetere il passaggi per tutte le monete
- quando tutte le monete saranno dettate, il led si illuminerà brevemente e successivamente la scritta A per la conferma
- Dopo poco, anche lo 0
Calibrare il configuratore di monete
- Premi SET due volte
- A1 comparirà
- Inseriamo la prima moneta 10 volte ( quella da 5 cent se le vogliamo fare tutte e 6)
- non usare la stessa moneta mi raccomando, devi prenderne 10 diverse dello stesso tipo
- Il led si illuminerà per conferma
- A2 comparirà per la seconda moneta
- procedere per tutte le monete
- Tutti i led si illumineranno per confermare l’accettazione
- 0 apparirà
- l’accettatore è pronto
- ora apriamo il terminale da computer
- accediamo con ssh al ATM
cd ~/LightningATM/
./app.py
$ nano ~/.lightningATM/config.ini
- modifichiamo gli impulsi a quanto abbiamo inserito in precedenza
[coins]
# Pulsecount, fiat value, name
coin_types = 2,0.05,5 eur cent
3,0.10,10 eur cent
4,0.20,20 eur cent
5,0.50,50 eur cent
6,1.00,1 eur
7,2.00,2 eur
Definire la commissione da chiedere
Proprio come un ATM Bitcoin “classico” che ha costi di commissioni dal 10% in su per il deposito di contanti e la conversione in satoshi, anche con nostro bancomat possiamo impostare una commissione. Per tutto il lavoro che abbiamo fatto fino a qui ce la meritiamo no?
Riprendi il computer e collegati tramite terminale all ssh – ormai hai capito come fare
- Digita i seguenti comandi
./app.py
nano ~/.lightningATM/config.ini
- quindi potremo vedere questa descrizione
[atm]
centname = cent
fee = 2
- Possiamo quindi cambiare il valore della “fee” in un valore da 0 a 100; qui il 2 di riferisce al 2% di commissione. E la nostra moneta di unità “eur”
- Puoi muoverti con le frecce del cursore
- una volta modificato premiamo per salvare “Ctrl + x” and “y” per confermare
- “invio” per uscire
Collegare il wallet al bancomat portatile di Bitcoin
Ci sono essenzialmente 2 modi da cui attingere i satoshi da scambiare:
- tramite lntxbot su Telegram ( metodo più facile e che vedremo nello specifico)
- LND con BTCPayServer
Vediamo i passaggi da fare per installare la prima delle soluzioni, ovvero far comunicare il bancomat Bitcoin al wallet su lntxbot di telegram:
- dovete aver installato telegram ovviamente su un dispositivo
- inserite il bot https://t.me/lntxbot
- clicchiamo su “avvia”
- quello che dobbiamo fare è andare a depositare dei fondi lightning su questo wallet custodial lightning
- se hai fondi sulla blockchain di Bitcoin, puoi usare questa applicazione per spostare parte dei tuoi fondi su lightning
- sul bot digitiamo “/invoice 1000” se vogliamo depositare 1000 satoshi. Cambia il numero di quanto vuoi
- se la transazione è andata a buon fine controlla il totale digitando /balance per vedere se è tutto ok
- ora sempre nel bot digitiamo /lightningatm e ci genererà un qr code
- copiamolo ed incolliamolo da qualche parte, ci servirà fra un istante
- ora apriamo il terminale da computer
- accediamo con ssh al ATM
cd ~/LightningATM/
./app.py
$ nano ~/.lightningATM/config.ini
- inseriamo il comando
activewallet = lntxbot
- inseriamo le credenziali generate dal qrcode in precedenza qui
[lntxbot]
# base64 encoded lntxbot api credentials
url = https://lntxbot.com
creds = abc..xyz==
Complimenti ce l’hai fatta!!!
Ora non ci resta che lanciare questo comando per far partire automaticamente ATM quando riceve corrente
$ cd ~/LightningATM
$ sudo cp LightningATM.service /etc/systemd/system/LightningATM.service
$ sudo systemctl enable LightningATM.service
$ sudo reboot
questo il risultato finale del Bancomat ATM Bitcoin
The power of #Bitcoin is real! Thanks to @fulmolightning by @21isenough #atmlightning #lightningatm pic.twitter.com/fxsPc44E0l
— Liuknes⚡️ LNP/BP (@LucaSonzo90) January 26, 2022
ulteriori approfondimenti:
- https://blog.fulmo.org/the-lightningatm-pocket-edition/
- https://docs.lightningatm.me
- https://ereignishorizont.xyz/lightning-atm/en/
Se ti è piaciuto quest’articolo e magari risolto qualche dubbio, una donazione anche solo di qualche sats mi farebbe piacere