Non essere asociale.
Durante lo studio di Bitcoin dalla teoria alla pratica e il relativo video-corso abbiamo fatto un pò di esperimenti. Uno di questi è far comunicare due o più nodi sullo stesso computer.
Facendo riferimento all’articolo precedente, utilizziamo un nuovo demone e cerchiamo di farli comunicare.
Sappiamo che di default le porte del demone di Bitcoin sono 18444 e la 18443, per quanto riguarda l’ambiente di regtest.
Ambiente: Porta - Porta RPC
Mainnet:8333 - 8332
Testnet:18333 - 18332
Regtest:18444 - 18443
Quello che dobbiamo fare è creare un altro file di configurazione per il secondo nodo con un datadir differente e far comunicare i due nodi.
Passiamo alla action!
Questo è il mio percorso dove mi posizionerò
$ pwd /Users/barno/Documents/bizantino
Al suo interno ho due cartelle, una un collegamento alla cartella di default di Bitcoin e l’altra è una cartella vuota pronta ad ospitare il secondo nodo.
$ ls -l total 0 lrwxr-xr-x 1 barno staff 48 Jan 13 16:30 Bitcoin -> /Users/barno/Library/Application Support/Bitcoin drwxr-xr-x 4 barno staff 128 Jan 13 17:23 Bitcoin_2
All’interno della cartella Bitcoin_2 creo un file bitcoin_nodo2.conf e inserisco questa configurazione.
datadir=/Users/barno/Documents/bizantino/Bitcoin_2 debug=1 regtest=1 # Options only for mainnet [main] # Options only for testnet [test] # Options only for regtest [regtest] port=28444 rpcport=28443 addnode=localhost:18444
Come vedete sono stati cambiati la porta e la rpcport.
Senza il file di configurazione sarebbe stato molto più prolisso e soggetto ad errori, come si può vedere dall’esempio sotto.
bitcoind -datadir=$PWD/regtest2 -regtest -debug=1 -rpcport=28443 -port=28444 -addnode=localhost:18444
Per avere informazioni sui parametri da utilizzare, potete sempre utilizzare bitcoind -help
- -port Listen for connections on <port> (default: 8333, testnet: 18333, 18444 regtest)
- -rpcport Listen for JSON-RPC connections on <port> (default: 8332, testnet: 18332, regtest: 18443)
- -conf=<file> Specify configuration file. Relative paths will be prefixed by datadir location. (default: bitcoin.conf)
- -connect=<ip>
Connect only to the specified node; -noconnect disables automatic
connections (the rules for this peer are the same as for
-addnode). This option can be specified multiple times to connect
to multiple nodes.
Passeremo al secondo nodo l’informazione necessaria per caricare il file di configurazione desiderato.
-conf=/Users/barno/Documents/bizantino/Bitcoin_2/bitcoin_nodo2.conf
avremo a disposizione due nodi sullo stesso computer.
questo percorso sarà diverso nel vostro computer /Users/barno/Documents/bizantino/Bitcoin_2.
Lanciamo quindi il demone di default (quello che abbiamo configurato nel precedente tutorial) e il secondo demone
$ bitcoind
$ bitcoind -conf=$PWD/bitcoin_nodo2.conf
NB: utilizzo $PWD perchè sono nella stessa cartella del file bitcoin_nodo2.conf.
Per utilizzare il client del secondo demone devo passare sempre il parametro
-conf
Ehi vi vedete?
$ bitcoin-cli -conf=$PWD/bitcoin_nodo2.conf getconnectioncount
1
Sì si vedono, infatti il comando che conta le connessioni ha come risultato 1!
Adesso facciamo la grande prova, miniamo 101 blocchi sul nodo di default e verifichiamo se sul nodo 2 sono visibili.
Per prima cosa dobbiamo ottenere un address nel nodo di default.
$ ADDR=`bitcoin-cli getnewaddress`
Lo salvo direttamente nella variabile d’ambiente ADDR così da agevolare la scrittura dei comandi successivi.
Per visualizzare il valore di $ADDR, possiamo utilizzare echo
$ echo $ADDR 2N6yRwpVGdFsD1gBBhGTE8ijVmNwiVz6myZ
Miniamo!
$ bitcoin-cli generatetoaddress 101 $ADDR
Otteniamo così un output molto corposo, ovvero 101 block header hash.
Per verificare che i blocchi si siano propagati correttamente, conto il numero di blocchi sul secondo nodo.
$ bitcoin-cli -conf=$PWD/bitcoin_nodo2.conf getblockcount 101
Si! Stanno parlando e sono perfettamente sincronizzati.
Dove sono salvate le relative blockchain?
Nel demone di default troviamo i blocchi nel percorso predefinito:
/Users/barno/Library/Application Support/Bitcoin/regtest
Il secondo demone utilizza la -datadir specificata nel file di conf.
/Users/barno/Documents/bizantino/Bitcoin_2/regtest
Potrebbe essere interessante iniziare a fare delle transazioni tra due nodi?
Direi di si!
► Libro Bitcoin dalla teoria alla pratica (Amazon)
► Libro Bitcoin dalla teoria alla pratica (sito ufficiale con pagamento in bitcoin)
—
► Tascabile Bitcoin 199 domande (Amazon)
► Tascabile Bitcoin 199 domande (sito ufficiale con pagamento in bitcoin)
► Pocket Book Bitcoin 199 questions (Amazon)
► Pocket Book Bitcoin 199 questions (official website — accept bitcoin)
—
► Video corso disponibile su Udemy
I nostri social:
► Twitter , Facebook, Linkedin, Medium, Instagram, Youtube, GitHub
Television isn’t a good idea (Radio Stations)
Email isn’t a good idea (Post offices)
Amazon isn’t a good idea (Retail stores)
Bitcoin isn’t a good idea (Central banks)
In crypto we trust