Monero akzeptieren

Anleitungen für das Befehlszeilenprogramm

Die Grundlagen

Monero funktioniert etwas anders, als du es vielleicht von anderen Kryptowährungen gewohnt bist. Im Falle einer digitalen Währung wie beispielsweise Bitcoin und seinen vielen Ablegern erzeugen Bezahlsysteme normalerweise eine neue Adresse für jeden neuen Zahlvorgang.

Weil Monero jedoch Schattenadressen nutzt, gibt es keinen Anlass, jedes Mal unterschiedliche Adressen zu nutzen und es genügt, eine einzelne Adresse des accounts zu veröffentlichen. Stattdessen wird das Bezahlsystem des Händlers dem Kunden eine „Payment-ID“ zur Zuordnung mitteilen.

Eine payment ID ist eine hexadezimale Zeichenkette, die 64 Zeichen lang ist und üblicherweise vom Händler zufällig generiert wird. Ein Beispiel für so eine Payment-ID ist:

666c75666679706f6e7920697320746865206265737420706f6e792065766572

Einen Zahlvorgang in monero-wallet-cli prüfen

Wenn du mit monero-wallet-cli einen Zahlvorgang überprüfen willst, kannst du den „payments“- Befehl, gefolgt von der Payment-ID bzw. den Payment-IDs, den oder die du prüfen willst, nutzen. Zum Beispiel:

[wallet 49VNLa]: payments 666c75666679706f6e7920697320746865206265737420706f6e792065766572
           payment                           transaction               height     amount     unlock time
666c75666679706f6e79206973207     7ba4cd810c9b4096869849458181e98e     441942     30.00000   0
[wallet 49VNLa]: █

Wenn du automatisiert Zahlungen überprüfen willst, folge den Details des nachfolgenden Abschnittes.

Eine Zahlung empfangen – Schritt für Schritt

  • Generiere eine zufällige, 64 Zeichen lange, hexadezimale Zeichenkette für den Zahlvorgang
  • Teile diese „Payment-ID“ und deine Monero-Adresse deinem Kunden mit
  • Überprüfe die Zahlung mithilfe des „payments“-Befehls in monero-wallet-cli

Zahlungen automatisiert überprüfen

Um Zahlungen automatisiert zu überprüfen, kannst du die „get_payments“ oder „get_bulk_payments“ JSON-RPC-API-Aufrufe nutzen.

get_payments: Dies erfordert einen „payment_id“-Parameter in Verbindung mit einer einzelnen Payment-ID.

get_bulk_payments: Dies ist die bevorzugte Methode und benötigt zwei Parameter – „payment_ids“, ein JSON-Array von Payment-IDs und eine optionale „min_block_height“ – die Blockhöhe, ab der geprüft werden soll.

Ein Beispiel, wie eine Ausgabe aussehen kann, siehst du hier:

[ monero->~ ]$ curl -X POST http://127.0.0.1:18500/json_rpc -d '{"jsonrpc":"2.0","method":"get_bulk_payments","id":"test", "params":{"payment_ids": ["666c75666679706f6e7920697320746865206265737420706f6e792065766572"]}}' -H "Content-Type: application/json"
{
  "id": "test",
  "jsonrpc": "2.0",
  "result": {
    "payments": [{
      "amount": 30000000000000,
      "block_height": 441942,
      "payment_id": "666c75666679706f6e7920697320746865206265737420706f6e792065766572",
      "tx_hash": "7ba4cd810c9b4096869849458181e98e18b6474ab66415de0f4ccf7ab1162fdf",
      "unlock_time": 0
    }]
  }
}

Es ist wichtig anzumerken, dass die ausgegebenen Beträge in grundlegenden Monero-Einheiten angegeben sind und nicht in Einheiten, die normalerweise in Endnutzeranwendungen verwendet werden. Aufgrund der Tatsache, dass eine Transaktion üblicherweise mehrere Outputs hat, die zum Gesamtbetrag zusammenaddiert werden, sollten die Beträge nach „tx_hash“ oder der „payment_id“ gruppiert und zusammengerechnet werden. Da mehrere Outputs den gleichen Betrag haben können, ist es notwendig, die ausgegebenen Daten nicht durch einen einzigen „get_bulk_payments“-Aufruf herausfiltern zu wollen.

Bevor man nach Zahlungen sucht, ist es eine gute Idee, mit einem RPC-API-Aufruf des Dienstes „monerod“ (der „get_info“-RPC-Aufruf) nachzuschauen, ob weitere Blöcke empfangen wurden. Üblicherweise wirst du dann nur ab dem empfangenden Block suchen wollen, indem du diesen als „min_block_height“ festlegst, um die „get_bulk_payments“ zu bekommen.

Automatisiert nach Zahlungen suchen

  • Erfrage die aktuelle Blockhöhe vom Dienst. Fahre nur fort, wenn sie sich seit der letzten Abfrage erhöht hat.
  • Rufe die „get_bulk_payments“-RPC-API auf mit der letzten von uns gescannten Höhe und einer Liste aller Payment-IDs in unserem System.
  • Setze die aktuelle Blockhöhe als letzte durchsuchte Blockhöhe.
  • Entferne Duplikate anhand von Transaktionshashes, die wir bereits verarbeitet haben.

Diese Seite ist noch nicht übersetzt. Wenn du uns mit Übersetzungen unterstützen möchtest, schau bitte hier README.