Bitcoin Full Node

Bitcoin Full Node Installation

Ein Bitcoin Full Node ist ein Programm, das Transaktionen und Blöcke vollständig validiert. Fast alle Full Nodes helfen dem Netzwerk auch, indem sie Transaktionen und Blöcke von anderen Full Nodes annehmen, diese Transaktionen und Blöcke validieren und sie dann an weitere Full Nodes weiterleiten.

Die meisten Full Nodes dienen auch Lightweight Clients, indem sie ihnen erlauben, ihre Transaktionen an das Netzwerk zu übermitteln und sie benachrichtigen, wenn eine Transaktion ihre Wallet betrifft. Wenn nicht genügend Knoten diese Funktion erfüllen, können sich die Kunden nicht über das Peer-to-Peer-Netzwerk verbinden – sie müssen stattdessen zentralisierte Dienste nutzen.

Viele Menschen und Organisationen melden sich freiwillig, um volle Knoten zu betreiben, indem sie freie Rechen- und Bandbreitenressourcen nutzen – aber es werden mehr Freiwillige benötigt, damit Bitcoin weiter wachsen kann. Dieses Dokument beschreibt, wie Sie helfen können und was es Sie kosten wird, zu helfen.

Der Full Node wird über IPv4, IPv6 und als Hidden Service über das Tor-Netzwerk erreichbar sein.

 

Speicherplatz für Bitcoin Full Node

Die Bitcoin-Blockchain ist sehr groß und wächst ständig. Das liegt daran, dass jeder geminte Bitcoin und jede jemals getätigte Transaktion in der Blockchain aufgezeichnet wird.

Mit Stand Februar 2022 sind es über 650 Gigabyte. Zusammen mit den Indizes und anderen Daten belegt ein voller Knoten etwa 700 GB (Gigabyte) Speicherplatz auf dem Server.

Sie können das Wachstum der Blockchain im Laufe der Zeit auf der Website Bitcoin Blockchain Size sehen.

So prüfen Sie den verfügbaren freien Speicherplatz auf der Festplatte, auf der die Bitcoin-Datenbank gespeichert wird:

$ df -h /var/lib
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/server--vg-root  456G  102G  331G  24% /

Sie können den Speicherplatz, der von einem laufenden Knoten belegt wird, wie folgt überprüfen:

