Wie finden Bitcoin-Clients zueinander?

Welche Protokolle oder Algorithmen verwenden Bitcoin-Clients, um ihre Kollegen zu finden? Ich habe erfahren, dass sich BitTorrent-Clients möglicherweise auf zentrale Computer verlassen, die als Tracker bezeichnet werden. Benötigen Bitcoin-Clients irgendeine Art von zentralen Servern oder Knoten, um zu funktionieren?

Antworten (2)

Bitcoin-Clients verwenden mehrere Methoden, um andere Clients zu finden. Die primäre Methode ist eine Liste von Knoten aus einer früheren Verbindung mit dem Netzwerk. Das funktioniert sehr gut für alles außer Ihrer ersten Verbindung oder einer Verbindung nach einer sehr langen Zeit der Trennung.

Für den Fall, dass Sie keine zuvor bekannten IPs haben oder diese nicht verwendbar sind, ist die primäre Fallback-Methode DNS-Seeds. Mehrere Hostnamen (z. B. dnsseed.bluematt.me ) werden verwaltet, die sich in eine Liste von IP-Adressen auflösen, von denen bekannt ist, dass sie Knoten ausführen. Sollte dies fehlschlagen, verfügt der Client über eine Liste von IP-Adressen, von denen angenommen wird, dass sie auf stabile Knoten verweisen, die darin fest codiert sind.

Eine Methode, die früher verwendet wurde, aber inzwischen aufgegeben wurde, war, dass sich die Clients gegenseitig über einen IRC-Server lokalisieren. Das funktionierte ähnlich wie ein BitTorrent-Tracker.

Sobald Sie mit dem Netzwerk verbunden sind, erhalten Sie Listen mit IP-Adressen und Ports bekannter Clients.

Wenn der Bitcoin.org-Client Peers erkennen muss, sind DNS-Seeds die Standardeinstellung für den Client v0.6 und höher. IRC war der Standard für frühere Versionen.
Wenn Sie IRC erwähnen, welches IRC-Netzwerk genau?
@knocte Früher wurde irc.lfnet.org verwendet und einem zufälligen Kanal zwischen #bitcoin00und beigetreten #bitcoin99.
Wenn also lfnet.org ausfiel, war das ein Single Point of Failure? Was nun, wer schreibt vor, welche DNS-Namen nachzuschlagen sind?
@knocte: Es wäre kein einzelner Fehlerpunkt gewesen, da der Client über mehrere andere Bootstrapping-Methoden verfügte, darunter mehrere fest codierte "bekannte" Server. Jeder, der möchte, kann seinen Client so einstellen, dass er beliebige DNS-Namen verwendet. Der offizielle Client verwendet eine von den Entwicklern gepflegte Liste. Ich glaube, die Entwickler haben Freiwillige angeworben, um DNS-Seeds auszuführen.
lustig, wie ein Ripple-Enthusiast auf diese Frage kam (ich), googelte und eine Antwort von Ihnen fand :-).. Off-Topic, musste aber geteilt werden!
@HeddevanderHeide Ich denke, die meisten Ripple-Enthusiasten sind auch Bitcoin-Enthusiasten.
OK. Bitcoins SIND also anfällig für Chinas DNS-Vergiftung? Gut zu wissen.
@Taiko Nicht wirklich, denn DNS ist nur eine Methode, die verwendet wird. Ein Bitcoin-Server benötigt nur eine Verbindung zu einem ehrlichen Knoten, um sicher zu sein.
Das Problem ist. DNS-Poisoning verhindert auch die Verbindung zu fest codierten IPs. Erstmalige Verbindungen können also nicht funktionieren, da die GFW von China sie blockiert. @David
@Taiko DNS Poisoning hat keine Auswirkungen auf Verbindungen zu fest codierten IPs. Sie haben Recht, dass eine Entität, die Ihren Internetzugang kontrolliert, Ihre Fähigkeit zur Nutzung von Bitcoin beeinträchtigen kann, genauso wie sie Ihre Fähigkeit zur Nutzung anderer Internetdienste beeinträchtigen kann. (Bitcoin ist jedoch besonders widerstandsfähig, weil nur ein Leak alle rettet.)
Ich möchte die Situation betrachten, in der der hartcodierte "bekannte" Client ebenfalls ausfällt. Wenn DNS fehlschlägt und der fest codierte bekannte Client fehlschlägt, wäre es dann möglich, zufällig IPs an diesem Port zu erraten und zu versuchen, Signale an zufällige IPs zu senden, bis Sie einen Bitcoin-Knoten finden, der antwortet?

Es gibt ein paar Methoden, die der Client verwenden kann . Im Gegensatz zu Davids sehr guter Antwort werde ich jedoch in chronologischer Reihenfolge darüber sprechen:

  • Der wichtigste Weg, wie Clients etwas über andere Clients erfahren, besteht darin, sich mit einem anderen Client zu verbinden und den Befehl „getaddr“ auszugeben. Der Standard-Client hatte diese Fähigkeit schon immer. Allerdings gibt es dabei ein Problem – wie erfahren Sie von Klient Nr. 1?
  • IRC-Seeding. Das ist auch schon seit der ersten Version drin. Es war einfach zu implementieren, aber letztendlich nicht skalierbar. Die erste mit freenode verbundene Version. Dann begannen die Bitcoin-Knoten , k-liniert zu werden . Spätere Versionen mit lfnet verbunden. Dann fiel lfnet aus und die IRC-Unterstützung wurde vollständig entfernt. DNS war zu diesem Zeitpunkt bereits vorhanden, also war das in Ordnung.
  • IP-Adressen bekannter Knoten. Dies ist seit Juni 2010 im Client. Immer noch im Bitcoin-Client, obwohl sich die genauen IP-Adressen von Zeit zu Zeit ändern.
  • DNS-Seeding. Dies ist seit März 2011 im Client enthalten. Dies ist einfacher zu skalieren, da DNS bereits für die Verarbeitung von Zehntausenden von Verbindungen ausgelegt ist.