# book_changes [[ソース]](https://github.com/XRPLF/rippled/blob/master/src/ripple/rpc/BookChanges.h) メソッドは、[分散型取引所(DEX)](/ja/docs/concepts/tokens/decentralized-exchange) のオーダーブックの変更に関する情報を、以前のレジャーバージョンと比較して提供します。これは「ローソク足」チャートの作成に役立つ場合があります。 ### リクエストのフォーマット リクエストの例: WebSocket ```json { "id": "example_book_changes", "command": "", "ledger_index": 88530953 } ``` JSON-RPC ```json { "method": "", "params": [{ "ledger_index": 88530953 }] } ``` コマンドライン ```sh #Syntax: book_changes [] rippled book_changes 88530953 ``` リクエストには以下のパラメーターが含まれます。 | フィールド | 型 | 必須? | 説明 | | --- | --- | --- | --- | | `ledger_hash` | [ハッシュ](/ja/docs/references/protocol/data-types/basic-data-types#%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5) | いいえ | 使用するレジャーバージョンの32バイトの16進文字列。(詳しくは[レジャーの指定](/ja/docs/references/protocol/data-types/basic-data-types#%E3%83%AC%E3%82%B8%E3%83%A3%E3%83%BC%E3%81%AE%E6%8C%87%E5%AE%9A)をご覧ください。) | | `ledger_index` | [レジャーインデックス](/ja/docs/references/protocol/data-types/basic-data-types#%E3%83%AC%E3%82%B8%E3%83%A3%E3%83%BC%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9) | いいえ | 使用するレジャーの[レジャーインデックス](/ja/docs/references/protocol/data-types/basic-data-types#%E3%83%AC%E3%82%B8%E3%83%A3%E3%83%BC%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9)、または自動的にレジャーを選択するためのショートカット文字列。([レジャーの指定](/ja/docs/references/protocol/data-types/basic-data-types#%E3%83%AC%E3%82%B8%E3%83%A3%E3%83%BC%E3%81%AE%E6%8C%87%E5%AE%9A)) | 既知の問題 `rippled`のこのメソッドにいくつかの既知の問題があります。 - デフォルトまたはショートカット文字列を使用する代わりに、`ledger_index`または`ledger_hash`を明示的に指定する必要があります。([Issue #5034](https://github.com/XRPLF/rippled/issues/5034)) - JSON-RPC APIのレスポンスは、検証済みのレジャーをクエリする場合でも`validated`フィールドが欠落する可能性があります。([#5035](https://github.com/XRPLF/rippled/issues/5035)) - 最近閉じたレジャーをクエリする場合、成功したレスポンスが意図したデータの代わりにレジャーリクエストオブジェクトを返すことがあります。([#5033](https://github.com/XRPLF/rippled/issues/5033)) - 古いレジャーからデータをクエリする場合、サーバーが長時間(30秒以上)応答しない可能性があります。([#5036](https://github.com/XRPLF/rippled/issues/5036)) これらのバグはClioサーバーには適用されません。 ## レスポンスのフォーマット 成功したレスポンスの例: WebSocket { "result": { "type": "bookChanges", "ledger_hash": "7AB08A2415C10E07201521F3260F77ADFF4902A528EA66378E259A07767A24B9", "ledger_index": 88530953, "ledger_time": 771100891, "validated": true, "changes": [ { "currency_a": "XRP_drops", "currency_b": "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/CNY", "volume_a": "44082741", "volume_b": "158.6978676", "high": "277777.7777777778", "low": "277777.7777777778", "open": "277777.7777777778", "close": "277777.7777777778" }, { "currency_a": "XRP_drops", "currency_b": "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/XLM", "volume_a": "44191586", "volume_b": "217.6925474337355", "high": "202999.9948135647", "low": "202999.9948135647", "open": "202999.9948135647", "close": "202999.9948135647" }, { "currency_a": "XRP_drops", "currency_b": "rf5YPb9y9P3fTjhxNaZqmrwaj5ar8PG1gM/47414C4100000000000000000000000000000000", "volume_a": "100000000", "volume_b": "1242.61659179386", "high": "80475.34586323083", "low": "80475.34586323083", "open": "80475.34586323083", "close": "80475.34586323083" }, { "currency_a": "XRP_drops", "currency_b": "rsoLo2S1kiGeCcn6hCUXVrCpGMWLrRrLZz/534F4C4F00000000000000000000000000000000", "volume_a": "33734", "volume_b": "0.1454210006367", "high": "231974.7481608686", "low": "231974.7481608686", "open": "231974.7481608686", "close": "231974.7481608686" }, { "currency_a": "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/CNY", "currency_b": "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/USD", "volume_a": "158.6978670792", "volume_b": "21.76925474337", "high": "7.290000000001503", "low": "7.290000000001503", "open": "7.290000000001503", "close": "7.290000000001503" }, { "currency_a": "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/USD", "currency_b": "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/XLM", "volume_a": "21.76925474337355", "volume_b": "217.6925474337355", "high": "0.1", "low": "0.1", "open": "0.1", "close": "0.1" } ] }, "id": "example_book_changes", "status": "success", "type": "response", "warnings": [ { "id": 2001, "message": "This is a clio server. clio only serves validated data. If you want to talk to rippled, include 'ledger_index':'current' in your request" } ] } JSON-RPC 200 OK { "result" : { "changes" : [ { "close" : "277777.7777777778", "currency_a" : "XRP_drops", "currency_b" : "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/CNY", "high" : "277777.7777777778", "low" : "277777.7777777778", "open" : "277777.7777777778", "volume_a" : "44082741", "volume_b" : "158.6978676" }, { "close" : "202999.9948135647", "currency_a" : "XRP_drops", "currency_b" : "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/XLM", "high" : "202999.9948135647", "low" : "202999.9948135647", "open" : "202999.9948135647", "volume_a" : "44191586", "volume_b" : "217.6925474337355" }, { "close" : "80475.34586323083", "currency_a" : "XRP_drops", "currency_b" : "rf5YPb9y9P3fTjhxNaZqmrwaj5ar8PG1gM/47414C4100000000000000000000000000000000", "high" : "80475.34586323083", "low" : "80475.34586323083", "open" : "80475.34586323083", "volume_a" : "100000000", "volume_b" : "1242.61659179386" }, { "close" : "231974.7481608686", "currency_a" : "XRP_drops", "currency_b" : "rsoLo2S1kiGeCcn6hCUXVrCpGMWLrRrLZz/534F4C4F00000000000000000000000000000000", "high" : "231974.7481608686", "low" : "231974.7481608686", "open" : "231974.7481608686", "volume_a" : "33734", "volume_b" : "0.1454210006367" }, { "close" : "7.290000000001503", "currency_a" : "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/CNY", "currency_b" : "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/USD", "high" : "7.290000000001503", "low" : "7.290000000001503", "open" : "7.290000000001503", "volume_a" : "158.6978670792", "volume_b" : "21.76925474337" }, { "close" : "0.1", "currency_a" : "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/USD", "currency_b" : "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/XLM", "high" : "0.1", "low" : "0.1", "open" : "0.1", "volume_a" : "21.76925474337355", "volume_b" : "217.6925474337355" } ], "ledger_hash" : "7AB08A2415C10E07201521F3260F77ADFF4902A528EA66378E259A07767A24B9", "ledger_index" : 88530953, "ledger_time" : 771100891, "status" : "success", "type" : "bookChanges" } } コマンドライン Loading: "/etc/opt/ripple/rippled.cfg" 2024-Jun-07 18:41:45.257772761 UTC HTTPClient:NFO Connecting to 127.0.0.1:5005 { "result" : { "changes" : [ { "close" : "277777.7777777778", "currency_a" : "XRP_drops", "currency_b" : "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/CNY", "high" : "277777.7777777778", "low" : "277777.7777777778", "open" : "277777.7777777778", "volume_a" : "44082741", "volume_b" : "158.6978676" }, { "close" : "202999.9948135647", "currency_a" : "XRP_drops", "currency_b" : "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/XLM", "high" : "202999.9948135647", "low" : "202999.9948135647", "open" : "202999.9948135647", "volume_a" : "44191586", "volume_b" : "217.6925474337355" }, { "close" : "80475.34586323083", "currency_a" : "XRP_drops", "currency_b" : "rf5YPb9y9P3fTjhxNaZqmrwaj5ar8PG1gM/47414C4100000000000000000000000000000000", "high" : "80475.34586323083", "low" : "80475.34586323083", "open" : "80475.34586323083", "volume_a" : "100000000", "volume_b" : "1242.61659179386" }, { "close" : "231974.7481608686", "currency_a" : "XRP_drops", "currency_b" : "rsoLo2S1kiGeCcn6hCUXVrCpGMWLrRrLZz/534F4C4F00000000000000000000000000000000", "high" : "231974.7481608686", "low" : "231974.7481608686", "open" : "231974.7481608686", "volume_a" : "33734", "volume_b" : "0.1454210006367" }, { "close" : "7.290000000001503", "currency_a" : "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/CNY", "currency_b" : "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/USD", "high" : "7.290000000001503", "low" : "7.290000000001503", "open" : "7.290000000001503", "volume_a" : "158.6978670792", "volume_b" : "21.76925474337" }, { "close" : "0.1", "currency_a" : "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/USD", "currency_b" : "rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y/XLM", "high" : "0.1", "low" : "0.1", "open" : "0.1", "volume_a" : "21.76925474337355", "volume_b" : "217.6925474337355" } ], "ledger_hash" : "7AB08A2415C10E07201521F3260F77ADFF4902A528EA66378E259A07767A24B9", "ledger_index" : 88530953, "ledger_time" : 771100891, "status" : "success", "type" : "bookChanges" } } このレスポンスは[標準フォーマット](/ja/docs/references/http-websocket-apis/api-conventions/response-formatting)に従っており、正常に完了した場合は結果に次のフィールドが含まれます。 | フィールド | 型 | 説明 | | --- | --- | --- | | `changes` | 配列 | このレジャーバージョンで更新された各オーダーブックの[Book Updateオブジェクト](#book-update%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88)のリスト。オーダーブックが更新されなかった場合、配列は空になります。 | | `ledger_hash` | [ハッシュ](/ja/docs/references/protocol/data-types/basic-data-types#%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5) | このデータを取得する際に使用されたレジャーバージョンの識別ハッシュ。 | | `ledger_index` | [レジャーインデックス](/ja/docs/references/protocol/data-types/basic-data-types#%E3%83%AC%E3%82%B8%E3%83%A3%E3%83%BC%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9) | このデータを取得する際に使用されたレジャーバージョンのレジャーインデックス。 | | `ledger_time` | 数値 | このデータを取得する際に使用されたレジャーバージョンの公式クローズ時間。[Rippleエポック以降の経過秒数](/ja/docs/references/protocol/data-types/basic-data-types#%E6%99%82%E9%96%93%E3%81%AE%E6%8C%87%E5%AE%9A)で表されます。 | | `type` | 文字列 | 文字列`bookChanges`。これはオーダーブック更新メッセージであることを示します。 | | `validated` | 真偽値 | *(省略可)* `true`の場合、検証済みのレジャーバージョンから取得されたことを表します。 | ### Book Updateオブジェクト Book Updateオブジェクトは、1つのレジャーバージョンにおける1つのオーダーブックの変更を表し、次のフィールドを含みます。 | フィールド | 型 | 説明 | | --- | --- | --- | | `currency_a` | 文字列 | オーダーブック内の2つの通貨のうちの最初の通貨の識別子。XRPの場合、これは文字列`XRP_drops`です。[トークン](/ja/docs/concepts/tokens)の場合、[base58](/ja/docs/references/protocol/data-types/base58-encodings)で表された発行者のアドレスの後にスラッシュ(`/`)が続き、その後に[通貨コード](/ja/docs/references/protocol/data-types/currency-formats#%E9%80%9A%E8%B2%A8%E3%82%B3%E3%83%BC%E3%83%89)が続きます。これは3文字の標準コードまたは20文字の16進コードになります。 | | `currency_b` | 文字列 | オーダーブック内の2つの通貨のうちの2番目の通貨の識別子。これは`currency_a`と同じ形式ですが、`currency_b`はXRPになることはありません。 | | `volume_a` | 文字列 - 数値 | このレジャーバージョンでこのオーダーブックの取引を通じて移動した最初の通貨(つまり`currency_a`)の総量、または *取引高*。 | | `volume_b` | 文字列 - 数値 | このレジャーバージョンでこのオーダーブックの取引を通じて移動した2番目の通貨(つまり`currency_b`)の取引高。 | | `high` | 文字列 - 数値 | このレジャーバージョンでこのオーダーブックの取引を通じてマッチしたすべてのオファーの中で最も高い取引レート。最初の通貨と2番目の通貨の比率として表されます。(つまり、`currency_a : currency_b`。) | | `low` | 文字列 - 数値 | このレジャーバージョンでこのオーダーブックの取引を通じてマッチしたすべてのオファーの中で最も低い取引レート。最初の通貨と2番目の通貨の比率として表されます。 | | `open` | 文字列 - 数値 | このレジャーバージョンでこのオーダーブックの取引を処理する前のオーダーブックの最初の取引の取引レート。最初の通貨と2番目の通貨の比率として表されます。 | | `close` | 文字列 - 数値 | このレジャーバージョンでこのオーダーブックの取引を処理した後のオーダーブックの最初の取引の取引レート。最初の通貨と2番目の通貨の比率として表されます。 | XRP-トークンのオーダーブックでは、XRPは常に`currency_a`で表されます。トークン-トークンのオーダーブックでは、発行者と通貨コードでアルファベット順に並べ替えられます。 XRPに関する取引レートは常に[XRPのdrop数](/ja/docs/references/protocol/data-types/basic-data-types#%E9%80%9A%E8%B2%A8%E9%A1%8D%E3%81%AE%E6%8C%87%E5%AE%9A)を使用して計算されます。例えば、XRPからFOOへのレートが1.0 XRP に対して 1 FOOの場合、APIによって報告されたレートは`1000000`(1 FOOあたり100万ドロップのXRP)になります。 ## 考えられるエラー * いずれかの[汎用エラータイプ](/ja/docs/references/http-websocket-apis/api-conventions/error-formatting#%E6%B1%8E%E7%94%A8%E3%82%A8%E3%83%A9%E3%83%BC)。 * `lgrNotFound` - `ledger_hash`または`ledger_index`で指定したレジャーが存在しないか、存在してはいるもののサーバが保有していません。 * `invalidParams` - 1つ以上のフィールドの指定が正しくないか、1つ以上の必須フィールドが指定されていません。