Aceptar Monero

Instrucciones para la interface de Consola de Comandos

Lo Básico

Monero trabaja un poco distinto a lo que puedes estar acostumbrado de otras criptomonedas. En el caso de dinero digital como Bitcoin y sus diversos sistemas de pago mercantil derivados que usualmente crean una nueva dirección recipiente (address) por cada pago o usuario.

No obstante, debido a que Monero cuenta con direcciones de sigilo (stealth addresses) no existe la necesidad de tener direcciones recipientes separadas para cada pago o usuario, y una simple cuenta (account) puede ser publicada. En su lugar, cuando un comerciante recibes pagos proveerá al comprador con una "ID de pago".

Un ID de pago (payment ID) es una cadena hexadecimal de 64 caracteres de longitud, y es creada aleatoriamente por el comerciante. Un ejemplo de una ID de pago es:

666c75666679706f6e7920697320746865206265737420706f6e792065766572

Revisar por un pago en monero-wallet-cli

Si deseas revisar algún pago usando monero-wallet-cli, puedes utilizar el comando "payments" seguido de el o los ID de pago que deseas revisar. Por ejemplo:

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

Si necesitas revisar pagos de manera programada, los detalles se encuentran en la siguiente sección.

Recibiendo un pago paso-a-paso

  • Generar una cadena hexadecimal aleatoria de 64 caracteres para el pago
  • Compartir el ID de pago y la dirección de Monero al individuo que estará haciendo el pago
  • Revisar por el pago utilizando el comando "payments" en monero-wallet-cli

Revisando por pagos de manera programada

En orden para revisar un pago de manera programada puedes utilizar una llamada JSON RPC API "get_payments" o "get_bulk_payments".

get_payments: esto requiere un parámetro del ID de pago con un solo ID de pago.

get_bulk_payments: este es el método preferido y requiere dos parámetros, payment_ids - un arreglo JSON de IDs de pago - y opcionalmente min_block_height - la altura del bloque para escanear.

Un ejemplo de datos devueltos es el siguiente:

[ 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 importante tener en cuenta que las cantidades devueltas están en base a unidades de Monero y no en unidades de visualización normalmente utilizadas en aplicaciones para el usuario final. Además, debido a que una transacción típicamente tendrá múltiples salidas que sumarán el total requerido para el pago, las cantidades deberán ser agrupadas por tx_hash o payment_id y sumadas al total. Adicionalmente, como múltiples salidas pueden tener la misma cantidad, es imperativo el no intentar filtrar la información devuelta de una salida con "get_bulk_payments".

Antes de escanear por pagos es útil revisar el RPC API del daemon (con la llamada "get_info RPC") para ver si han sido recibidos bloques adicionales. En situaciones típicas querrás escanear solamente el bloque recibido especificándolo con min_block_heigh para obtener información de get_bulk_payments.

Escanear de manera programada por pagos

  • Obtener la altura actual de bloque del daemon, proceder solamente si ha aumentado desde el último escaneo
  • Llama el comando get_bulk_payments RPC API con la última altura de bloque y la lista de todos los ID de pago en el sistema
  • Guarda la altura de bloque actual como el último valor de altura de bloque escaneado
  • Remueve duplicados en base a hashes de transacciones que ya hemos recibido y procesado

Esta página aún no ha sido traducida. Si deseas ayudar a traducirla, por favor lee el archivo README.