Bitcoin node από το source code
Όπως στην περίπτωση του 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