Όπως στην περίπτωση του Monero node που δημιουργήσαμε, έτσι και για το Bitcoin πήραμε ένα Raspberry Pi 4 και στήσαμε ένα πλήρες Bitcoin node ξεκινώντας από τον πηγαίο κώδικα. Θα μπορούσαμε φυσικά να στραφούμε σε πλατφόρμες όπως Umbrel, myNode, RaspiBlitz κ.ά. Έχουμε ωστόσο μια προτίμηση σε πιο απλές και μίνιμαλ προσεγγίσεις — κι από εκεί και πέρα προσθέτουμε όποια έξτρα υπηρεσία χρειαζόμαστε, ακριβώς όταν τη χρειαζόμαστε.

Σε κάθε περίπτωση, με το δικό σας Bitcoin node αποκομίζετε τα ακόλουθα οφέλη:

  • συνεισφέρετε στην τήρηση των κανόνων που διέπουν το Bitcoin, κι αυτό είναι καλό τόσο για εσάς όσο και για το δίκτυο
  • ενισχύετε την ασφάλειά σας, αφού στέλνετε/λαμβάνετε Bitcoin (BTC) αλλά κι επαληθεύετε συναλλαγές χωρίς να εμπιστευόσαστε κάποιον άλλον
  • συνδέοντας το πορτοφόλι σας στο δικό σας Bitcoin node, ενισχύετε την ιδιωτικότητά σας αφού το IP σας δεν καταγράφεται από κάποιο ξένο node
  • συμβάλλετε θετικά κι έμπρακτα στην αποκεντροποίηση του δικτύου του Bitcoin, κι αυτό αυξάνει σημαντικά το feel-good factor
  • αποκτάτε τοπικά πλήρη εποπτεία σε δεδομένα από από το blockchain του Bitcoin, π.χ., τρέχοντας τον δικό σας block explorer και συνδέοντάς τον στο node σας.

Σίγουρα υπάρχουν κι άλλα οφέλη, τα οποία αυτή τη στιγμή μας διαφεύγουν. Αν έχετε κάτι υπόψη, παρακαλούμε, πείτε μας.

Γιατί από το source code;

Περιττό ν’ αναφέρουμε ότι μπορείτε να κατεβάσετε τα κατάλληλα binaries για το Bitcoin node σας και να προχωρήσετε άμεσα στην εγκατάσταση και στη ρύθμιση του σχετικού daemon. Μια ενδιαφέρουσα εναλλακτική είναι να ξεκινήσετε από τον πηγαίο κώδικα και να προχωρήσετε στη μεταγλώττισή του. Αυτό σημαίνει, αν μη τι άλλο, αρκετή περισσότερη δουλειά. Η όλη διαδικασία όμως έχει και τα θετικά της. Κατ’ αρχάς, καταλήγετε πάντα με την πλέον πρόσφατη έκδοση του λογισμικού για το συνδυασμό λειτουργικού συστήματος/αρχιτεκτονικής που σας ενδιαφέρει. Επίσης, αναλόγως της χρήσης που σκοπεύετε να κάνετε, ίσως θέλετε να ενεργοποιήσετε ή να απενεργοποιήσετε συγκεκριμένα χαρακτηριστικά ή/και δυνατότητες. Τέλος, παίζοντας έστω και λίγο με τον πηγαίο κώδικα η όρεξη ανοίγει και, ποτέ δεν ξέρετε, ίσως κάποια στιγμή αρχίσετε ν’ ασχολείστε περισσότερο ενεργά με το λογισμικό — εν προκειμένω με τη διασφάλιση ποιότητας, με τη βελτίωση ή ακόμη και με την ανάπτυξη του Bitcoin.

Η συνέχεια και τα προαπαιτούμενα

