Übertragung von Bitcoin-Transaktionen

Ich bin etwas verwirrt über die Übertragung von Transaktionen im Internet. Woher weiß ein Miner, dass eine Transaktion übertragen wurde? Das Internet-Netzwerk ist sehr groß. Oder wie sammelt mein Bitcoin-Client die gesendeten Blöcke?

Antworten (2)

Das P2P-Netzwerk von Bitcoin ist ein Flooding-Design, neue Transaktionen und Blöcke werden an jeden verbundenen Peer gesendet, und sie senden an jeden ihrer Peers. Gültige Daten erreichen alle Teilnehmer sehr schnell aufgrund der zufälligen Auswahl von Peers, die alle Knoten treffen. Alle validierenden Teilnehmer führen einen „Mempool“, eine Sammlung unbestätigter Transaktionen, die sie für gültig halten, Miner sammeln Transaktionen, die sie in Blöcke aus ihrem Mempool aufnehmen möchten, und verwandeln sie in eine Kandidatenvorlage, gegen die sie minen können.

Unter der Haube hat Bitcoin etwas namens json-rpc . Dies wird innerhalb der Software und mit anderer Software verwendet, die Sie in Bitcoin integrieren möchten, um Zahlungen zu senden und zu empfangen, Brieftaschenadressen zu generieren und Netzwerkdaten zu erhalten. Bitcoin Core und jede andere Software, die eine vollständige Kopie der Blockchain speichert (spv-Wallets wie Multi-Bit, Mycelium und die Android-Bitcoin-Wallet sind leicht und speichern keine 60 GB Blockchain-Transaktionsdaten auf Ihrem Telefon).

Sie sprechen miteinander über Port 8333 und Bitcoin-Transaktionen werden aneinander gesendet und übertragen. Wenn Sie benutzerdefinierte Software auf Ihrem Computer hatten, auf dem der Bitcoin-Kern ausgeführt wurde, könnten Sie ein Skript programmieren, damit Ihre Anwendung mit Bitcoin spricht, um zuerst Eingaben zu erhalten, dann eine Rohtransaktion erstellen und dann die Transaktion mit dem privaten Schlüssel signieren, der auszugebende Eingaben enthält es auszustrahlen. Wenn wir uns den Prozess ansehen, sehen wir, dass Sign Transaction ein Json-Array mit den hex-codierten signierten Daten und einen Ergebniscode zurückgibt (die meisten Bitcoin Op_Code-Skripte geben entweder 0 oder 1 auf Protokollebene zurück, um einen Fehler (0) oder Erfolg (1) anzuzeigen). Anschließend sendet die Software die Daten (broadcastet) mit diesem signierten Hex-Wert an verbundene Peers über Port 8333. Das Protokoll gibt dann entweder eine Transaktions-ID oder einen Fehler zurück, wiederum als Json-Objekt.