Iniziamo oggi una serie di articoli che ci porteranno ad imparare come utilizzare Python per visualizzare i dati sulle diverse blockchain.
Si sente parlare sempre più spesso di crittovalute, blockchain, bitcoin, investimenti, trading. La maggior parte delle informazioni che vengono assimilate appaiono pessimistiche, ma questo è dovuto soprattutto alla scarsa informazione associata con tali argomenti.
Lungi dal voler fare una trattazione approfondita dell’argomento, cercheremo con questo articolo (e con i seguenti) di spiegare in qualche modo cosa abbiamo davanti, e come poter interagire con poche righe di Python.
Questo primo articolo sarà necessariamente più teorico, ma alla fine presenterà come sempre un breve listato in Python con il quale potrete sbizzarrirvi a cercare informazioni senza dover necessariamente registrarvi su qualche piattaforma esterna. In altri termini, mostreremo uno dei valori principali dell’adozione di questo sistema, la trasparenza.
Prepariamo il nostro Raspberry PI, quindi, carichiamo Thonny e continuiamo la lettura.
Cos’è una blockchain
Una blockchain è un database distribuito condiviso tra i nodi di una rete di computer. Come database, una blockchain memorizza le informazioni elettronicamente in formato digitale. Le blockchain sono meglio conosciute per il loro ruolo cruciale nei sistemi di criptovaluta, come Bitcoin, per mantenere un registro delle transazioni sicuro e decentralizzato. L’innovazione con una blockchain è che garantisce la fedeltà e la sicurezza di un record di dati e genera fiducia senza la necessità di una terza parte fidata.
Una differenza fondamentale tra un database tipico e una blockchain è come sono strutturati i dati. Una blockchain raccoglie informazioni in gruppi, noti come blocchi, che contengono insiemi di informazioni. I blocchi hanno determinate capacità di archiviazione e, una volta riempiti, vengono chiusi e collegati al blocco precedentemente riempito, formando una catena di dati nota per l’appunto come blockchain. Tutte le nuove informazioni che seguono il blocco appena aggiunto vengono compilate in un nuovo blocco appena formato, che verrà quindi accodato a sua volta alla catena non appena riempito.
A ogni blocco della catena viene assegnato un timestamp esatto quando viene aggiunto alla catena.
Cos’è un exchange
Un exchange (o borsa valori) è un mercato in cui vengono scambiati titoli, materie prime, derivati e altri strumenti finanziari. La funzione principale di un exchange è garantire un commercio equo e ordinato e l’efficiente diffusione delle informazioni sui prezzi per qualsiasi negoziazione di titoli su quel sistema. Un exchange offre pertanto una piattaforma con la quale mettere in collegamento gli investitori.
In ambito crittovalute, un exchange rappresenta uno scambio di criptovalute, o un cambio di valuta digitale. Si tratta di un’attività che consente ai clienti di scambiare criptovalute o valute digitali con altri asset, come denaro fiat convenzionale o altre valute digitali.
Interrogare una blockchain attraverso un exchange
La caratteristica di un exchange digitale consiste nel fornire ai propri clienti una serie di strumenti digitali, che garantiscano l’accesso alle funzioni necessarie per investire sui mercati delle crittovalute.
Dal momento che esistono diverse blockchain, numerosissimi pacchetti per l’investimento e funzionalità critiche legate alla sicurezza, spesso chi entra per la prima volta in questo mercato ricerca sicurezza, garanzie, robustezza prima di scambiare parte dei propri averi in crittovaluta. Gli exchange più importanti forniscono queste caratteristiche, al costo di una minore “libertà di azione” che si esprime di solito in un maggiore controllo delle transazioni ed in una (minima) tassa o fee richiesta per eseguire alcune operazioni.
E poi?
A questo punto scarichiamo la libreria Python ccxt, e iniziamo a divertirci!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import time import ccxt # Carica una lista contenente gli ewxchange che vogliamo confrontare exchanges = [ccxt.binance ({}), ccxt.ftx ({}), ccxt.kucoin ({}), ccxt.bitcoincom ({}), ccxt.bitforex ({}), ccxt.bitmart ({})] # Mostra array della blockchain # record_completo = exchanges[0].fetchTicker('BTC/USDT') # Mostra ultimo prezzo crittovaluta/USDT per ciascun exchange i = 0 print("Exchange BTC ETH DOGE LTC BCH") print("--------------------------------------------------------") for exchange in exchanges: BTC = exchanges[i].fetchTicker('BTC/USDT')['last'] ETH = exchanges[i].fetchTicker('ETH/USDT')['last'] DOGE = exchanges[i].fetchTicker('DOGE/USDT')['last'] LTC = exchanges[i].fetchTicker('LTC/USDT')['last'] BCH = exchanges[i].fetchTicker('BCH/USDT')['last'] print("%10s : %6.2f |%6.2f |%6.2f |%6.2f |%6.2f |" % (exchange, BTC, ETH, DOGE, LTC, BCH)) i = i + 1 print("--------------------------------------------------------") |
Analizziamo il programma.
Nelle prime due righe importiamo il modulo time (ci servirà in futuro per eseguire i calcoli al volo) ed il modulo ccxt, la nostra libreria di interfaccia con le blockchain attraverso exchange.
Procediamo quindi a caricare una lista relativa agli exchange: ciascun elemento complesso conterrà un dizionario con tutte le informazioni estratte da un dato exchange online, necessarie per valutare ed eseguire statistiche e grafici sull’andamento delle nostre crittovalute di riferimento. Lo analizzeremo con cura nel prossimo articolo. Ciò che invece utilizzeremo oggi è il nome dell’exchange, al quale è assegnato il relativo dizionario.
In particolare, il metodo .fetchTicher(‘valuta1/valuta2’)[‘last’] viene richiamato per tutte le coppie di valute che desideriamo controllare all’interno di un exchange, per poi passare all’exchange successivo.
Le righe dalla 15 alla 19 infatti recuperano il valore attuale delle diverse coppia di valute, mentre il ciclo for, impostato alla riga 14, cicla sugli exchange che abbiamo predefinito in riga 5.
La riga 20, infine, si occuperà di formattare correttamente i valori acquisiti da ciascun exchange.
Il risultato è dato dalla seguente tabella, ed è aggiornabile senza problemi attraverso un timer o uno script.
E’ facile notare come sia semplice parametrizzare il programma per fargli accedere tutti gli exchange che desideriamo, per permetterci di scegliere quale offra le condizioni di investimento migliori. L’unica cosa alla quale occorre porre attenzione è che non tutti gli exchange possiedono tutte le coppie di valute. Nel caso la coppia prescelta non fosse presente nell’oggetto richiamato dall’exchange attraverso il metodo fetch, il programma andrà in errore. Occorrerà quindi scrivere una routine try…except per bloccare l’errore ed avvertire l’utente.
La prossima settimana analizzeremo con più calma cosa contiene esattamente l’oggetto richiesto da ccxt, e come trarne spunto per altre interessanti attività di indagine statistica.
VI aspetto tra sette giorni!
Join our groups on Telegram…