Monero accepteren

Instructies voor de opdrachtregel-interface (CLI)

De basis

Monero werkt anders dan je misschien gewend bent van andere cryptovaluta (zie cryptocurrencies). Voor digitale valuta zoals Bitcoin en de vele altcoins die daarvan zijn afgeleid maken betalingssystemen voor verkopers meestal een nieuw ontvangstadres (address) voor iedere betaling of gebruiker.

Maar omdat Monero stealth addresses heeft, is het niet nodig om afzonderlijke ontvangstadressen te gebruiken voor elke betaling of gebruiker. Je kunt gewoon één adres als rekening (account) publiceren. Verkopers die betalingen ontvangen geven de klant een "betalings-ID".

Een payment ID is een hexadecimale tekenreeks van 64 tekens, die normaal gesproken door de verkoper wordt gegenereerd. Een voorbeeld van een betalings-ID is:

666c75666679706f6e7920697320746865206265737420706f6e792065766572

Checking for a Payment in monero-wallet-cli

Als je een betaling wilt opzoeken met monero-wallet-cli, gebruik je de opdracht "payments" gevolgd door de betalings-ID(s) die je wilt opzoeken. Bijvoorbeeld:

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

Uitleg van het geautomatiseerd opzoeken van betalingen volgt hieronder.

Stap voor stap een betaling ontvangen

  • Genereer een willekeurige hexadecimale tekenreeks van 64 tekens voor de betaling.
  • Geef de betalings-ID en het Monero-adres door aan de persoon door wie je wordt betaald.
  • Zoek de betaling op met de opdracht "payments" in monero-wallet-cli.

Een betaling geautomatiseerd opzoeken

Om met een script een betaling op te zoeken, gebruik je de JSON RPC API call get_payments of get_bulk_payments.

get_payments: vereist de parameter payment_id met één betalings-ID.

get_bulk_payments: deze methode heeft de voorkeur en accepteert twee parameters, payment_ids (een JSON-array van betalings-ID's) en een optionele min_block_height (de blokhoogte waar je begint te zoeken).

Hier is een voorbeeld van de gegevens die je ontvangt:

[ 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
    }]
  }
}

Het is belangrijk om er rekening mee te houden dat de bedragen worden uitgedrukt in de basiseenheden van Monero en niet in de weergave-eenheden die worden gebruikt in applicaties voor eindgebruikers. En omdat een transactie meestal meerdere outputs bevat die bij elkaar het vereiste totaal voor de betaling vormen, moeten de bedragen worden gegroepeerd op de tx_hash of de payment_id en worden opgeteld. Verder kunnen meerdere outputs hetzelfde bedrag hebben, dus probeer nooit de geretourneerde gegevens van één call get_bulk_payments te filteren.

Voordat je betalingen opzoekt, kun je het beste eerst via de RPC API van de node (de call get_info) opvragen of er nieuwe blokken zijn ontvangen. Meestal zul je dan alleen het laatste ontvangen blok willen scannen door dat blok op te geven als de min_block_height bij get_bulk_payments.

Geautomatiseerd recente betalingen opzoeken

  • Haal de huidige blokhoogte op van de node en ga alleen verder als deze groter is dan bij de vorige scan
  • Voer de RPC API call get_bulk_payments uit met je laatste gescande hoogte en de lijst van alle betalings-ID's op je systeem.
  • Sla de huidige blokhoogte op als de laatste gescande hoogte
  • Verwijder dubbele treffers op basis van transactiehashes die je al hebt ontvangen en verwerkt.

Deze pagina is nog niet vertaald. Wil je deze pagina vertalen? Lees dan de README.