Wie wär’s mit einem Node?

"One node of the metal wire network that holds Milan together." Foto von Uqbar is back via flickr.com. Lizenz: Creative Commons

Nur wer einen Node betreibt, dockt wirklich ans Bitcoin-Netzwerk an, und nur wer einen Node betreibt, hat eine Stimme in der Wahl, wie und was Bitcoin sein soll. Aber was genau ist ein Node? Und wie hoch ist der Aufwand, einen zu betreiben? Wir zeigen, wie man in vier Schritten einen vollwertigen Node aufbaut – und Teil des Bitcoin-Netzwerks wird.

Ihr wisst vermutlich, was ein P2P-Netzwerk ist. P2P bedeutet peer-to-peer und meint, dass ein Netzwerk nur aus “peers” besteht. “Peers” ist englisch und heißt sowas wie “Kumpel” oder “Genosse” und meint, in einem technischen Sinn “gleichwertig.” In einem dezentralen Netzwerk sind alle Knoten gleich. Das meint P2P. Bei Bittorrent bedeutet es, dass jeder, der die Software laufen lässt, sowohl Dateien rauf- als auch runterlädt.

Beim Bitcoin bedeutet es, dass jeder, der die entsprechende Software laufen lässt, Transaktionen sendet, empfängt, prüft und weiterleitet. Die Software klopft nicht nur beim Server an, um eine Info abzuholen oder einzureichen, sondern ist selbst ein Server – ein Baustein des Netzwerkes.

Jeder Bitcoin-Knoten – auch Client genannt – speichert die gesamte Blockchain. Er prüft jede Transaktion, die ihn erreicht, und leitet sie weiter. Wer – und nur wer – einen Bitcoin-Client benutzt, dockt direkt an das System an, um eine Transaktion abzusenden oder zu empfangen. Jeder, der keinen Client benutzt, benötigt jemanden anderen, der Transaktionen für ihn sendet und empfängt. Wer Wallets wie Electrum, Multibit, blockchain.info oder Mycelium benutzt, gibt jemandem anderen seine Transaktion, damit der sie für einen weiterleitet.

Dieser direkte Zugang zum Netzwerk ist der erste Grund, einen Node zu fahren. Der zweite Grund ist, dass die Betreiber eines Nodes mit der Software abstimmen, wie das Bitcoin-Netzwerk beschaffen ist. Sie können Updates installieren, wenn sie damit einverstanden sind, oder sie können sie ablehen. Sie können sogar ihre Software eigenmächtig verändern, solange sie dabei nicht gegen die Konsensregeln des Protokolls verstoßen. Ein Bitcoin-Node ist also eine Art Stimme in der kontinuierlichen Abstimmung darüber, welche Eigenschaften das Netzwerk hat. Der dritte Grund, einen Node zu haben, ist altruistisch – ihr untestützt damit das Bitcoin-Netzwerk. Je mehr Nodes, desto besser flutschen die Transaktionen, und desto sicherer das Netzwerk gegen Angriffe.

