Přijímání Monera

Pokyny k příkazovému řádku

Základy

Monero funguje trochu jinak, než můžete být zvyklí od jiných kryptoměn. V případě digitálních měn, jako je například Bitcoin a jeho deriváty, vytvoří většinou platební systém obchodníka novou adresu příjemce pro každou platbu nebo každého uživatele.

Protože Monero využívá skryté adresy (stealth address), není důvod k tomu, mít separátní adresu příjemce pro každou platbu či každého uživatele a může se tak disponovat s jednotnou adresou účtu. V případě přijímání platby tedy obchodník poskytne platícímu zákazníkovi tzv. "payment ID".

payment ID je hexadecimální řetězec o 64 znacích a je zpravidla náhodně vygenerován obchodníkem. Příkladem payment ID je:

666c75666679706f6e7920697320746865206265737420706f6e792065766572

Kontrola Platby v monero-wallet-cli

Pokud chcete zkontrolovat platbu prostřednictvím monero-wallet-cli, použijte příkaz "payments" a za ním payment ID nebo více payment ID, které chcete zkontrolovat. Například:

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

Pokud chcete zkontrolovat platby pomocí programu, přejděte do následující sekce pro bližší informace.

Přijímání platby krok za krokem

  • Vygenerujte náhodný hexadecimální řetězec o 64 znacích pro danou platbu
  • Předejte vygenerované payment ID a Monero adresu osobě, která bude provádět platbu
  • Zkontrolujte platbu pomocí příkazu "payments" v monero-wallet-cli

Kontrola platby pomocí programu

Pokud chcete kontrolovat platbu pomocí programu, použijte get_payments nebo get_bulk_payments volání JSON RPC API.

get_payments: toto vyžaduje payment_id parametr s jedním payment ID.

get_bulk_payments: toto je preferovaný postup a vyžaduje dva parametry, payment_ids - JSONarray (pole) payment IDs - a nepovinný min_block_height - výška bloku, od které se bude prohledávat.

Příklad vrácené odpovědi:

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

Je důležité zmínit, že výpis částek je v základních Monero jednotkách a ne v zobrazovacích jednotkách běžně užívaných v aplikacích koncových uživatelů. Protože daná transakce bude mít s největší pravděpodobností více výstupů, které v součtu dělají celkovou sumu požadované platby, tyto dílčí částky by měly být seskupeny pomocí tx_hash nebo payment_id a sečteny. Navíc může mít vícero výstupů stejnou částku, pak je nutné vyvarovat se filtrování příchozích dat z jednoho get_bulk_payments volání.

Před samotným hledáním plateb je vhodné provést kontrolu daemon RPC API ( konrétně get_info volání RPC) a zkontrolovat, jestli byly obdrženy nějaké další bloky. Obvykle pak budete chtít prohledávat od posledního obdrženého bloku dále a to tak, že jej specifikujete pomocí min_block_height pro get_bulk_payments.

Programové vyhledávání plateb

  • Zjistěte současné pořadové číslo bloku (výšku bloku) v daemonu a pokračujte, pouze pokud se číslo od posledního vyhledávání zvýšilo.
  • Zavolejte get_bulk_payments RCP API s poslední prohledávanou výškou bloku a seznamem všech payment IDs v našem systému
  • Uložte současnou výšku bloku jako poslední prohledávanou výšku bloku
  • Odstraňte duplikáty na základě hashes transakcí, které jsme již obdrželi a zprocesovali