Για τη μεταγλώττιση χρειαζόσαστε έναν φυσικό υπολογιστή, εικονική μηχανή ή cloud server με διανομή Linux βασισμένη στο Debian ή στο Ubuntu. Μπορείτε βεβαίως να δουλέψετε και με διανομή Linux άλλης οικογένειας ή ακόμη και με κάποιο άλλο λειτουργικό σύστημα. Ο παρών οδηγός, πάντως, δημιουργήθηκε μετά από δοκιμές σε περιβάλλοντα Debian και Ubuntu (βλ. παρακάτω). Κατά τα άλλα, το σύστημα εγασίας προτείνεται να έχει επεξεργαστή με τουλάχιστον δύο πυρήνες, 4GiB μνήμης RAM, και περί τα 600GiB ελεύθερου χώρου σε δίσκο SSD.

Τη στιγμή που γράφεται το παρόν, το μέγεθος του Bitcoin blockchain είναι κοντά στα 550GiB. Αν λοιπόν σκοπεύετε να έχετε ολόκληρο το blockchain τοπικά και να τρέχετε το node σας για καιρό, τότε εξετάστε την περίπτωση αποθηκευτικού χώρου έκτασης 1TiB.

Για τις ανάγκες της παρουσίασης που ακολουθεί εργαστήκαμε σε περιβάλλον Pop!_OS 22.04 LTS (βασίζεται στο Ubuntu), σε ένα παλιό MacBook Pro με επεξεργαστή Core i7 (οκτώ πυρήνες) και 16GiB μνήμης RAM. Τη μεταγλώττιση την κάναμε και σ’ ένα Raspberry Pi 4 με 8GiB RAM κι εξωτερικό δίσκο χωρητικότητας 2TiB (αυτό είναι το Raspberry που φιλοξενεί το Bitcoin node μας). Παρεμπιπτόντως, η κύρια πηγή μας για τη δημιουργία του παρόντος οδηγού ήταν το Unix build notes, από το επίσημο GitHub repository του Bitcoin.

Βήμα 1 – Ενημέρωση & απαραίτητα πακέτα

Συνδεθείτε σε ένα user account με δικαιώματα χρήσης του sudo. Από το τερματικό, βεβαιωθείτε ότι η τοπική λίστα με τα διαθέσιμα πακέτα λογισμικού είναι ενημερωμένη κι ακολούθως εφαρμόστε τις όποιες αναβαθμίσεις για ήδη εγκατεστημένα πακέτα:

sudo apt update && sudo apt upgrade

Προκειμένου να ξεκινήσει η μεταγλώττιση αλλά και να ολοκληρωθεί επιτυχώς, χρειαζόσαστε συγκεκριμένα πακέτα:

sudo apt-get install -y build-essential libtool autotools-dev \
	automake pkg-config bsdmainutils python3 libevent-dev \
	libboost-dev libzmq3-dev ccache

Βήμα 2 – Κλωνοποίηση repository

Αν το git δεν είναι παρόν στο σύστημά σας, εγκαταστήστε το τώρα:

sudo apt-get install git

Μέσα σε κάποιον κατάλογο που σας βολεύει, κλωνοποιήστε τον κώδικα του Bitcoin:

git clone https://github.com/bitcoin/bitcoin.git

Μεταβείτε στον κατάλογο που δημιουργήθηκε λόγω της κλωνοποίησης. Αν, π.χ., κλωνοποιήσατε στο home directory του χρήστη σας, τώρα γράψτε:

cd ~/bitcoin

Βήμα 3 – Μεταγλώττιση πηγαίου κώδικα

Πριν τη μεταγλώττιση επιλέξτε την πλέον πρόσφατη σταθερή έκδοση του Bitcoin, επιλέγοντας το αντίστοιχο tag. Για να δείτε όλα τα διαθέσιμα tags ταξινομημένα από το παλαιότερο στο νεότερο, πληκτρολογήστε:

git --no-pager tag | sort -V

noversion
v0.1.5
v0.1.6test1

[...]

v25.0
v25.0rc1
v25.0rc2

Στο παράδειγμά μας η πλέον πρόσφατη έκδοση είναι η v25.0rc2. Βέβαια εσείς θέλετε την πλέον πρόσφατη έκδοση που είναι και σταθερή, οπότε γράψτε:

git checkout v25.0

