Dies ist die übliche Checkout-Funktion. Zeigt dem Benutzer die Adresse und muss sie n Minuten lang auf neue Transaktionen überwachen. Adressen sind nicht für jede Zahlung eindeutig.
Optional: Es wäre gut, einen Listener für Transaktionen mit einem bestimmten eingehenden Betrag zu haben, aber dies ist optional.
blockchain.info hat etwas Ähnliches, aber ich möchte es mit lokalem bitcoin-qt aus der .Net-Anwendung.
*Update: Dies sollte für Nicht-Wallet-Adressen/Transaktionen durchgeführt werden.
Bitcoin-qt hat mehrere Einschränkungen, wenn es um diese Art von Dingen geht. Es gibt nur zwei Möglichkeiten, dies zu tun.
Verwenden Sie den RPC-Aufruf listunspents, um den Saldo für eine bestimmte Adresse zu überwachen und den Gesamtsaldo zu berechnen. Lösen Sie dann Ihren Anruf im Backend aus Ihrer .net-Anwendung aus.
Verwenden Sie die externe Wallet-Notify-Bitcoind-Option, die Transaktionsdaten über ein Skript an Ihren .net-Prozess sendet, analysieren Sie das Ergebnis, um die Zahlung zu bestimmen. Dies kann auf Websites mit hohem Volumen zu Problemen führen, da es externe Prozesse per Wallet-Benachrichtigung hervorruft.
Schließlich können Sie diese Methode nur verwenden, um mit Adressen zu interagieren, die für die lokale Bitcoin registriert sind. Entweder Adressen, die es steuert, oder die Sie manuell geladen haben.
Um bestimmte Empfangsadressen für eingehende Transaktionen über die RPC-API zu überwachen, sollten Sie die listreceivedbyaddress
Methode verwenden. Das Hinzufügen dieser Parameter: listreceivedbyaddress(0, true)
gibt auch eine Nullbestätigung und leere Adressen zurück.
Der effizienteste Weg, alle eingehenden Transaktionen mit einem bestimmten Betrag zu überwachen, besteht darin listsinceblock
, aufzurufen, den letzten von Ihrer App gescannten Block zu verfolgen und ihn als Parameter zu übergeben: listsinceblock(lastScannedBlockHash, targetConfirmations)
So scannen Sie effektiv nur den neuen Block, was sehr schnell geht und leicht.
Eine kampferprobte Bibliothek zur Durchführung der oben genannten Aufgaben .net
ist BitcoinLib , die auch als NuGet-Paket geliefert wird:
getrawmempool
was Transaktionen in Ihrem Speicherpool zurückgibt, wo sie sich befinden, bis (und falls) sie bestätigt werden. Sie können dann gegen diese Sammlung callen getrawtransaction <txId> 1
und jede Transaktion eingehend untersuchen.Wenn du das machst. Nehmen wir an, der RPCCMDS+.net-Server ist besser als der bitcoin-qt-Server, der besser ist als der bicoind.exe-Server. Wenn Sie diese Adressen nicht schulden, bitten Sie einfach die Blockchain-API um Gnade.
Seit 0.10 unterstützt Bitcoind Watch-Only-Adressen. https://bitcoin.org/en/developer-reference#importaddress
Ich habe ein Programm in Python3 geschrieben, mit dem Sie nach jeder Adresse im Bitcoin-Kern suchen können, unabhängig davon, ob sie zu Ihrer Brieftasche gehört oder nicht.
Hier ist der Github-Link:
https://github.com/ORP967/Bitcoin_Core_RPC_par_address
Lassen Sie mich wissen, was Sie denken oder wenn Sie irgendwelche Verbesserungen haben, die Sie haben könnten.
Alex
Matt
Alex
Matt
Jus12
Matty B