Получение Monero

Инструкция для интерфейса командной строки

Основы

Monero работает немного иначе, чем другие криптовалюты, к которым вы могли привыкнуть. В случае с такой криптовалютой, как Bitcoin и ее многочисленными производными, торговые системы приема оплаты обычно создают новый адрес для каждого платежа или каждого пользователя при получении транзакции.

Поскольку у Monero есть "одноразовые адреса" (stealth-addresses), нет необходимости иметь отдельные адреса для каждого платежа или пользователя, и может быть опубликован всего один адрес. Для того, чтобы получить платеж, продавец предоставляет покупателю свой "идентификатор платежа" (payment ID).

Идентификатор платежа (Payment-ID) - это шестнадцатеричная строка длиной 64 символа, которая создается продавцом для идентификации платежа. Пример идентификатора платежа

666c75666679706f6e7920697320746865206265737420706f6e792065766572

Проверка платежа в monero-wallet-cli

Если вы хотите проверить платеж с помощью monero-wallet-cli, вы можете использовать команду "payments", за которой следует идентификатор платежа, который вы хотите проверить. Например:

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

Если вам нужно проверить платеж на программном уровне, тогда, следуйте инструкции в следующем разделе.

Получение платежа шаг за шагом

  • Создайте случайную 64-значную шестнадцатеричную строку для оплаты
  • Сообщите свой идентификатор платежа и адрес Monero лицу, которое производит платеж
  • Проверьте платеж, используя команду "payments" в monero-wallet-cli

Проверка платежа программным способом

Для того, чтобы проверить платеж программными средствами можно использовать get_payments или get_bulk_payments с json RPC вызовом API-интерфейса.

get_payments: для этого потребуется параметр payment_id с одним идентификатором платежа.

get_bulk_payments: этот метод является предпочтительным и требует двух параметров, payment_ids - массив идентификаторов платежей JSON и дополнительный min_block_height с высотой блока для сканирования.

Пример возвращаемых данных выглядит следующим образом:

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

Важно отметить, что возвращаемые данные о суммах указаны в базовых единицах Monero, а не в единицах используемых в приложениях для конечного пользователя. Поскольку транзакция обычно имеет несколько выходов, которые складываются в общую сумму ,необходимую для оплаты, суммы должны быть сгруппированы по tx_hash или payment_id. Кроме того, несколько выходов могут иметь одинаковую сумму Крайне важно не пытаться отфильтровать возвращенные данные из одного вызова get_bulk_payments.

Перед сканированием платежей полезно свериться с демоном RPC API (вызов get_info RPC), чтобы увидеть, появились ли новые блоки. Как правило, вам будет необходимо просканировать последний полученный блок, указав его как min_block_height для get_bulk_payments.

Программное сканирование платежей

  • Получите текущую высоту блока от демона, следует учитывать, что она может увеличится в высоте с момента последнего сканирования
  • Вызов API get_bulk_payments вызывает API RPC с последней отсканированной высотой и списком всех идентификаторов платежей в нашей системе
  • Сохраните текущую высоту блока в качестве основной просканированной высоты
  • Удалить дубликаты на основе хэшей транзакций, которые вы уже успешно получили и обработали

Эта страница еще не переведена. Если вы хотите помочь с переводом, ознакомьтесь с README.