HEAD is now at 8105bce5b Merge bitcoin/bitcoin#27686: 25.0 Final Changes

Τρέξτε τώρα το autogen.sh ώστε να δημιουργήσετε αυτόματα το configure script (από το configure.ac) καθώς κι ό,τι άλλο χρειάζεται, όπως το Makefile.in (από το Makefile.am):

./autogen.sh

Στη συνέχεια τρέξτε το configure script με την παράμετρο --help, ώστε να δείτε αν υπάρχουν χαρακτηριστικά ή δυνατότητες που έχει νόημα να ενεργοποιήσετε ή να απενεργοποιήσετε για τον Bitcoin daemon σας. Για παράδειγμα, εμείς δεν ενδιαφερόμαστε για τη λειτουργικότητα wallet (παράμετρος --disable-wallet). Ενδιαφερόμαστε μόνο για τον daemon, και δεν θέλουμε καν το σχετικό graphical UI (παράμετρος --with-gui=no). Δείτε λοιπόν τι θέλετε και τι όχι, και δημιουργήστε με το configure το απαραίτητο Makefile για το στάδιο της μεταγλώττισης. Παράδειγμα:

./configure --disable-wallet --with-gui=no

Σειρά τώρα έχει η ίδια η διαδικασία της μεταγλώττισης. Πληκτρολογήστε:

make

Aν πάλι το σύστημά σας έχει επεξεργαστή με δύο ή περισσότερους πυρήνες (πολύ πιθανό, εκτός κι αν προσπαθείτε να μεταγλωττίσετε το Bitcoin σε κάποιον φθηνό cloud server), πληκτρολογήστε:

make -j "$(($(nproc)+1))"

Η μεταγλώττιση ίσως διαρκέσει αρκετή ώρα. Όλα εξαρτώνται από τον αριθμό των πυρήνων και την ισχύ του επεξεργαστή, τη διαθέσιμη μνήμη RAM, την ταχύτητα του μέσου αποθήκευσης, καθώς κι από το αν είναι κρυπτογραφημένο ή όχι. Όσο περιμένετε τη μεταγλώττιση να ολοκληρωθεί, ρίξτε αν θέλετε μια ματιά στα ανοικτά issues για το Bitcoin.

Βήμα 4 – Βασικός έλεγχος κι εκτενείς δοκιμασίες

Αφού η μεταγλώττιση ολοκληρωθεί, τα binaries θα περιμένουν στον κατάλογο ./src. Το βασικό binary, για την ακρίβεια ο daemon, που σε λίγο θα δώσει υπόσταση στο Bitcoin node σας, είναι το bitcoind. Για έναν πρώτο, γρήγορο έλεγχο, πληκτρολογήστε:

./src/bitcoind --version

Κατ’ αυτόν τον τρόπο αφενός βλέπετε αν το binary του Bitcoin deamon εκτελείται, αφετέρου τσεκάρετε την έκδοσή του:


Bitcoin Core version v25.0
Copyright (C) 2009-2023 The Bitcoin Core developers

Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.

This is experimental software.
Distributed under the MIT software license, see the accompanying file COPYING
or <https://opensource.org/licenses/MIT>

Στη συνέχεια ετοιμάστε και τρέξτε μια σειρά από εκτεταμένες δοκιμασίες:

make check

Όπως πριν, με τη μεταγλώττιση, αν το σύστημά σας έχει επεξεργαστή με δύο ή περισσότερους πυρήνες, πληκτρολογήστε:

make -j "$(($(nproc)+1))" check

Τέλος, τρέξτε και τα διαθέσιμα functional tests:

./test/functional/test_runner.py

Όταν το test_runner.py ολοκληρώσει τις εργασίες του θα πάρετε στο τερματικό σας μια συνοπτική λίστα με όλα τα tests και το πώς πήγε η εκτέλεση καθενός. Αν όλα έχουν πάει καλά, θα έχετε είτε tests που δεν έτρεξαν (Skipped, π.χ., επειδή οι αντίστοιχες λειτουργίες απουσιάζουν), είτε tests που έτρεξαν επιτυχώς (Passed).