Wie betreibt man nun einen Node? Ich versuche es in vier Schritten zu erklären.

  1. Installieren. Man lädt sich die entsprechende Software herunter. Derzeit gibt es fünf Versionen des Clienten – Bitcoin Core, Bitcoin Unlimited, Bitcore, BitcoinXT und Bitcoin Classic. Dazu später mehr. Weiter gibt es btcd, aber auch dazu später mehr.
  2. Blockchain laden. Nach der Installation lädt man die Blockchain herunter. Das ist, zugegeben, etwas belastend. Denn die Blockchain ist eine Liste mit allen bisherigen Transaktionen und deswegen ziemlich groß. Derzeit fast 55 Gigabyte. Da sie zudem nicht von einem Server, sondern über die Peers im Bitcoin-Netzwerk geladen wird, kann es schon eine Weile dauern, bis man die ganze Kette auf der Platte hat. Gerne auch mehrere Wochen. Es gab mal einen Blockchain-Torrent vom Bundesverband Bitcoin, aber den gibt es nicht mehr, ebensowenig wie einen anderen offiziellen Torrent, den ich euch ohne Bauchschmerzen empfehlen kann. Wer einen Node betreiben will, kann sich aber bei mir melden (christoph.bergmann@mailbox.org). Ich kann zum Selbstkostenpreis meine Blockchain auf einen USB-Stick laden und verschicken.
  3. Port freigeben. Wenn die Blockchain geladen ist, müsst ihr unbedingt den Port 8333 öffnen. Ansonsten werdet ihr nur 8 eingehende Verbindungen haben, was bedeutet, dass euer Node zwar Transaktionen sieht, sie aber nicht weiterleitet. Er ist eine Art passiver und halber Node. In der Regel müsst ihr den Port in eurer Router-Steuerung öffnen. Wie genau das geht, hängt von eurem Router ab. Auf dieser Seite erfahrt ihr, ob ihr ein vollwertiger Node seid.
  4. Glückwunsch! Der Node ist online und euer Computer ist zu einem vollwertigen Teil des Bitcoin-Netzwerks geworden.

Das war die kurze Version. Für die ganzen Fragen, die ich jetzt übersprungen habe, gibt es

eine kleine FAQ

Muss ich den Node permanent laufen lassen?
Warum muss der Node zuerst die Blockchain laden, wenn ich ihn starte?
Wieviel Rechenleistung braucht die Software?
Wieviel Festplattenspeicher braucht der Node?
Wieviel Bandbreite brauche ich?
Kann ich den Node auf einem Laptop / einem Smartphone / einem Raspberry / einem virtuellen Server laufen lassen?
Kann ich den Node über Tor / ein Proxy benutzen?
Was ist der Unterschied zwischen den Versionen?
Wo erfahre ich mehr über Nodes?
Woher weiß ich, dass auf dem USB-Stick mit der Blockchain kein Virus ist?
Kann ich die blockchain auf einer anderen Festplatte speichern?

Muss ich den Node permament laufen lassen?

Nein. Auch ein Node, der nur eine Stunde am Tag online ist, trägt dazu bei, dass Transaktionen im Netzwerk verbreitet werden. Allerdings braucht ein Node etwa sechs Stunden, um vollständig hochzufahren bzw. sich zu vernetzen. Das heißt, einen wirklichen Nutzen hat ein Node nur, wenn er lange läuft.

Warum muss der Node zuerst die Blockchain laden, wenn ich ihn starte?

Bei jedem Start muss sich ein Node auf den neuesten Stand bringen. Er muss alle Blöcke, die an die Blockchain angehängt worden sind, während er offline war, herunterladen. Je nachdem, wie lange das war, kann das einige Zeit dauern. Ein Grund mehr, den Node oft und lange Zeit ans Netz zu lassen.

Wieviel Rechenleistung braucht die Software?

Die aktive Arbeit des Nodes ist es, Transaktionen zu verifizieren. Dafür muss der Node unter anderem die in einer Transaktion enthaltenen Signaturen prüfen. Dies braucht etwas Rechenleistung und Arbeitsspeicher, aber gewöhnlich hält es sich in starken Grenzen. Auf einem normalen Rechner, wie man ihn heute für 400 Euro inklusive Monitor bekommt, ist zwar am Anfang, während der Node noch Blöcke herunterlädt, spürbar, verschwindet aber im Normalbetrieb fast vollständig. Gelegentlich kann es Spitzen der Belastung geben, wenn außerordentlich viele oder außerordentlich komplexe Transaktionen eingehen. Aber in der Regel sind CPU und Arbeitsspeicher kein Thema.

Wieviel Festplattenspeicher braucht der Node?

Der Node muss, wie gesagt, die gesamte Blockchain speichern. Dies sind derzeit 55 Gigabyte. Die Blockchain wächst jeden Tag und es ist anzunehmen, dass das Wachstum eher zu- als abnimmt, weshalb zu erwarten ist, dass die Blockchain im Lauf der nächsten 1-2 Jahre mehr als 100 Gigabyte groß sein wird. Aber angesichts der günstigen Festplattenpreise ist der Speicherbedarf bislang noch relativ vernachlässigbar.

