Was ist eine Fühlerverbindung? Wann wird es verwendet?

Der Bitcoin-Client codiert ein Limit von 8 ausgehenden Verbindungen und 2 Nur-Block-Verbindungen fest. Ihr Knoten wird versuchen, diese 10 ausgehenden Verbindungen immer mit zuverlässigen Peers als Abwehr gegen Netzwerkangriffe aufrechtzuerhalten. Aber es gibt eine flüchtige 11. ausgehende Verbindung, die als Fühlerverbindung bezeichnet wird. Wozu dient eine Fühlerverbindung und wie funktioniert sie?

Ich denke, es sind 8 normale ausgehende, 2 nur Blöcke und eine Fühlerverbindung. :)

Antworten (2)

Eine Fühlerverbindung ist eine kurzlebige ausgehende Verbindung, die erst gestartet wird, nachdem Ihr Knoten die erforderlichen 8 ausgehenden Verbindungen und 2 ausgehenden Nur-Block-Relay- Verbindungen hergestellt hat. Der Zweck einer Fühlerverbindung besteht darin, regelmäßig Adressen aus der „neuen“ Tabelle zu testen, um festzustellen, ob es sich um anschließbare Bitcoin-Knoten handelt. Im Wesentlichen reinigt die Fühlerverbindung den Müll von „neuen“ und füllt die „erprobte“ Tabelle mit gültigen Adressen.

  • Die "neue" Tabelle enthält ungetestete Adressen, die der Knoten aus dem Klatschnetz erfahren hat.
  • Die "versuchte" Tabelle enthält Adressen, mit denen sich der Knoten erfolgreich verbunden hat.

Alle 2 Minuten führt die Fühlerverbindung eines von zwei Dingen aus:

  • Ziehen Sie einen zufälligen Peer aus dem Eviction-Puffer (Liste von Adressen, die für die Eviction in Betracht gezogen werden, da ein neuer Peer demselben Slot in "tried" zugeordnet ist). Testen Sie die Adresse, indem Sie versuchen, eine Verbindung zu ihr herzustellen, und entfernen Sie bei Erfolg diesen Eintrag aus dem Puffer. Wenn diese Adresse nicht verbindbar ist, entfernen Sie sie aus „versucht“ und ersetzen Sie sie durch eine andere Adresse (zuvor aus „neu“ gezogen).
  • Wenn der Eviction Buffer leer ist, teste eine zufällige Verbindung von „new“ und verschiebe sie bei Erfolg nach „tried“. Wenn dies nicht erfolgreich ist, aktualisieren Sie die Adressverbindungsstatistiken entsprechend. Wenn eine Adresse (neben anderen Kriterien) nicht oft genug eine Verbindung herstellt, wird sie tangential als "schrecklich" gekennzeichnet. Wenn eine eingehende Adresse mit einer schrecklichen Adresse kollidiert, wird die schreckliche Adresse aus der "neuen" Tabelle entfernt.

Fühlerverbindungen werden deaktiviert, wenn 30 Minuten lang keine neuen Blöcke empfangen wurden. In diesem Fall wird die Fühlerverbindung abgeschaltet und ihr Verbindungsschlitz wird alle 10 Minuten verwendet, um zu versuchen, einen Knoten zu finden, der über einen neuen Block Bescheid weiß. Damit soll versucht werden, eine Netzwerkpartition zu erkennen und zu umgehen, ohne die Anzahl der im Netzwerk verfügbaren Slots für eingehende Verbindungen zu überlasten. Sobald ein neuer Block entdeckt wird, kehrt die Fühlerverbindung zum Bereinigen des Räumungspuffers und der "neuen" Tabelle zurück.

Geschichte

Fühlerverbindungen sind eine der vorgeschlagenen Gegenmaßnahmen des Papiers "Eclipse Attacks on Bitcoin's Peer-to-Peer Network" und wurden mit PR#8282 eingeführt , um die Anzahl der Online-Adressen in der erprobten Tabelle zu erhöhen, und später implementierte PR#9037 die Test- Before-Evict-Funktionalität.

Ein Nachtrag zu Ihrer ansonsten tollen Antwort: Wenn wir eine Fühlerverbindung versuchen und der Versuch erfolglos bleibt, wird die Adresse nicht sofort von neuem geräumt. Stattdessen werden seine Statistiken ähnlich wie bei Nicht-Feeler-Verbindungsversuchen aktualisiert (durch Aufrufen von Attempt() in addrman), was dazu führen kann, dass es "schrecklich" ist und zu einem späteren Zeitpunkt entfernt wird - aber nur im Falle einer Kollision mit eine weitere hinzugefügte Adresse, die dieselbe Position in addrman einnehmen würde. In Abwesenheit von Kollisionen bleibt es addrman, egal wie oft wir keine Verbindung zu ihm herstellen.
Danke für das Feedback, @Lightlike! Ich habe meine Antwort entsprechend aktualisiert. :)

Antwort von vnprc erklärt die Details der Fühlerverbindungen. Ich war mir bei dem Begriff "Fühler" nicht sicher, also überprüfte ich die Bedeutung:

ein tierisches Organ wie eine Antenne oder ein Tastfinger, das zum Testen von Dingen durch Berührung oder zur Suche nach Nahrung verwendet wird.

Wie in einer anderen Antwort erwähnt, besteht der Zweck einer Fühlerverbindung darin, Adressen regelmäßig auf Verbindungen zu testen, sodass "Fühler" der richtige Begriff für solche Verbindungen ist.