Temporary test directory at /tmp/test_runner_₿_🏃_20230527_114850
Running Unit Tests for Test Framework Modules
...........
----------------------------------------------------------------------
Ran 11 tests in 0.635s

OK
1/263 - feature_taproot.py skipped (wallet has not been compiled.)
2/263 - feature_fee_estimation.py passed, Duration: 63 s
3/263 - mining_getblocktemplate_longpoll.py passed, Duration: 67 s

[...]

262/263 - p2p_ibd_txrelay.py passed, Duration: 1 s
Remaining jobs: [feature_config_args.py]
263/263 - feature_config_args.py passed, Duration: 27 s

TEST                                                   | STATUS    | DURATION

feature_abortnode.py                                   | ✓ Passed  | 2 s
feature_addrman.py                                     | ✓ Passed  | 3 s
feature_anchors.py                                     | ✓ Passed  | 2 s

[...]

rpc_users.py                                           | ✓ Passed  | 7 s
rpc_whitelist.py                                       | ✓ Passed  | 1 s
wallet_disable.py                                      | ✓ Passed  | 1 s
example_test.py                                        | ○ Skipped | 0 s
feature_bind_port_discover.py                          | ○ Skipped | 0 s
feature_bind_port_externalip.py                        | ○ Skipped | 1 s

[...]

wallet_upgradewallet.py --legacy-wallet                | ○ Skipped | 1 s
wallet_watchonly.py --legacy-wallet                    | ○ Skipped | 0 s
wallet_watchonly.py --usecli --legacy-wallet           | ○ Skipped | 0 s

ALL                                                    | ✓ Passed  | 1114 s (accumulated)
Runtime: 313 s

Βήμα 5 – Εγκατάσταση

Εκαταστήστε τα εκτελέσιμα, τις βιβλιοθήκες και τις σελίδες τεκμηρίωσης που προέκυψαν μετά τη μεταγλώττιση του Bitcoin:

sudo make install

Εξ ορισμού, όλα τα σχετικά αρχεία πηγαίνουν κάτω από τον κατάλογο /usr/local. Γράψτε, προαιρετικά, tree /usr/local, κι αν δεν έχετε ήδη κάνει άλλες εγκαταστάσεις στην λόγω διαδρομή θα δείτε κάτι παρόμοιο με το ακόλουθο παράδειγμα.


/usr/local/
├── bin
│   ├── bench_bitcoin
│   ├── bitcoin-cli
│   ├── bitcoind
│   ├── bitcoin-tx
│   ├── bitcoin-util
│   └── test_bitcoin
├── etc
├── games
├── include
│   └── bitcoinconsensus.h
├── lib
│   ├── libbitcoinconsensus.a
│   ├── libbitcoinconsensus.la
│   ├── libbitcoinconsensus.so -> libbitcoinconsensus.so.0.0.0
│   ├── libbitcoinconsensus.so.0 -> libbitcoinconsensus.so.0.0.0
│   ├── libbitcoinconsensus.so.0.0.0
│   ├── pkgconfig
│   │   └── libbitcoinconsensus.pc
│   └── python3.10
│       └── dist-packages
├── man -> share/man
├── sbin
│   └── unminimize
├── share
│   ├── ca-certificates
│   ├── fonts
│   └── man
│       └── man1
│           ├── bitcoin-cli.1
│           ├── bitcoind.1
│           ├── bitcoin-tx.1
│           └── bitcoin-util.1
└── src

Βήμα 6 – Δημιουργία αρχείου ρυθμίσεων

Σειρά έχει το αρχείο ρυθμίσεων των bitcoind και bitcoin-cli (RPC client για το bitcoind). Εξ ορισμού, το όνομα του εν λόγω αρχείου είναι bitcoin.conf κι αναζητείται στον κατάλογο .bitcoin, στο home directory του εκάστοτε χρήστη. Δημιουργήστε τον κατάλογο, λοιπόν…

mkdir ~/.bitcoin

…και μετά το αρχείο bitcoin.conf, εντός:

touch ~/.bitcoin/bitcoin.conf

