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.
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.
Es gibt ein Python-Skript, das eine Verbindung zu Bitcoin herstellt und hier neue TX- und neue Blockereignisse generiert
Nate Eldredge
Avram