Wie betreibe ich einen Bitcoin Cash Full Node (Bitcoin Unlimited) auf Raspberry Pi Erfahrungsbericht
Auch verfügbar in: english, italiano, polski
Vor einigen Wochen hat Jamie Redman einen Artikel über Bitcoin Cash Full Node. Er erwähnte dort, dass ein Bitcoin Cash Full Node auf Raspberry Pi ausgeführt werden kann. Da ich einen solchen Full Node habe und mich Leute danach fragten, habe ich beschlossen einen Erfahrungsbericht darüber zu schreiben, wie ich es mache.
Um den Node zu betreiben verwende ich:
Raspberry Pi 3 (32 Bit, 1 GB RAM, 16 GB SD-Karte)
1 TB USB Festplatte
Bitcoin Unlimited Full Node Software
Internetverbindung ↓ 90,0 Mbit/s ↑ 32,0 Mbit/s
Ich habe Raspberry Pi mit vorinstalliertem Betriebssystem gekauft, so dass ich es nicht installieren musste. Wenn Sie es selbst installieren wollen, können Sie hier nachlesen, wie man es macht .
Um mich mit dem Router zu verbinden, verwende ich ein LAN-Kabel, man kann aber auch das Wlan nutzen.
Wie man Bitcoin Unlimited auf Raspberry Pi installiert, kann man hier nachlesen. Welche Datei (arm32 oder arm64) herungergeladen werden muss, hängt davon ab, welches Betriebssystem man verwendet. Ich nutze 32-bit Betriebssystem.
Um die Software herunterzuladen und zu installlieren habe ich folgende Kommandos verwendet:
wget https://www.bitcoinunlimited.info/downloads/bch-unlimited-1.9.0.0-arm32.tar.gz
tar xvfz bch-unlimited-1.9.0.0-arm32.tar.gz
cd bch-unlimited-1.9.0.0/
sudo mv ./bin/bitcoind /usr/local/bin/bitcoind
sudo mv ./bin/bitcoin-cli /usr/local/bin/bitcoin-cli
sudo mv ./bin/bitcoin-miner /usr/local/bin/bitcoin-miner
sudo mv ./bin/bitcoin-tx /usr/local/bin/bitcoin-tx
sudo mv ./bin/bitcoin-qt /usr/local/bin/bitcoin-qt
sudo mv ./bin/testbitcoin /usr/local/bin/testbitcoin
sudo mv ./include/bitcoinconsensus.h /usr/local/include/bitcoinconsensus.h
sudo mv ./lib/libbitcoinconsensus.so /usr/local/lib/libbitcoinconsensus.so
sudo mv ./lib/libbitcoinconsensus.so.0 /usr/local/lib/libbitcoinconsensus.so.0
sudo mv ./lib/libbitcoinconsensus.so.0.0.0 /usr/local/lib/libbitcoinconsensus.so.0.0.0
sudo mv ./lib/libbitcoincash.so /usr/local/lib/.
sudo mv ./lib/libbitcoincash.so.0 /usr/local/lib/.
sudo mv ./lib/libbitcoincash.so.0.0.0 /usr/local/lib/.
sudo mv ./share/* /usr/local/share/.
Ich verbinde meine Raspberry Pi nicht mit dem Monitor, sondern mache ich alles remote.
Das Synchronisieren der kompletten Blockchain dauert auf Raspberry Pi lange, deswegen habe ich die USB Festplatte an meinen PC angeschlossen und es dort gemacht. Zu diesem Zweck habe ich auf meinem PC die Windowsversion von Bitcoin Unlimited installiert. Für die Blockchain habe ich auf der Festplatte ein Verzeichnis "Bitcoin" erstellt, man kann das Verzeichnis aber beliebig benennen. Anschliessend gabe ich das Programm bitcoin-qt gestartet und als Zielverzeichnis für die Daten den Ordner "Bitcoin" ausgewählt.
Das Synchronisieren der Blockchain hat etwa 22 Stunden gedauert.
Nachdem ich die Blockchain synchronisiert habe, habe ich das Programm bitcoin-qt beendet und die Festplatte an die Raspberry Pi mit dem USB-Kabel angeschlossen. Sie wurde automatisch gemounted und kann unter /media/pi/Volume angesprochen werden. Dann musste ich meinem BU-Node noch mitteilen, wo sich die Blockchain befindet. Um es zu machen, musste ich die Datei bitcoin.conf mit nano öffnen (wenn die Datei nicht existiert muss sie angelegt werden):
pi@raspberrypi:~ $ nano /home/pi/.bitcoin/bitcoin.conf
und dort folgende Zeile einfügen:
datadir=/media/pi/Volume/Bitcoin
Dann habe ich meinen BU-Node auf der Raspberry Pi gestartet:
bitcoind -daemon
Wenn der Node läuft, kann man verschiedene Kommandos verwenden. Um zu sehen, welche Kommandos man nutzen kann, schreibt man:
bitcoin-cli help
Wenn man den Parameter getinfo verwendet:
pi@raspberrypi:~ $ bitcoin-cli getinfo
{
"version": 1070000,
"protocolversion": 80003,
"walletversion": 130000,
"balance": 0.00000000,
"blocks": 611003,
"timeoffset": 0,
"connections": 21,
"peersgraphene": 9,
"peersxthinblock": 9,
"peers_cmpctblock": 18,
"proxy": "",
"difficulty": 352048068313.6447,
"testnet": false,
"keypoololdest": 1574687063,
"keypoolsize": 101,
"paytxfee": 0.00000000,
"relayfee": 0.00001000,
"status": "ready",
"errors": "",
"fork": "Bitcoin Cash"
}
bekommt man allgemeine Informationen über den Node. Wenn man den Parameter getmempoolinfo angibt:
pi@raspberrypi:~ $ bitcoin-cli getmempoolinfo
{
"size": 313,
"bytes": 105558,
"usage": 268480,
"maxmempool": 300000000,
"mempoolminfee": 0.00000000,
"tps": 0.17,
"peak_tps": 7.83
}
erhält man die Angaben zum Mempool.
In meiner Firewall auf dem Router habe ich das Port 8333 geöffnet, damit mein Node aus dem Internet erreicht werden kann. Ich kann es hier überprüfen.
Der Prozess bitcoinid verbraucht im Normalfall nur etwa 5% CPU und 31% RAM.
top - 14:16:18 up 17:10, 3 users, load average: 0,14, 0,14, 0,08
Tasks: 134 total, 1 running, 133 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1,4 us, 0,4 sy, 0,0 ni, 98,2 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
MiB Mem : 922,1 total, 37,1 free, 381,8 used, 503,2 buff/cache
MiB Swap: 100,0 total, 62,2 free, 37,8 used. 479,0 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
888 pi 20 0 625044 299700 3872 S 5,6 31,7 65:19.41 bitcoind
2250 pi 20 0 10188 2796 2436 R 1,3 0,3 0:00.40 top
Meine Raspberry Pi (einschliesslich Festplatte) verbraucht ungefähr 5 bis 6 Watt.
Das bedeutet, dass der Betrieb mich weniger als 1 € im Monat kostet.
Da ich die Raspberry Pi habe, kann ich sie auch für andere Zwecke nutzen. Ich betribe auf ihr zum Beispiel noch die Anti-Werbesofware pi.hole .
PS
Ich empfehle euch von Zeit zu Zeit eine Kopie von der Blockchain anzufertigen.