Προς το παρόν το αρχείο είναι κενό. Σε γενικές γραμμές, το τι περιλαμβάνει καθορίζει το τι θέλετε να κάνει το Bitcoin node σας, το πόσο ανοικτό θέλετε να είναι ως προς το Internet κ.ο.κ. Για ένα Bitcoin full node, προτείνουμε το ακόλουθο σύνολο οδηγιών:


# Τήρηση πλήρους ευρετηρίου συναλλαγών
txindex=1

# Αποδοχή εντολών από command line και μέσω JSON-RPC
server=1

Αν πάλι προτιμάτε να ξεκινήσετε με ένα pruned node, μ’ άλλα λόγια να διατηρείτε τοπικά μέρος μόνο του blockchain, δείτε το ακόλουθο σύνολο οδηγιών:


# Διατήρηση μόνο των πλέον πρόσφατων 50GiB του blockchain
prune=50000

# Τα pruned nodes δεν μπορούν να έχουν πλήρες ευρετήριο συναλλαγών
#txindex=1

# Αποδοχή εντολών από command line και μέσω JSON-RPC
server=1

Με τον text editor της προτίμησής σας (π.χ., nano), ανοίξτε το αρχείο ~/bitcoin/bitcoin.conf. Αντιγράψτε το περιεχόμενο από ένα εκ των δύο προηγούμενων πλαισίων, επικολλήστε στο ανοικτό αρχείο, αποθηκεύστε τις αλλαγές κι εγκαταλείψτε τον editor. (Στο nano, π.χ., πατήστε CTRL+O κι ENTER για αποθήκευση, μετά CTRL+X για να βγείτε από τον editor.)

Βήμα 7 – Δημιουργία Systemd service

Με τη δημιουργία του κατάλληλου service file ο Bitcoin daemon θα ξεκινά αυτόματα κατά την εκκίνηση του λειτουργικού. Θα μπορείτε επίσης να τον σταματάτε, να τον ξεκινάτε ή να τον επανεκκινείτε, όπως ακριβώς κάνετε και με κάθε άλλη υπηρεσία Systemd.

Κατά την προετοιμασία του παρόντος ξεκινήσαμε από το bitcoind.service και δημιουργήσαμε την ακόλουθη εκδοχή:


[Unit]
Description=Bitcoin daemon
Documentation=https://github.com/bitcoin/bitcoin/blob/master/doc/init.md

After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/bitcoind -daemon \
	-pid=/home/userson/.bitcoin/bitcoind.pid \
	-conf=/home/userson/.bitcoin/bitcoin.conf \
	-datadir=/home/userson/.bitcoin

PermissionsStartOnly=true

Type=forking
PIDFile=/home/userson/.bitcoin/bitcoind.pid
Restart=on-failure
TimeoutStartSec=infinity
TimeoutStopSec=600

User=userson
Group=userson

RuntimeDirectory=.bitcoin
RuntimeDirectoryMode=0710

ConfigurationDirectory=.bitcoin
ConfigurationDirectoryMode=0710

StateDirectory=.bitcoin
StateDirectoryMode=0710

PrivateTmp=true
ProtectSystem=full
NoNewPrivileges=true
PrivateDevices=true
MemoryDenyWriteExecute=true

[Install]
WantedBy=multi-user.target

Με δικαιώματα διαχειριστή και τον text editor της προτίμησής σας (π.χ., nano), δημιουργήστε τώρα το νέο αρχείο /etc/systemd/system/bitcoind.service:

sudo nano /etc/systemd/system/bitcoind.service

Αντιγράψτε όλο το περιεχόμενο από το προηγούμενο πλαίσιο κι επικολλήστε στο νέο αρχείο. Φροντίστε ώστε ν’ αλλάξετε όλες τις παρουσίες του ονόματος χρήστη (userson, στο παράδειγμά μας), καθώς κι όλες τις παρουσίες του ονόματος της ομάδας (επίσης userson, στο παράδειγμά μας), με τα αντίστοιχα ονόματα του λογαριασμού από από τον οποίο εργαζόσαστε. Μετά, αποθηκεύστε τις αλλαγές κι εγκαταλείψτε τον editor.