$ sudo du -hs /var/lib/bitcoind/*|sort -h
0       /var/lib/bitcoind/db.log
20K     /var/lib/bitcoind/fee_estimates.dat
84K     /var/lib/bitcoind/wallet.dat
212K    /var/lib/bitcoind/debug.log
952K    /var/lib/bitcoind/peers.dat
732M    /var/lib/bitcoind/chainstate
41G     /var/lib/bitcoind/blocks

IP-Adressen
In dieser Anleitung wird davon ausgegangen, dass wir die folgenden IP-Adressen für unseren Bitcoin-Daemon zuweisen:

  • 2001:db8::39 als globale öffentliche IPv6-Adresse
  • 192.0.2.39 als private lokale IPv4-Adresse (Portweiterleitung von der öffentlichen IPv4-Adresse)
  • 198.51.100.240 als die vom ISP bereitgestellte dynamische öffentliche Internetadresse

So fügen Sie die IP-Adressen auf dem Server hinzu:

$ sudo ip addr add 192.0.2.39/24 dev eth0
$ sudo ip addr add 2001:db8::39/64 dev eth0

Fügen Sie sie auch der Datei /etc/network/interfaces hinzu, damit sie über Systemneustarts hinweg bestehen bleiben:

# btc.example.net
iface eth0 inet static
    address 192.0.2.39/24
iface eth0 inet6 static
    address 2001:db8::39/64

Aktivieren Sie beim Hinzufügen des IPv6-Eintrags die Option “Add also reverse record”.

Firewall-Regeln
Bitcoin-Dämonen lauschen auf den TCP-Ports 8333 und 18333 auf eingehende Verbindungen.

## TABELLEN EINFÜGEN ##

Tor Hidden Service
Füge einen versteckten Tor Hidden Service hinzu, indem du /etc/tor/torrc editierst:

# BitCoin Full Node Hidden Service for btc.example.net
HiddenServiceDir /var/lib/tor/hidden_services/bitcoin
HiddenServicePort 8333
HiddenServicePort 18333

Tor Client neu starten:

$ sudo service tor reload

Lese die neu generierte Onion Adresse aus:

$ sudo cat /var/lib/tor/hidden_services/bitcoin/hostname

Bitcoin Daemon User

Aus Sicherheitsgründen ist es am besten, den Daemon mit einem eigenen unprivilegierten Benutzerprofil auszuführen. Erstellen Sie diesen Benutzer auf dem Serversystem mit dem folgenden Befehl:

$ sudo adduser --system --group --home /var/lib/bitcoind bitcoin

Software-Installation

Die Bitcoin-Referenzsoftware ist nicht im Ubuntu-Softwarepaket-Repository enthalten, daher fügen wir das Bitcoin Personal Package Archive (PPA) zu Ihrem System hinzu, bevor wir den Daemon installieren:

$ sudo apt-add-repository ppa:bitcoin/bitcoin
$ sudo apt-get update
$ sudo apt-get install bitcoind

Konfiguration

Erstellen Sie das Konfigurationsverzeichnis und eine leere Konfigurationsdatei und passen Sie auch die Zugriffsrechte an:

$ sudo mkdir /etc//bitcoin
$ sudo touch /etc/bitcoin/bitcoin.conf
$ sudo chmod 600 /etc/bitcoin/bitcoin.conf

Wir benötigen ein Passwort für Remote-Prozeduraufrufe an den Daemon. Das Programm wird es automatisch erstellen, wenn es gestartet wird, ohne eines zu finden:

$ bitcoind -conf=/etc/bitcoin/bitcoin.conf
Error: To use bitcoind, or the -server option to bitcoin-qt, you must set an rpcpassword in the configuration file:
/etc/bitcoin/bitcoin.conf
It is recommended you use the following random password:
rpcuser=bitcoinrpc
rpcpassword=HkFbv9YaWgEgyy7X4B9vi3GsENtGWgPNpwUf2ehsvXX1
(you do not need to remember this password)
The username and password MUST NOT be the same.
If the file does not exist, create it with owner-readable-only file permissions.
It is also recommended to set alertnotify so you are notified of problems;
for example: alertnotify=echo %s | mail -s "Bitcoin Alert" admin@foo.com

Die angezeigte lange Zufallszeichenfolge ist das generierte RPC-Passwort, das wir der Konfiguration hinzufügen müssen. Öffnen Sie die Datei /etc/bitcoin/bitcoin.conf und fügen Sie sie wie folgt hinzu:

#
# Bitcoind Daemon Configuration
#

# General options
datadir=/var/lib/bitcoind
alertnotify=echo %s | mail -s "Bitcoin Alert" root

# Connection options
bind=192.0.2.39
bind=[2001:db8::39]
externalip=btc.example.net

# Tor Hidden Service Options
onion=127.0.0.1:9150
bind=127.0.0.1
externalip=duskgytldkxiuqc6.onion

# Long running Bitcoin Nodes on the Tor Network
# http://nodes.bitcoin.st/tor/
addnode=pqosrh6wfaucet32.onion
addnode=btc4xysqsf3mmab4.onion
addnode=gb5ypqt63du3wfhn.onion
addnode=3lxko7l4245bxhex.onion

# Verified Online Bitcoin nodes on the Tor Network from 
# https://rossbennetts.com/2015/04/running-bitcoind-via-tor/
addnode=kjy2eqzk4zwi5zd3.onion
addnode=it2pj4f7657g3rhi.onion

# Verified Online Bitcoin nodes on the Tor Network from 
# https://en.bitcoin.it/wiki/Fallback_Nodes#Tor_nodes
addnode=hhiv5pnxenvbf4am.onion
addnode=bpdlwholl7rnkrkw.onion
addnode=vso3r6cmjoomhhgg.onion
addnode=kjy2eqzk4zwi5zd3.onion

# Verified Online Bitcoin nodes on the Tor Network from 
# https://sky-ip.org
addnode=h2vlpudzphzqxutd.onion
addnode=xyp7oeeoptq7jllb.onion

# RPC server options
rpcuser=bitcoinrpc
rpcpassword=HkFbv9YaWgEgyy7X4B9vi3GsENtGWgPNpwUf2ehsvXX1

# Maintain a full index of historical transaction IDs
# Required by Electrum Server
txindex=1

Stellen Sie nach dem Speichern sicher, dass die Datei unserem Bitcoin-Benutzer gehört:

$ sudo chown -R bitcoin:bitcoin /etc/bitcoin

Ubuntu Upstart-Dienst

Das Bitcoin-Projekt empfiehlt, den Daemon als Upstart-Service in Ubuntu laufen zu lassen und hat ein Upstart-Skript für bitcoind vorbereitet.

Laden Sie das Upstart-Skript herunter und installieren Sie es:

$ cd downloads
$ wget https://raw.githubusercontent.com/bitcoin/bitcoin/0.10/contrib/init/bitcoind.conf
$ sudo cp bitcoind.conf /etc/init/

Starten Sie den Service:

$ sudo start bitcoind
bitcoind start/running, process 17019

When started for the first time, bitcoind will search for peers and start to download and process the blockchain.

Hinweis

Abhängig von vielen Faktoren wie Bandbreite der Internetverbindung, Festplattengeschwindigkeit, Größe des Arbeitsspeichers und CPU-Geschwindigkeit kann es mehrere Stunden oder sogar Tage dauern, bis bitcoind die Blockchain vollständig geladen und verarbeitet hat.

Verfolgen Sie die Transaktionen im bitcoind-Debug-Protokoll:

$ sudo -u bitcoin multitail /var/lib/bitcoind/debug.log

Um zu sehen, ob Ihr Knoten im Bitcoin-Netzwerk bekannt und erreichbar ist, besuchen Sie die Bitnodes-Website.

Beispiele:

  • https://getaddr.bitnodes.io/nodes/192.0.2.39-8333/
  • https://getaddr.bitnodes.io/nodes/2001:db8::39-8333/

Du kannst auch deinen *.onion Tor Hidden Service Knoten überprüfen, indem du seine Adresse in das Formular unten auf der Seite eingibst und auf “Check Node” klickst. Es werden jedoch keine Details angezeigt, außer der Tatsache, dass der Knoten Verbindungen akzeptiert oder nicht.

Um Transaktionen zu sehen, die von deinem IPv4-Knoten verarbeitet wurden:

  • https://blockchain.info/ip-address/192.0.2.39

IPv6 und Tor Hidden Service Nodes werden von blockchain.info nicht unterstützt.

Überlegungen zum Backup

Wie bereits erwähnt, ist die Datenbank, die die BitCoin-Blockchain enthält, riesig.

Aber da es sich um eine öffentlich verfügbare, verteilte Peer-to-Peer-Datenbank handelt, muss sie nicht von einzelnen Knoten gesichert werden. Im Falle eines Datenverlustes auf einem Knotenpunkt sind andere Knotenpunkte ebenso nutzbar und jeder Knotenpunkt kann die Blockchain jederzeit neu herunterladen und verarbeiten.

Von BackupNinja ausschließen

Um sicherzustellen, dass der riesige bitcoind-Datenordner /var/lib/bitcoind niemals versehentlich von unserem Backup Ninja gesichert wird, bearbeiten Sie die Datei /etc/backup.d/90.dup und fügen Sie im Abschnitt “[source]” eine Zeile wie folgt hinzu:

exclude = /var/lib/bitcoind