Wieviel Bandbreite brauche ich?

Ein vollwertiger Node hat 8 ausgehende Verbindungen (wenn er das nicht hat, ist der Port 8333 geschlossen!) und 10-20 eingehende Verbindungen. Von den eingehenden Verbindungen empfängt er Transaktionen und Blöcke. Die Blöcke brauchen derzeit etwa 800 Kilobyte alle zehn Minuten, die Transaktionen unter Umständen ein wenig mehr. Was den Download angeht ist ein Node, verglichen mit dem Rest des Internets, recht bescheiden. Der Upload hingegen kann schon ins Gewicht gehen. Denn der Node sendet im Idealfall an alle seine peers Transaktionen und Blöcke und, wenn einer die Blockchain lädt, auch vergangene Blöcke. Dadurch kann der Upstream durchaus Werte wie 2 Megabit erreichen.

Die Clients Bitcoin Unlimited sowie BitcoinXT haben einen Traffic-Shaper, mit dem man einstellen kann, wieviel Bandbreite man spendet. Bitcoin Core wird in der Version 0.12 ebenfalls ein solches Werkzeug haben. Mehr dazu weiter unten.

Kann ich den Node auf einem Laptop / einem Smartphone / einem Raspberry / einem virtuellen Server laufen lassen?

Auf den meisten Laptops – ja. Möglich, dass Laptops mit 4 Gigabyte Arbeitsspeicher und einer schwachen CPU teilweise beim Laden der Blöcke an ihre Grenzen stoßen werden, aber an sich kein Problem. Ein Node auf einem Smartphone dürfte hingegen am Festplattenspeicher und, sofern nicht mit einem lokalen Netzwerk verbunden, an der Bandbreite scheitern. Ein Raspberry ist hingegen eine beliebte Version, um einen kostensparenden Full Node zu betreiben. Hier muss man nur Acht geben, ob die Festplatte und der Prozessor ausreichend Kraft haben. Auch ein Node auf einem virtuellen Server ist kein Problem. Damit jedoch wird der Node in der Regel ein reines Geschenk für das Bitcoin-Netzwerk, da er wohl seine Wallet-Funktionalitäten verliert.

Kann ich den Node über Tor / ein Proxy benutzen?

Ja. Dazu müsst ihr das in den Einstellungen einstellen. Zugleich müsst ihr dafür sorgen, dass bei eurem Proxy / VPN der Port 8333 offen ist. Was manchmal recht kompliziert wird.

Was ist der Unterschied zwischen den Versionen?

Das ist etwas kompliziert. Abgesehen von btcd – dazu gleich – sind alle verfügbaren Nodes Abkömmlinge der Software von Satoshi Nakamoto (daher heißen sie auch Satoshi Client). Diese Software ist in C++ und wird von den Bitcoin-Entwicklern, die zuerst QT-Entwickler hießen und heute Kern-Entwickler heißen, gepflegt und verbessert. Die aktuelle Referenzversion ist Core 0.11.2, in Kürze werden die Kernentwickler Version 0.12 mit zahlreichen großen Änderungen veröffentlichen.

BitcoinXT, Bitcoin Unlimited und Bitcoin Classic bauen auf Core 0.11.2 auf und verändern nur Details. Am wichtigsten ist dabei der Umgang mit der maximalen Größe von Blöcken. Während Core hier an 1 MB festhält, möchte XT BIP101 (=8MB) starten, hat dafür aber nicht die notwendige Unterstützung gefunden. Classic ist ein neuer Vorstoß mehrer Entwickler, die Blockgröße auf 2 MB anzuheben und genießt eine erhebliche Unterstützung in der Bitcoin-Wirtschaft. Unlimited schließlich ist ein Projekt, das dem Nutzer die Möglichkeit gibt, selbst zu entscheiden, wie groß ein Block sein darf. Bitcore schließlich ist der Node des Bitcoin-Zahlungsdienstleisters BitPay, der vor kurzem ein eigenständies Konzept für die Blocksize vorgelegt hat.