Βήμα 8 – Εκκίνηση bitcoind

Μόλις δημιουργήσατε μία νέα υπηρεσία Systemd, επομένως για μία φορά μόνο φορτώστε το αντίστοιχο service file:

sudo systemctl daemon-reload

Θέλετε το bitcoind να ξεκινά αυτόματα, κατά την εκκίνηση του λειτουργικού:

sudo systemctl enable bitcoind

Χωρίς επανεκκίνηση του συστήματος, ξεκινήστε τώρα το Bitcoin node σας:

sudo systemctl start bitcoind

Προκειμένου να παρακολουθείτε ζωντανά το τι κάνει το bitcoind, μπορείτε απλά να διαβάζετε το αντίστοιχο αρχείο καταγραφής:

tail -f ~/.bitcoin/debug.log

Για να σταματάτε την παρακολούθηση του debug.log, πατάτε CTRL+C.

Μπορείτε να ξεκινάτε και να σταματάτε την υπηρεσία του Bitcoin daemon όσο συχνά θέλετε. Σε κάθε περίπτωση, πρώτη μέριμνα του bitcoind θα είναι να διαβάσει και να επεξεργαστεί το blockchain, καθώς και να αποθηκεύσει τοπικά ένα μέρος του (pruned node) ή ακόμη κι ολόκληρο το blockchain (full node). Από εκεί και μετά, εννοείται ότι ο daemon φροντίζει να κατεβάζει μόνον όσα block του λείπουν. Έχετε κατά νου ότι η αρχική λήψη του blockchain χρειάζεται αρκετό χρόνο για να ολοκληρωθεί. Αυτό οφείλεται όχι μόνο στο μέγεθος του ίδιου του blockchain, αλλά και στην επαλήθευση συναλλαγών και blocks.

Βήμα 9 – Πρόσβαση από το Internet και ασφάλεια

Το μηχάνημα που τρέχει το Bitcoin node καλό είναι να επιτρέπει εισερχόμενες συνδέσεις από το Internet, προκειμένου να εξυπηρετείτε κι άλλα nodes.

Για λόγους ασφαλείας αλλά και λειτουργικότητας, λοιπόν, το node σας πρέπει να έχει ενεργοποιημένο firewall που κατ’ ελάχιστον θα εφαρμόζει τους ακόλουθους κανόνες:

  • θα απαγορεύει όλες τις εισερχόμενες συνδέσεις, εκτός φυσικά από εκείνες που δεν θέλετε να μπλοκάρονται
  • θα επιτρέπει όλες τις εξερχόμενες συνδέσεις
  • θα επιτρέπει τις εισερχόμενες συνδέσεις στο port 22/TCP (SSH)
  • θα επιτρέπει τις εισερχόμενες συνδέσεις στο port 8333/TCP (Bitcoin)

Προκειμένου να ορίσετε τους παραπάνω κανόνες και να ενεργοποιήσετε το firewall, χρησιμοποιήστε το Uncomplicated Firewall (UFW) – και για την ακρίβεια το εργαλείο ufw. Συνδεθείτε στο μηχάνημα που θα φιλοξενήσει το Bitcoin node και στο τερματικό σας πληκτρολογήστε, διαδοχικά:

# βεβαιωθείτε ότι το UFW είναι εγκατεστημένο
sudo apt install ufw

# καθορίστε τους βασικούς κανόνες για εισερχόμενες κι εξερχόμενες συνδέσεις
sudo ufw default deny incoming
sudo ufw default allow outgoing

# επιτρέψτε τις εισερχόμενες συνδέσεις προς τον SSH server
sudo ufw allow 22/tcp

# επιτρέψτε τις εισερχόμενες συνδέσεις τον Bitcoin daemon
sudo ufw allow 8333/tcp

# ενεργοποιήστε το firewall
sudo ufw enable

Ελέγξτε τη λίστα με τους ισχύοντες κανόνες και την κατάσταση του firewall:

sudo ufw status

