Woher weiß ich, wann eine Zahlung per Bitcoin eingegangen ist?

Ich möchte eine Website erstellen, die die Erstellung einer neuen Einwegadresse beinhaltet, an die ein Benutzer Bitcoins senden würde. Ich möchte programmgesteuert wissen, wann der Benutzer Bitcoins an die Adresse gesendet hat, damit die Website eine „Danke“-Notiz posten kann (oder was auch immer sonst tun). Was ist der beste Weg, dies zu tun?

Der Ablauf wäre:

  1. Die Website erstellt und zeigt dem Benutzer eine neue Einwegadresse und sagt: „Bitcoins hier senden“
  2. Der Benutzer sendet Bitcoins an die Adresse
  3. Sobald die Adresse Bitcoins erhält, sagt die Website "Danke für das Senden von 0,3 BTC!"

Ich nehme an, ich könnte die fragliche Adresse alle paar Minuten abfragen, aber das ist problematisch, da der Benutzer die Website nach Schritt 1 verlassen kann (dh niemals Bitcoins senden), sodass die Website möglicherweise für immer abfragt.

Ich verwende jetzt den offiziellen Bitcoin-Client, bin aber offen für etwas anderes.

Ich verstehe, dass Blockchain.info eine API bereitstellt, um Push-Benachrichtigungen zu einer bestimmten Adressaktivität zu erhalten, aber ich würde mich lieber nicht auf einen Drittanbieterdienst verlassen.

Ich wäre wirklich daran interessiert, ob es eine Push-Methode gibt, aber ich glaube nicht, dass dafür derzeit eine Unterstützung in den Client integriert ist.
@JayWest derzeit gibt es keine Push-Methode. Derzeit besteht die einzige Möglichkeit darin, dem Endbenutzer die Illusion zu vermitteln, dass eine Push-Benachrichtigung erfolgt, indem ein Hintergrundprozess verwendet wird, um kontinuierlich Daten von Bitcoin abzurufen (entweder getreceivedbyaddress oder listtransactions, je nach Verwendung).

Antworten (3)

Beginnend mit v0.6.0 des Bitcoin.org- Clients war -BlockNotify. Beginnend mit v0.8.2 des Bitcoin.org-Clients war -WalletNotify, das Benachrichtigungen auf Transaktionsebene bereitstellt.

0.8.2 unterstützt -walletnotify. Danke, Stefan!

listeninceblock ist bequemer - es kann inkrementell verwendet werden.

Ist das im Mainline-Client?
Oder listunspent 6 144 auf, um nicht ausgegebene (6-)bestätigte Transaktionen der letzten 24 Stunden zu erhalten (z. B. wenn Sie eingehende Transaktionen in eine Offline-Wallet verschieben, nachdem Sie sie "registriert" haben).
Hey, genau das versuche ich zu tun, Einzahlungstransaktionen für jede eindeutige Benutzeradresse aus der von empfangenen Ausgabe zu speichern listsinceblock. Ich möchte fragen, ob bei der Berechnung der Einzahlungssumme für jede eindeutige Benutzeradresse nur Transaktionen der Kategorie receiveund berücksichtigt und alle anderen Transaktionskategorien wie , und generateignoriert werden ? orphanimmaturesend

Möglicherweise möchten Sie eine amortisierte Abfrage durchführen: Verwenden Sie diese Option, listtransactionsum die letzten Transaktionen über alle Konten abzurufen. Anstatt also für jedes Konto eine Umfrage zu erstellen, tun Sie dies für alle gleichzeitig. Dies sollte in Kombination mit einem Timeout zur Verlangsamung der Abfrage, wenn keine Zahlung eingeht, gut funktionieren.

Danke Cdecker. Ich werde abwarten und sehen, ob jemand mit einer Push-Methode antwortet, um dies zu tun (anstatt abzufragen).