Die letzte Bitcoin-Version ist btcd. Btcd ist eine Neuprogrammierung von Bitcoin in der Programmiersprache go. Bisher läuft btcd stabil in der Beta-Phase, hat aber, anders als Core, keine Wallet-Funktionalität und ist somit nur dazu geeignet, um als Node das Netzwerk zu unterstützen. Dies ist so gewünscht, um den Node von der Wallet zu trennen. Ein Wallet-Modul, um btcd als Wallet zu nutzen, ist in Arbeit.

Wo erfahre ich mehr über Nodes?

Indem ihr zunächst die vielen Links in diesem Artikel besucht. Interessant ist auch der Eintrag im Bitcoin-Wiki über Nodes – hier die  englische Version, außerdem noch einige Infos über den Betrieb. Weiter könnt ihr auf xtnodes.com sehen, welche Versionen benutzt werden, und auf bitnodes.21.co noch genauer, inklusive Versionsnummer und geographischem Standort. Wußtet ihr, dass Deutschland der weltweit zweitwichtigste Stützpunkt von Nodes ist?

Woher weiß ich, dass auf dem USB-Stick mit der Blockchain kein Virus ist?

Indem ihr mir vertraut. Ich weiß leider keine bessere Lösung, da ich kein vertrauenswürdiges torrent gefunden habe. Wenn ihr mich anschreibt, mir die Kosten für einen USB-Stick erstattet (ihr könnt ihn mir auch per Post schicken), lade ich euch die Blockchain auf den Stick und schicke sie euch zu. Dann könnt ihr sie auf eure Festplatte installieren und müsst nur noch die letzten Tage aus dem Netzwerk ziehen.

Kann ich die blockchain auf einer anderen Festplatte speichern?

Ja. Dazu müsst ihr allerdings eine kleine Änderung in der Datei bitcoin.conf vornehmen: Ihr müsst in sie reinschreiben “-datadir=<Verzeichnis>”. In dieser Datei könnt ihr noch viele weitere Optionen einstellen, etwa die maximale Anzahl von Verbindungen.

 

Ist noch eine Frage offen? Wenn ja – ihr wisst ja, wo ihr einen Kommentar abgeben könnt.

About Christoph Bergmann (797 Articles)
Das Bitcoinblog wird von bitcoin.de gesponsort, ist inhaltlich aber unabhängig und gibt die Meinung des Redakteurs Christoph Bergmann wieder. Wenn Ihnen das Blog gefällt, freuen wir uns über Spenden an 1CL1QgiFcBXZKtYDUpipREsfaKFJHhNmpV. Jeder Satoshi wird dazu verwendet, um das Blog besser zu machen. Weitere Infos, wie Sie uns unterstützen können, finden Sie HIER. Gastbeiträge sind ebenfalls willkommen. Meinen öffentlichen PGP-Schlüssel sowie den Bitmessage-Schlüssel finden Sie HIER

