So streamen Sie Transaktionen im Netzwerk

Wie würde ich vorgehen, um einen Stream von Transaktionen zu erhalten, die im Bitcoin-Netzwerk übertragen werden? Wird dies vom Vanilla-Client unterstützt?

Ich weiß, dass der Client mich über neue Blöcke und alle Transaktionen benachrichtigen kann, die eine Adresse in meiner Brieftasche betreffen, aber ich möchte ALLE Transaktionen im Netzwerk streamen.

Was meinst du mit "streamen"? Was möchten Sie mit diesen Transaktionen tun? Was möchten Sie für sich tun?
@NateEldredge Ich möchte etwas Ähnliches tun, wie blockchain.info Transaktionen in Echtzeit anzeigt. Ich wusste nur nicht, ob der Kunde das irgendwo aufgedeckt hat oder nicht. Ich kann sie in der Bitcoin-Konsole sehen – überwache ich die Konsolenausgabe? <Schauder/>

Antworten (5)

Wenn ich Ihre Frage erneut lese und mir die Kommentare ansehe, denke ich, dass Ihre Frage leicht falsch informiert ist.

Der Standard-Bitcoin-QT-Client ist ein Knoten, was bedeutet, dass er das Inventar aller Transaktionen empfängt und alle gültigen Transaktionen weiterleitet, die er anfordert (aus den Inventaren). Das ist ein bisschen wie ein Mund voll, aber lesen Sie es sorgfältig.

Das hat nichts mit deinem Geldbeutel zu tun. Es ist eine Standardfunktion des vollständigen Knotens im Peer-to-Peer-Netzwerk.

Was Sie zu mischen scheinen, ist die Funktionalität der Brieftasche und die Funktionalität des Knotens. Das sind zwei verschiedene Dinge.

Bitcoin QT unterscheidet sich von anderen (Lightweight- oder SPV-)Clients, die nur spezifische Informationen zu den Adressen anfordern, die sie besitzen, wenn sie versuchen, sich mit dem Netzwerk zu synchronisieren.

Wenn Sie im Wesentlichen alle Transaktionen drucken möchten, die über Ihren Knoten weitergeleitet werden, wäre dies meiner Meinung nach ziemlich einfach, wenn Sie etwas wie Node.js verwenden oder einfach einen kontinuierlichen regelmäßigen Prozess ausführen, der Bitcoind mithilfe von RPC abfragt.

Sie müssen keinen vollständigen Bitcoin-Knoten ausführen. Dafür gibt es jede Menge Code, ich schlage Ihnen bitcoinj für Java und picocoin für C vor. Es ist eine triviale Aufgabe: Stellen Sie eine Verbindung zu einem beliebigen Peer her (z. B. durch DNS-Erkennung) und analysieren Sie die 'tx'-Nachrichten, die er Ihnen sendet.

Ich habe auch meine eigene Client-Bibliothek veröffentlicht , aber sie ist für iOS und ich schätze, Sie suchen nach serverseitigem Zeug.

BEARBEITEN: Wenn Sie überhaupt keine nassen Füße bekommen möchten, ist die blockchain.info WebSocket-API eine schnelle und schmutzige Lösung .

Für https://getaddr.bitnodes.io/dashboard/#transactions-and-blocks-propagation halte ich Verbindungen mit allen erreichbaren Knoten im Netzwerk offen und erfasse dann alle eingehenden inv-Nachrichten mit tcpdump und parse die pcap-Dateien für inv-Pakete ; Inv-Typ 1 für Transaktion und Inv-Typ 2 für Block. Um alle inv-Nachrichten zu erhalten, müssen Sie sicherstellen, dass Ihr Relay-Bit in Ihrer ausgehenden Versionsnachricht auf 1 gesetzt ist. Seien Sie bereit, 3 bis 10 Mbit/s für die eingehenden Invs zu verarbeiten, und Sie sollten in der Lage sein, alle Transaktionen auf diese Weise zu erhalten, aber sie müssen nicht unbedingt vom Ursprungsknoten stammen.

Durch das Signieren der Transaktion selbst werden sie im Netzwerk verbreitet. Die Miner-Gebühr wird von Peers anerkannt, die BTC-Knoten betreiben, und von Minern, die bereit sind, die Gebühr zu akzeptieren, wenn ihr Arbeitsnachweis akzeptiert wird.

Es hört sich so an, als ob Sie versuchen, die Echtzeit-Weiterleitung von Transaktionen effektiv zu replizieren? Bitlisten.com hat dies effektiv getan und stellt die Audioausgabe in Echtzeit bereit, wenn dies geschieht. Sie verwenden die API von Blockchain.info, um Echtzeittransaktionen zu erhalten.

Ja, ich weiß, dass Blockchain.info das kann - ich denke, meine Frage könnte umformuliert werden: "Wie machen SIE das?"
@Avram: Die kurze Antwort lautet: Sie haben viel benutzerdefinierten Code geschrieben.
Das habe ich befürchtet :) Ich werde damit beginnen, die Ausgabe von Bitcoin zu analysieren und sehen, wie weit mich das bringt.