收取門羅幣

指令界面工具的使用說明

基本介紹

門羅幣與你過去曾接觸過其他的 @加密貨幣 稍微有點不同。以比特幣與其相同衍生類型的幣為例,通常商家的支付系統會為每一個使用者或每一筆交易產生全新的收款 @地址 。

但是,因為門羅幣有 @隱匿性地址 所以並不需要在每次交易中使用不同的收款地址,可以公開使用同一個 @帳戶 地址。取而代之的是商家將會提供一個「付款 ID」給付款者。

@付款ID 是一個十六進位制的64字元長的字串,通常是由商家隨機產生,一個付款ID的範例如下:

666c75666679706f6e7920697320746865206265737420706f6e792065766572

在 monero-wallet-cli 中檢查一筆付款

如果你想要使用 monero-wallet-cli 檢查一筆付款,你可以使用「payments」指令搭配一或多組付款ID,譬如:

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

如果你想要透過程式化的方式檢查付款,其細節將在下一個部份解釋。

接收一筆付款的步驟

  • 產生一組隨機的十六進位制 64 字元字串作為付款ID
  • 將這組付款ID與門羅幣地址提供給付款者
  • 在 monero-wallet-cli 中用「payments」檢查付款

透過程式化的方式檢查付款

若要透過程式化的方式檢查付款,你可以透過 JSON RPC API 呼叫 get_payments 或 get_bulk_payments。

get_payments: 這將需要一個付款ID作為 payment_id 的參數。

get_bulk_payments: 這是較為適當的方式,需要兩個參數,一為 payment_ids (帶有付款ID的 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
    }]
  }
}

重要的一點是,回傳的金額是以基本門羅幣單位來呈現,而由於付款通常都是由多組交易輸出所組成,金額會是由 tx_hash 或是 payment_id 分群的多個結果組合而成。 此外,由於多個交易輸出可能有相同的金額,因此請不要嘗試從單一個 get_bulk_payments 指令回傳的資料中篩選交易。

在掃瞄付款之前,最好先透過節點的 RPC API (呼叫 get_info) 來確認是否有收到新的區塊資料,通常你會想要只從這些新收到的區塊資料中掃描付款,可以透過指定 min_block_height 再呼叫 get_bulk_payments 來達成。

透過程式化的方式檢查付款

  • 從節點取得目前的區塊高度,僅在區塊高度增加時進行掃描。
  • 在我們系統上呼叫 get_bulk_payments RPC API 指令,並指定最後一次的掃描區塊高度以及付款 ID 清單。
  • 將目前的區塊高度儲存起來以作為最後一次的掃描高度。
  • 以交易雜湊碼來判斷並去除與先前已處理過的重複的交易紀錄。

這個頁面尚未被翻譯,如果您願意協助翻譯,請見 README.