Wohin werden Transaktionen gesendet?

Verwandte: Wie kommen Transaktionen zu Bergleuten , aber ich suche nach einer etwas (und nur etwas) technischeren Diskussion.

Angenommen, ich lade einen leichten Bitcoin-Client herunter und richte eine Brieftasche auf Maschine A ein. Von einer anderen Maschine B sende ich eine Münze an diese neue Brieftasche.

  1. Wie erreicht meine Transaktion einen Miner? Vermutlich sendet der Client auf Maschine B eine Nachricht an das Internet ... aber muss er nicht angeben, an welche IP-Adresse eine solche Nachricht gesendet werden soll? An welche IP-Adressen wird gesendet?
  2. Wie erfährt Maschine A in ähnlicher Weise von der Transaktion? Pingt der Client ständig das Netzwerk an, um neue Transaktionen an seine Adresse abzufragen? Woher weiß es, welche IP-Adressen bei der ersten Ausführung angepingt werden sollen?
Diese Diskussion scheint den Großteil der Frage zu beantworten. Eine zusammenfassende Übersicht könnte dennoch hilfreich sein: bitcoin.stackexchange.com/questions/53260/…

Antworten (1)

Wie erreicht meine Transaktion einen Miner?

Erstens, wenn Sie Ihr Wallet starten, wird es sich mit mehreren anderen Knoten im Netzwerk verbinden, indem es den hier beschriebenen Mechanismus verwendet . Diese Verbindungen sind TCP-Verbindungen, also Datenströme von einem Computer direkt zu einem anderen; die IP-Adressen sind bekannt und die Datenübertragung erfolgt über die TCP-Schicht.

Über diese TCP-Verbindung beginnen die beiden Knoten mit dem Datenaustausch. Dies besteht zunächst aus einigen anfänglichen Handshake-Sachen wie Versionsmeldungen, verschiedenen Filtern, die der andere Knoten anwenden muss, bevor er Daten an den anderen Knoten sendet, usw. Dann besteht es aus Block- und Transaktionsdaten. Diese werden normalerweise zuerst über eine invNachricht angekündigt (im Grunde sagt nur „Ich habe diese Daten“), mit einer getdataNachricht angefordert (sagt „Bitte geben Sie mir diese Daten“) und mit dem entsprechenden Nachrichtentyp ( block, tx, usw .).

Wenn Sie also eine Transaktion senden, teilt Ihr Node über eine invNachricht den Nodes mit, mit denen er verbunden ist, dass er eine Transaktion hat. Die anderen Knoten fordern es an und die Transaktion wird gesendet. Dann wiederholen diese Knoten denselben Vorgang; Sie kündigen ihren Kollegen an, dass sie eine Transaktion haben, sie wird angefordert und dann gesendet. Auf diese Weise breitet sich eine Transaktion durch das Netzwerk aus. Schließlich wird es einen Knoten erreichen, der Minern gehört, sodass die Miner Ihre Transaktion in ihren nächsten Block aufnehmen können.

Wie erfährt Maschine A in ähnlicher Weise von der Transaktion?

Da die TCP-Verbindungen bidirektional sind, empfängt Ihr Knoten auch Blöcke und Transaktionen von seinen Peers. Für Full Nodes erhält er jeden Block und jede Transaktion, die seinen Peers bekannt sind, was im Allgemeinen jeder Block und jede Transaktion im Netzwerk sein wird. Es kann dann jede Transaktion interpretieren und diejenigen finden, die sich auf Ihre Brieftasche beziehen.

Für eine leichte Brieftasche wird ein spezieller Satz von Nachrichten verwendet, mit denen ein Filter für die empfangenen Transaktionen festgelegt werden kann. Dieser Filter wird an die Knoten gesendet, mit denen er verbunden ist, und diese Knoten senden nur die Transaktionen an Ihr Wallet, die diesem Filter entsprechen. Dann führt Ihre Brieftasche eine zusätzliche lokale Filterung durch, um genau zu finden, welche Transaktionen sie betreffen (die eingestellten Filter können Fehlalarme enthalten).