Ich möchte ein Python-Skript erstellen, das auf das Bitcoin-Netzwerk hört und einige Adressen überwacht, die in einer MySQL-Datenbank gespeichert sind. Sobald eine Transaktion mit einer dieser Adressen als Ausgabe gesendet wird, soll das Skript eine Funktion ausführen.
Ich muss und will auch nicht die ganze Blockchain speichern. Die privaten Schlüssel befinden sich aus Sicherheitsgründen auch nicht auf derselben Maschine. Auf dieser Maschine gibt es keine Brieftasche, nur eine Liste von Adressen in einer DB.
Im Moment habe ich das mit den Webhooks von blockchain.info umgesetzt und auch mit blocktrail getestet. Es funktioniert, aber es funktioniert nicht schnell genug, um meine Ziele zu erreichen, diese Lösungen sind einfach zu langsam, um praktikabel zu sein. Ich muss sofort benachrichtigt werden.
Ich habe mir mehrere Optionen angesehen, aber keine scheint als guter Ausgangspunkt zu passen. (BitcoinJ scheint am nächsten zu sein, aber es ist in Java) Ich kann nicht glauben, dass es so etwas nicht gibt, ich konnte einfach keines finden.
Also, kannst du mich in die richtige Richtung lenken?
Wenn Sie nur Transaktionen im Netzwerk abhören, ohne einen eigenen Validierungsknoten zu haben, haben Sie absolut keine Möglichkeit zu wissen, ob sie legitim sind oder nicht. Sie müssen lokal über einen vollständig validierenden Knoten verfügen, andernfalls können Transaktionen kostenlos hergestellt werden, um überall einen beliebigen Geldbetrag auszugeben. Es gibt keinen Rückgriff, wenn Sie dies falsch verstehen, das ist in erster Linie der Grund, warum niemand irgendeine Art von Validierung in Python implementiert hat, es gibt verschiedene Teile des p2p-Protokolls auf Github , aber es führt genau eine Null-Konsens-Validierung der empfangenen Daten durch .
Der aktuelle master
Bitcoin Core (und die kommende Version 0.12 Ende des Jahres) enthalten beide eine ZMQ-Schnittstelle, die Ihnen eine Echtzeitversorgung mit validierten Transaktionen bietet. Ein vollständiger Knoten (beschnitten) kann in nur 2 GB Speicherplatz ausgeführt werden und ist für jemanden, der ein Unternehmen führt, nicht sehr ressourcenintensiv. Es gibt Beispielcode dafür auf github als zmq_sub.py , der Ihnen den Einstieg erleichtern sollte. Beachten Sie jedoch, dass ZMQ keine Garantie für die Zustellbarkeit hat, einige Nachrichten können stillschweigend gelöscht werden, wenn es Verbindungsprobleme gibt.
Es ist wichtig zu bedenken, dass eine unbestätigte Transaktion keine Garantie dafür hat, dass sie bestätigt wird, und dass sie jederzeit ungültig werden kann. Das Akzeptieren von Nullbestätigungen ist äußerst riskant, obwohl das Aktualisieren einer Benutzeroberfläche mit einer Liste unbestätigter Transaktionen ein durchaus vernünftiges Verhalten ist.
Am Ende entschied ich mich für die Websocket-API von Blockchain in Kombination mit dem Python-Websocket-Client von Hiroki Ohtani . Dieser Mechanismus ist wirklich augenblicklich und scheint stabil und brauchbar zu sein. Ich habe jedoch immer noch Bedenken, meine Eier in einen Korb legen zu müssen. Also überprüfe ich es noch einmal und verwende auch die Webhooks-API von Blocktrail .
Dieses System bietet mir immer noch keine 100% narrensichere Sicherheit, aber ich kann mit diesem Setup leben, bis ein besseres System kommt oder ich etwas Besseres machen kann.
Ich danke Ihnen allen für Ihre Mithilfe und hoffe, dass diese Antwort als Idee/Basis für Ihre eigenen Bitcoin-Projekte dienen kann!
Wenn Sie eine Rohkopie der Transaktion haben, können Sie sie immer wieder neu veröffentlichen, bis sie bestätigt wird. Selbst bei sehr niedrigen Transaktionsgebühren sollte es am Ende bestätigt werden (kann aber lange dauern)
DDecoen
Claris
DDecoen
DDecoen
Claris