最終更新:
編集

ledger_request

[ソース]

ledger_requestコマンドは、サーバに対し接続しているピアから特定のレジャーバージョンを取得するように指示します。これは、サーバが直接接続しているピアの1つにそのレジャーが存在している場合にのみ機能します。場合によっては、レジャーを完全に取得するにはこのコマンドを繰り返し実行する必要があります。

ledger_requestリクエストは、権限のないユーザは実行できない管理メソッドです。

リクエストのフォーマット

リクエストのフォーマットの例:

{
   "id": 102,
   "command": "ledger_request",
   "ledger_index": 13800000
}

リクエストには以下のパラメーターが含まれます。

Field説明
ledger_index数値(省略可)レジャーインデックスにより指定されたレジャーを取得します。
ledger_hash文字列(省略可) 識別用ハッシュにより指定されたレジャーを取得します。

ledger_indexまたはledger_hashのいずれかを指定する必要がありますが、両方は指定しないでください。

レスポンスのフォーマット

レスポンスは標準フォーマットに従っています。ただし、rippledサーバに対してレジャーの取得開始を正常に指示できた場合でも、指定されたレジャーがない場合には失敗を示すレスポンスがリクエストから返されます。

注記
レジャーを取得するには、rippledサーバのダイレクトピアの履歴にそのレジャーが含まれている必要があります。どのピアにもリクエストされたレジャーがない場合は、connectメソッドまたは構成ファイルのfixed_ipsセクションを使用して、s2.ripple.comにあるRippleのすべての履歴が記録されるサーバを追加すれば、ledger_requestリクエストを再度実行できます。

失敗した場合のレスポンスには、レジャーの取得状況が示されます。成功した場合のレスポンスには、ledgerメソッドに類似したフォーマットでレジャーの情報が含まれます。

Loading: "/etc/rippled.cfg"
Connecting to 127.0.0.1:5005

{
  "result" : {
     "acquiring" : {
        "hash" : "01DDD89B6605E20338B8EEB8EB2B0E0DD2F685A2B164F3790C4D634B5734CC26",
        "have_header" : false,
        "peers" : 2,
        "timeouts" : 0
     },
     "error" : "lgrNotFound",
     "error_code" : 20,
     "error_message" : "acquiring ledger containing requested index",
     "request" : {
        "command" : "ledger_request",
        "ledger_index" : 18851277
     },
     "status" : "error"
  }
}

3つのレスポンスのフォーマットは次のとおりです。

  1. lgrNotFoundエラーが返された場合、レスポンスのacquiringフィールドには、ピアツーピアネットワークからのレジャー取得状況を示すレジャーリクエストオブジェクトが指定されています。
  2. サーバが現在データを取得中であるとレスポンスに示される場合、その結果の本文として、ピアツーピアネットワークからのレジャー取得状況を示すレジャーリクエストオブジェクトが表示されます。
  3. レジャーが完全に利用可能な場合、レスポンスにはレジャーヘッダーが表示されます。

レジャーリクエストオブジェクト

サーバでレジャーの取得操作が進行中であり、まだ完了していない場合は、rippledサーバはレジャー取得状況を示すレジャーリクエストオブジェクトを返します。このオブジェクトのフィールドを次に示します。

Field説明
hash文字列(省略される場合があります)リクエストされるレジャーのハッシュ(サーバがこのハッシュを認識している場合)。
have_headerブール値リクエストされたレジャーのヘッダーセクションがサーバにあるかどうか。
have_stateブール値(省略される場合があります)リクエストされたレジャーの完全な状態データがサーバにあるかどうか。
have_transactionsブール値(省略される場合があります)リクエストされたレジャーの完全なトランザクションセットがサーバにあるかどうか。
needed_state_hashes文字列の配列(省略される場合があります)サーバが取得する必要がある完全な状態データ内のオブジェクトのハッシュ(最大16個)。
needed_transaction_hashes文字列の配列(省略される場合があります)サーバが取得する必要があるトランザクションセットのオブジェクトのハッシュ(最大16個)。
peers数値このレジャーを見つけるためにサーバが照会するピアの数。
timeouts数値これまでにこのレジャーの取得操作がタイムアウトした回数。

考えられるエラー

  • 汎用エラータイプのすべて。
  • invalidParams - 1つ以上のフィールドの指定が正しくないか、1つ以上の必須フィールドが指定されていません。このエラーは、指定したレジャーインデックスが現在進行中のレジャーのインデックス以上である場合にも発生します。
  • lgrNotFound - レジャーがまだ利用可能ではない場合。これは、サーバがレジャーの取得を開始していますが、リクエストされたレジャーが接続されたどのピアにもない場合には失敗する可能性があることを意味します。(以前はこのエラーにはコードledgerNotFoundが使用されていました。)[更新: rippled 0.30.1][新規: rippled 0.30.1]