24 Comments on Wie wär’s mit einem Node?

  1. Cool, das mit Port 8333 war mir nicht klar – Node läuft bei mir schon länger, ab jetzt halt richtig!😉
    Jetzt fehlt nur noch, dass BC Classic verfügbar wird…

    • Ging mir genauso: Habe schon lange den Bitcoin Core Client laufen, jedoch nicht gewusst, dass ich den Port öffnen muss, damit ich einen voll funktionalen Node betreiben kann.

  2. Ein P2P Netzwerk besteht nicht nur aus Peers. Da ist immer ein Server dabei. OK, wenn Sie die IPs der Peers mit denen Sie sich verbinden händisch, und jedes mal neu da private IPs selten länger als 24h an dem gleichen Benutzer bleiben, eingeben dann haben Sie ein Netzwerk das nur aus Peers besteht. Sowas ist aber eher selten. Es gibt eigentlich immer einen Server der zwischen den Peers vermittelt. Beim Bitcoin muss es auch einen Server geben der die IPs weitergibt. Beim Torrent nennt man die Server “Tracker”.

    Was ich auch noch feststellen konnte war der extreme Unterschied zwischen einer Installation der Blockchain auf einer SSD zur einer HD. Hab jetzt keinen Zeiten gemessen der Unterschied dürfte aber um den Faktor 10-20 sein.

  3. Super Artikel. Vielen Dank!
    Ich werde wohl einen Node einrichten wenn sich der Blocksize-Nebel gelichtet hat.
    Frage: Verstopft ein Node meinen Upstream komplett wenn mein DSL-Anschluss nur 1,2 MBit/s hergibt? Dann brauche ich wohl auf jeden Fall einen Traffic-Shaper.

    • Müsste man ausprobieren. Ich meine, in der Regel braucht man den Upload auch nicht, weshalb es nicht weiter schlimm ist, wenn man kein Monatslimit oder so hat. Aber ein Traffic-Shaper ist auf jeden fall praktisch.

      • ich nutze BitcoinCore0.11.2 mit 1,2 mBit upstream, auch nach 24 Stunden ist paralleles surfen noch problemlos moeglich(BC hat bis dahin meist 14-18 verbindungen aufgebaut)

      • Danke für die Info!

        Auf das Surfen hat der Upstream kaum einen Einfluss. Man kann während der Node läuft problemlos Surfen, Youtube-schauen, sogar auf mehreren Rechnern parallel, Musik anhören und Datein runterladen. Aber versuchen Sie mal, parallel zum Betrieb des Nodes ein Video auf einen Cloud-Speicher zu laden. Meine Kapazität (~2 Mbit) ist wenn der Node richtig angelaufen ist fast erschöpft (wenn ich sie nicht durch den Shaper begrenze)

  4. Nattydraddy // 2. February 2016 at 10:10 // Reply

    Schöne Artikel. Wie in den Anfangszeiten von bitcoin. Was mir fehlt ist eine Einschätzung, wie sich die vorgestellten Clients auf die Auslastung des Rechners/Internetverbindung auswirken.

    Mit dem kommenden Bitcoin Core in der Version 0.12 gibt es schon mal einen Trafficshaper, daß man auch mit 512 Kbit/s Uploadgeschwindigkeit arbeiten kann. Mit 1 MB Blöcken kommt auch einen Raspherry Pi 2 klar.

    Schwierig wird es mit 2 MB Blöcken. Gerade auch, wie Christoph Bergmann schrieb: “es Spitzen der Belastung geben kann, wenn außerordentlich viele oder außerordentlich komplexe Transaktionen eingehen”

    Wie es mit dem SegWit des kommenden Bitcoin Core 0.12 verhält, es mir noch nicht klar. Der Block bleibt, bei 1 MB, zusätlich gibt es einen 2. Block mit den Signaturen, diesen Block muss ich auch laden, sonst kann ich die Blöcke nicht überprüfen. Aber so schlimm wie ein 2-4 MB Block verhält sich wohl nicht, da Core die neue Version 0.12 ohne Blockgrößenerhöhung bringt, weil Core befürchtet, dass dieses viele Nodes und Miners aus den Rennen wirft.

    P.S.:
    Auch gerade ist ein Artikel veröffentlicht worden, der sich ausführlich mit den Mindestanfordeungen eines Nodes auseinandersetzt: http://www.coindesk.com/how-to-save-bitcoins-node-network-from-centralization/

  5. Das der Upload keine Auswirkung auf den Download hat ist auch falsch. Jedes Datenpaket das man bekommt muss bestätigt werden. Je nachdem was man für ein Downoad/Upload Verhältnis hat kann es den Download extrem abbremsen.

  6. Gib doch selber einen Torrent raus. Auf EC2 die Bitcoin-Datenbank erstellen und dann auf irgend einen Torrent Seeding Dienst kopieren.

    • Abgesehen davon, dass ich das noch nie gemacht habe und nicht weiß, was E2C ist, ist das eine gute Idee:)

      • das Problem mit dem Torrent ist halt nur den bekommst nie richtig aktuell, weil Datei wird ja grösser.
        Und wenn du selbst als Seeder (Verteiler) nicht min DSL50.000 besser VDSL100 oder 200 hast, dauert das Verteilen über Torrent ewig bei 60GB (+Overhead)

        Auf nen schnellen Server (zb. Bitcoin.de) könnte man es als FTP download mit wöchentlicher Aktualisierung hinterlegen.
        Nur das wird zu massiven Traffic von dem Server führen, und Traffic kostet pro Megabyte zwar nicht viel aber bei mehrfachen Download von 60GB wird das für den Serverbetreiber ein teures Vergnügen.
        Da kannst dann nur ne Paywall vorsetzen, welche die Kosten für den anfallenden Traffic auf den Downloader umlegt.
        mfg

      • Ja, wäre darum nicht ein USB-Stick die beste Lösung?

  7. Der Upload wirkt sich aber erst massiv auf den Download aus, wenn man sich der max Uploadgeschwindigkeit nähert.
    Also bei DSL 50000 mit 10000 Upload sind bis ca 8000 Upload keine Problem für den Download spürbar
    mit 9500-10000 im Upload wird dein Download massiv teilweise weit unter 16000 einbrechen.

    bei langsameren DSL ist das natürlich viel schlimmer zb bei nur DSL3000

    mfg

  8. Der Upload overhead( das ist der Upload der benoetigt wird um die Datenpakete des Downloads zu bestaetigen(“..is angekommen, schick das naechste..”) ist sehr protokol abhaengig, aber nach der DaumenRegel(Rule of Thump), in der Regel: 1024kbit/s Download brauchen ~40-70Kbit/s upload

  9. Hallo, toller Beitrag, vielen Dank.

    Man kann bei normalen, hier haushaltsueblichen aDSL Verbindungen als Faustregel anwenden, nicht mehr als 80% der Upload Kapazitaet/Bandbreite zu benutzen, wenn man einen Node betreibt oder sonstigen permanenten Upstream ins Internet schickt. Benutzt man mehr knickt der Download rapide ein. Begrenzt man den Upload auf max. 80 % kann man problemlos surfen, Videos schauen usw. . Das hat mit der verwendeten Leitungstechnologie zu tun, da bei z.B. einer SDSL Leitung man den upload fast komplett ausreizen kann ohne die Download-Performance zu beeintraechtigen.

    Wie sagt man das eigentlich auf deutsch … auf zum Moooooond !!! ..???
    :)

  10. Und was für einen selber dabei raus? Beim mining ist das ja soweit klar aber welchen Nutzen hat man wenn man eine Node dem Netzwerk stellt? Oder darf man sich einfach nur toll fühlen das man eine hat?

  11. Liebe Freunde.

    Kann man NAS-Server benutzen? Z.B. unter Linux Debian. Danke

  12. Endlich! Ich betreibe jetzt ein Node!
    Check nach IP is OK, das Node ist aktiv.
    Aber warum bin ich nicht sichtbar auf der Weltkarte auf bitnodes.21.co? Danke

  13. Ich bekomme das mit den Ports anscheinend nicht hin. Seit heute habe ich eine IPv4 Adresse von Kabel Deutschland bekommen, aber trotzdem ist der Port nicht erreichtbar. Wo gibt es mehr Hilfe?

  14. Wieviele aktive Verbindungen habt ihr mit eurem Node? Ich habe hier Bitcoin Core Version v0.12.1 (64-Bit) unter Linux seit 1 Woche nonstop laufen und in den Abendstunden etwa 20 aktive Verbindungen, morgens ist es weniger.
    Ist das viel oder normal?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s