Ich schreibe eine Bitcoin-Webanwendung, die auf einem externen Server bereitgestellt werden soll, über den ich keine Kontrolle habe. Ich werde wahrscheinlich keinen Zugriff auf den Standard-Bitcoin-Port (8333) haben. Wird dies ein Problem verursachen, wenn Sie sich mit Standard-Bitcoin-Clients verbinden, oder können sie die Kommunikation mit einer nicht standardmäßigen Portnummer handhaben? Gibt es Bitcoin-bezogene Anwendungen, die auch andere Ports zur Kommunikation verwenden (wie einen Pool oder ähnliches)?
Wenn Sie nur ausgehende Verbindungen herstellen, spielt es keine Rolle, welche Ports Sie verwenden. Ihr Kunde kann ohne Probleme vollständig am Netzwerk teilnehmen.
Knoten im Netzwerk, die nicht auf den Standardports (8333 für das Hauptnetzwerk, 18333 für Testnet) ausgeführt werden, werden vom Referenzclient vermieden, um keine Unterbrechung anderer Dienste zu verursachen. Sollte sonst jemand einen gefälschten Knoten ankündigen, der auf einem anderen Anwendungsport läuft, könnten andere Knoten im Netzwerk einen Denial-of-Service-Angriff verursachen, da sie erfolglos versuchen, sich mit ihm zu verbinden.
Ein Codeausschnitt des Bitcoin Core-Clients, der zeigt, dass Knoten Nicht-Standard-Ports ignorieren, es sei denn, sie sind sehr verzweifelt, jemanden zu finden, mit dem sie sich verbinden können:
// do not allow non-default ports, unless after 50 invalid addresses selected already
if (addr.GetPort() != Params().GetDefaultPort() && nTries < 50)
continue;
Wenn Sie das Netzwerk aktiv mit eingehenden Verbindungen unterstützen möchten, sollten Sie die "Port"-Einstellung des Bitcoin-Daemons möglichst nicht ändern.
Beachten Sie, dass -addnode die Einstellung -port ignoriert
Beispielsweise haben sowohl node1 als auch node2 einen -port=14444
node1> bitcoin-cli addnode node2 hinzufügen
2018-08-11 02:07:04 connect() zu node2:18444 nach select() fehlgeschlagen: Verbindung abgelehnt (111)
Die Lösung besteht darin, den Port in den Hostnamen node1> bitcoin-cli addnode node2:14444 add aufzunehmen
David Schwarz
DerPiachu