Freies Geld

Bitcoin, Wert, Freiheit

Schlagwort-Archiv: Bitcoin intern

Bitcoin intern: Peer-to-Peer (P2P)

Bitcoin ist eine sehr intelligente Kombination unterschiedlicher Konzepte, die sich alle gegenseitig ergänzen und unterstützen. „Bitcoin intern“ geht hier ein wenig mehr ins Detail.

Eine der wichtigsten Eigenschaften ist die dezentrale Funktionsweise. Das Konzept dahinter wird „Peer-to-Peer“ genannt, auf deutsch etwa „Verbindung zwischen Gleichgestellten“.

Internetversierte sind evtl. schon vertraut mit Namen wie Filesharing, Napster, BitTorrent, usw. und können den Abschnitt überspringen.
Peer-to-Peer läßt sich leicht mit einer Analogie verstehen: Das „Netzwerk“ zwischen Bekannten. Jeder kennt eine bestimmte, aber begrenzte Anzahl von Menschen. Diese kennen wiederum andere. Über ein paar Zwischenstationen ist so jeder Mensch mit jedem anderen auf der Welt verbunden. Die gleiche Idee steckt hinter Peer-to-Peer Netzwerken.

Netzwerke

Doch zunächst: Prinzipiell ist ein Internetanschluß eine Art Verbindungsrohr, das zu Millionen anderen Rechnern führt. Für die Verbindung ist nur noch die entfernte Adresse nötig.

Das alte Modell: Client-Server

Client-Server-Modell

Client-Server-Modell

Das bisher am weitesten verbreitete Modell im Netzwerk heißt „Client-Server“, also etwa Kunde und Diener (Diensterbringer). Als Benutzer verwendet ich ein Client-Programm, um mich mit einem Server zu verbinden und ihn zu nutzen. Z.B um diese Seite hier zu lesen einen Browser für Server im WWW, oder ein Emailprogramm für Emailserver, FTP-Programm für Dateiserver, andere Programme für Chatserver, Spielserver, usw. Das nebenstehende Bild versucht, das zu veranschaulichen.

Es handelt sich immer um einen zentralisierten Aufbau. Aller Verkehr läuft nur zwischen dem Client und dem Server, es gibt keine direkten Verbindungen zwischen den Dienstnutzern. Um z.B. eine Email an jemanden zu senden, verbindet sich das Emailprogramm mit dem Server und legt die Email dort ab. Der Empfänger kann die Nachricht später von dort abholen. Direkte Verbindungen zwischen Sender und Empfänger sind nicht möglich.

Anschaulich ist das beim Schienensystem von Frankreich. Vor allem im Norden läuft jede Verbindung zwischen zwei Orten, die nicht auf derselben Linie liegen, zwangsläufig über Paris. Querverbindungen gibt es so gut wie nicht. Ein zentralisierter Aufbau.

Vorteile:

  • einfach zu verstehen und aufzubauen
  • einfache Kommunikation mit simplem Abfrage-Antwort-Schema. Der Client frägt, der Server antwortet.

Nachteile:

  • Flaschenhals-Effekt, also Gefahr von Staus und Überlastung bei hohem Verkehrsaufkommen.
  • Zentral organisierte Aufbauten sind nur schlecht auf Wachstum ausgelegt.
  • hohe Infrastrukturkosten an der zentralen Stelle (mächtige Server, vgl. große Bahnhöfe für Millionen von Reisende, vgl. einige wenige große Kraftwerke für die Energiversorgung eines ganzen Landes)
  • Fällt die Zentralstelle aus, bricht das gesamte Funktionieren zusammen.
  • abhängig von anderen, z.B. von Zahlungdiensten, Providern (vgl. Wikileaks), Energielieferanten, etc.
  • verwundbar durch relativ einfache Attacken (Denial-of-Service)

Das neue Modell: Peer-to-Peer

P2P

Peer-to-Peer-Netz

In einem P2P-Netzwerk kann jeder mit jedem kommunizieren. Es geht um die Vernetzung kleiner, an sich selbständiger Einheiten, die durch das Vernetzen einen Vorteil haben. Die teilnehmenden Einheiten lassen sich jetzt besser als Netzknoten beschreiben, weil sie alle über die gleichen Funktion verfügen und nicht mehr wie zuvor in oben/ unten, Zentrale/Peripherie unterscheidbar sind. Dabei übernimmt jeder Knoten gleichzeitig Funktionen als Server und als Client.