Αν όλα έχουν πάει καλά, θα δείτε κάτι τέτοιο:


Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  
8333/tcp                   ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6)             
8333/tcp (v6)              ALLOW       Anywhere (v6) 

Στην περίπτωση που το μηχάνημα βρίσκεται πίσω από κάποιο router, τότε είτε θα πρέπει να είναι στο DMZ είτε να φροντίσετε για τους απαραίτητους κανόνες port forwarding.

Επικοινωνία με τον Bitcoin daemon

Όσο ο Bitcoin daemon είναι ενεργός, από το ίδιο μηχάνημα και με τη βοήθεια του binary ονόματι bitcoin-cli, μπορείτε να του στέλνετε διάφορες εντολές (commands). Για τη λίστα με όλες τις εντολές, οργανωμένες σε κατηγορίες, που καταλαβαίνει το bitcoin-cli, πληκτρολογήστε:

bitcoin-cli help # το help σκέτο, χωρίς κάποια παύλα

Για πληροφορίες περί συγκεκριμένης εντολής, στο bitcoin-cli δίνετε το help ακολουθούμενο από το όνομα της εντολής. Παράδειγμα:

bitcoin-cli help getnettotals

getnettotals

Returns information about network traffic, including bytes in, bytes out,
and current time.

Result:
{                                              (json object)
  "totalbytesrecv" : n,                        (numeric) Total bytes received
  "totalbytessent" : n,                        (numeric) Total bytes sent
  "timemillis" : xxx,                          (numeric) Current UNIX epoch time in milliseconds
  "uploadtarget" : {                           (json object)
    "timeframe" : n,                           (numeric) Length of the measuring timeframe in seconds
    "target" : n,                              (numeric) Target in bytes
    "target_reached" : true|false,             (boolean) True if target is reached
    "serve_historical_blocks" : true|false,    (boolean) True if serving historical blocks
    "bytes_left_in_cycle" : n,                 (numeric) Bytes left in current time cycle
    "time_left_in_cycle" : n                   (numeric) Seconds left in current time cycle
  }
}

Examples:
> bitcoin-cli getnettotals 
> curl --user myusername --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "getnettotals", "params": []}' -H 'content-type: text/plain;' http://127.0.0.1:8332/

Ακολουθούν δύο παραδείγματα εντολών προς τον Bitcoin daemon.

bitcoin-cli getblockcount

791883

Μπορείτε να συγκρίνετε το height που είναι γνωστό στον daemon σας με το height που αναφέρεται από κάποιον δημόσιο block explorer, όπως εκείνος στο https://bitcoinexplorer.org. Αν τα ύψη δεν ταυτίζονται, τότε το node σας δεν έχει (ακόμη) πλήρη γνώση περί του Bitcoin blockchain.

bitcoin-cli getnettotals

{
  "totalbytesrecv": 802394220,
  "totalbytessent": 35158196145,
  "timemillis": 1685335555821,
  "uploadtarget": {
    "timeframe": 86400,
    "target": 0,
    "target_reached": false,
    "serve_historical_blocks": true,
    "bytes_left_in_cycle": 0,
    "time_left_in_cycle": 0
  }
}

Πέρα από τις εντολές, το bitcoin-cli δέχεται και μια σειρά επιλογών (options). Για να τις δείτε, πληκτρολογήστε:

bitcoin-cli -help # τώρα το help έχει μια παύλα αριστερά

Παραθέτουμε δύο παραδείγματα.

bitcoin-cli -getinfo

Chain: main
Blocks: 791883
Headers: 791883
Verification progress: 99.9993%
Difficulty: 49549703178592.68

Network: in 21, out 10, total 31
Version: 250000
Time offset (s): 0
Proxies: n/a
Min tx relay fee rate (BTC/kvB): 0.00001000

Warnings: (none)
bitcoin-cli -netinfo

Bitcoin Core client v25.0.0 - server 70016/Satoshi:25.0.0/

         ipv4    ipv6   total   block
in         21       0      21
out        10       0      10       2
total      31       0      31

Local addresses: n/a