Jetzt bleibt nur noch die Aufgabe, die Adresse eines anderen Knotens zu finden bzw. einen anderen zu adressieren. Die meisten Peer-to-Peer-Netzwerke haben dabei eine eigene Lösung speziell für ihre Anwendung. Bei Bitcoin laufen Transaktionen zwischen Bitcoin-Adressen. Bei einer Nachrichten-Software könnte es über Benutzernamen oder Emailadressen laufen.

P2P-Nachricht

Nachricht in P2P-Netz

Um andere Adressen zu finden, könnte einfach auf einem Rechner eine öffentliche Liste geführt werden, ähnlich wie ein Telefonbuch. Aber damit wäre das System wieder zentralisiert und von dieser Stelle abhängig. Die neue Idee bei echten, unabhängigen Peer-to-Peer-Netzen ist eine Art Flüsterpost. Jeder Knoten verbindet sich technisch gesehen nur mit einer kleinen Zahl von anderen Knoten. Bei Bitcoin sind das typischerweise acht. Über diese Anschlußknoten ist ein laufendes Bitcoin-Programm mit dem gesamten Netzwerk verbunden, genau wie ein Mensch über Bekannte mit allen anderen Menschen verbunden ist. Jeder Knoten hat dabei eine einfache Aufgabe: Eine erhaltene Nachricht von einem Knoten wird an die übrigen weitergeleitet, sofern sie noch unbekannt ist. Doppelt erhaltene Nachrichten werden einfach ignoriert. Auf diese Weise verteilen sich Nachrichten in kürzester Zeit im ganzen Netz, und das mit wenig Aufwand für die einzelnen Knoten.

Vorteile:

  • dezentral
  • konfigurationsfrei/selbstkonfigurierend – keine komplizierten Einstellungen wie z.B. bei Mailprogrammen
  • Netzwerk kann beliebig wachsen und sich in der Struktur ändern
  • gleichbleibender Aufwand für einen Knoten, unabhängig von der Anzahl der Netzteilnehmer
  • Ausfallsicherheit/Selbstheilung – keine Serverausfälle möglich; wenn einzelne Knoten ausfallen, funktioniert das System trotzdem weiter
  • Ermöglichung von freiheitlichen Anwendungen, ohne Abhängigkeit vom Funktionieren hierarchisch strukturierter Systeme. Es ist nicht mehr nötig, die Netzwerkbelastung (auf Dienstebene) zu überwachen oder zu kontrollieren.

Nachteile:

  • Software komplizierter zu programmieren und zu testen
  • neue, noch wenig untersuchte Technologie

Detail: Bootstrapping – An den eigenen Haaren aus dem Sumpf…

Nach dem Starten kennt die Bitcoin-Software noch keine Partnerknoten. Dafür gibt es einen sog. Bootstrapping-Mechanismus, also eine erste Möglichkeit, um von Null anzufangen und an Adressen von Peers zu kommen. Für größere Ausfallsicherheit benutzt Bitcoin mehrere unterschiedliche Methoden.

1. Zuerst versucht die Bitcoin-Software sich auf einen IRC-Kanal zu verbinden, also auf einen Chatserver. Dort wählen sich alle Bitcoin-Installationen ein und codieren ihre IP-Adresse im Anmeldenamen. Die anderen anwesenden Knoten können diese codierten Namen in IP-Adressen zurückrechnen und sich so direkt mit den anderen Knoten verbinden.

2. Bitcoin führt intern eine Liste aller IP-Adressen, von denen es im Betrieb erfahren hat. Sollte der IRC-Kanal nicht erreichbar sein, wird auf diese Liste zurückgegriffen, was etwas langsamer sein kann, aber genauso funktioniert. Sobald ein Knoten zum Netzwerk hinzukommt, versendet er sog. Addr-Nachrichten im Netzwerk, um andere zu benachrichtigen, die sich seine Adresse merken können.

3. Die interne Adressenliste ist vorab befüllt mit einigen bekannten Knoten, die auf der ganzen Welt verteilt sind und von Bitcoin-Enthusiasten rund um die Uhr betrieben werden. So können sich auch frisch installierte Programme verbinden, falls der IRC-Kanal nicht erreichbar ist.

Advertisements