mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-12-02 09:35:53 +00:00
chore: rename deprecated i18n to l10n
This commit is contained in:
committed by
amarantha-k
parent
6cbb3a036f
commit
9a0c010600
@@ -0,0 +1,33 @@
|
||||
---
|
||||
html: ctid.html
|
||||
parent: api-conventions.html
|
||||
seo:
|
||||
description: CTID(Compact Transaction Identifier)は、検証済みトランザクションをチェーン全体で一意に識別する短い文字列です。
|
||||
labels:
|
||||
- 開発
|
||||
---
|
||||
# トランザクション軽量識別子
|
||||
|
||||
CTID(トランザクション軽量識別子 / Compact Transaction Identifier)は、XRP Ledgerのメインネットを含む、あらゆる[ネットワーク](../../../concepts/networks-and-servers/parallel-networks.md)で利用可能な、検証済みトランザクションの一意な識別子です。
|
||||
|
||||
CTIDとトランザクションの[識別ハッシュ](../../../concepts/transactions/index.md#identifying-transactions)の違いは以下の通りです:
|
||||
|
||||
- CTIDは、ネットワークID、レジャーインデックス、レジャー内の位置に基づいて検証されたトランザクションを識別します。トランザクションがどのネットワークで検証されたかを特定するため、サイドチェーンへの接続など、複数のネットワークとやりとりする状況で使用できます。CTIDは64ビットで、通常は`C`で始まる16進数の大文字で、例えば`C005523E00000000`のように記述します。
|
||||
- トランザクションの識別ハッシュは、そのトランザクションがどのチェーンで検証されたかに関係なく、その内容に基づいて署名されたトランザクションを識別します。これは暗号ハッシュであるため、トランザクションの内容が完全であることを証明するために使用することもできます。トランザクションハッシュは256ビットで、通常64文字の16進数で記述され、例えば`E08D6E9754025BA2534A78707605E0601F03ACE063687A0CA1BDDACFCD1698C7`となります。
|
||||
|
||||
{% admonition type="warning" name="注意" %}未検証のトランザクションにCTIDを使わないでください。トランザクションが最初に適用されたときと、コンセンサスプロセスによって検証されたときとで、トランザクションの正規順序が変わる可能性があります。{% /admonition %}
|
||||
|
||||
## 構造
|
||||
|
||||
CTIDは以下の要素を含みます(ビッグエンディアン順)。
|
||||
|
||||
1. 4ビット: CTIDであることを示す16進数の頭文字`C`
|
||||
2. 28ビット: トランザクションが検証されたレジャーのインデックス
|
||||
3. 16ビット: トランザクションのインデックス。これは[トランザクションのメタデータ](../../protocol/transactions/metadata.md)の`TransactionIndex`フィールドとして提供されます
|
||||
4. 16ビット: トランザクションを検証したネットワークの[ネットワークID](../../protocol/transactions/common-fields.md#networkidフィールド)
|
||||
|
||||
{% admonition type="info" name="注記" %}レジャーインデックスは通常32ビットの符号なし整数として保存され、新しいレジャーが作成されるたびに1ずつ増加します。ネットワークのレジャーインデックスが268,435,455より大きい場合、28ビットに収まらないので、必要に応じて先頭の`C`を`D`、`E`、`F`にインクリメントする必要があります。これは少なくとも2043年までは必要ないと思われます。{% /admonition %}
|
||||
|
||||
## 関連項目
|
||||
|
||||
サンプルコードや背景などの詳細については、[XLS-0037 Standard](https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0037-concise-transaction-identifier-ctid)をご覧ください。
|
||||
@@ -0,0 +1,127 @@
|
||||
---
|
||||
html: error-formatting.html
|
||||
parent: api-conventions.html
|
||||
seo:
|
||||
description: WebSocket、JSON-RPC、コマンドラインインターフェイスのエラーフォーマットと汎用エラーコードです。
|
||||
labels:
|
||||
- 開発
|
||||
---
|
||||
# エラーのフォーマット
|
||||
|
||||
エラーが発生する可能性のある状況をすべて挙げることは不可能です。トランスポートレイヤーで発生する場合(ネットワーク接続が失われる場合など)には、使用しているクライアントとトランスポートに応じてその結果は異なります。ただし、`rippled`サーバがリクエストを正常に受信した場合、サーバは標準のエラー形式でのレスポンスを試みます。
|
||||
|
||||
{% admonition type="warning" name="注意" %}リクエストの結果がエラーになった場合、レスポンスの一部としてリクエスト全体がコピーされます。このため、エラーのデバッグに取り組むことができます。ただし、これにはリクエストで渡した機密情報がすべて含まれます。エラーメッセージを共有するときには、アカウントの重要な機密情報を他のユーザに誤って公開することがないように、十分に注意してください。{% /admonition %}
|
||||
|
||||
|
||||
エラーの例:
|
||||
|
||||
{% tabs %}
|
||||
|
||||
{% tab label="WebSocket" %}
|
||||
```json
|
||||
{
|
||||
"id": 3,
|
||||
"status": "error",
|
||||
"type": "response",
|
||||
"error": "ledgerIndexMalformed",
|
||||
"request": {
|
||||
"account": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59",
|
||||
"command": "account_info",
|
||||
"id": 3,
|
||||
"ledger_index": "-",
|
||||
"strict": true
|
||||
}
|
||||
}
|
||||
```
|
||||
{% /tab %}
|
||||
|
||||
{% tab label="JSON-RPC" %}
|
||||
```json
|
||||
HTTP Status: 200 OK
|
||||
|
||||
{
|
||||
"result": {
|
||||
"error": "ledgerIndexMalformed",
|
||||
"request": {
|
||||
"account": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59",
|
||||
"command": "account_info",
|
||||
"ledger_index": "-",
|
||||
"strict": true
|
||||
},
|
||||
"status": "error"
|
||||
}
|
||||
}
|
||||
```
|
||||
{% /tab %}
|
||||
|
||||
{% tab label="コマンドライン" %}
|
||||
```json
|
||||
{
|
||||
"result": {
|
||||
"error": "ledgerIndexMalformed",
|
||||
"request": {
|
||||
"account": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59",
|
||||
"command": "account_info",
|
||||
"ledger_index": "-",
|
||||
"strict": true
|
||||
},
|
||||
"status": "error"
|
||||
}
|
||||
}
|
||||
```
|
||||
{% /tab %}
|
||||
|
||||
{% /tabs %}
|
||||
|
||||
|
||||
## WebSocketフォーマット
|
||||
|
||||
| `Field` | 型 | 説明 |
|
||||
|:--------------|:------|:------------------------------------------------------|
|
||||
| `id` | (多様) | このレスポンスのリクエスト元となったWeb Socketリクエストに指定されていたID |
|
||||
| `status` | 文字列 | `"error"`: リクエストが原因でエラーが発生した場合 |
|
||||
| `type` | 文字列 | 通常は`"response"`。これは、コマンドに対し正常にレスポンスしたことを示します。 |
|
||||
| `error` | 文字列 | 発生したエラータイプの一意のコード。 |
|
||||
| `request` | オブジェクト | このエラーが発生したリクエストのコピー(JSONフォーマット)。**注意:** リクエストにアカウントの機密情報が含まれている場合、ここにコピーされます。 |
|
||||
| `api_version` | 数値 | _(省略可)_ リクエストで`api_version`を指定していた場合は、その値。 |
|
||||
|
||||
|
||||
## JSON-RPCフォーマット
|
||||
|
||||
一部のJSON-RPCリクエストは、HTTPレイヤーでエラーコードでレスポンスします。この場合、レスポンスはレスポンス本文にプレーンテキストで記述されます。たとえば`method`パラメータでコマンドを指定し忘れた場合、レスポンスは次のようになります。
|
||||
|
||||
```
|
||||
HTTP Status: 400 Bad Request
|
||||
Null method
|
||||
```
|
||||
|
||||
HTTPステータスコード200 OKが返されるその他のエラーの場合、レスポンスはJSONフォーマットで、以下のフィールドが使用されます。
|
||||
|
||||
| `Field` | 型 | 説明 |
|
||||
|:-----------------|:-------|:-------------------------------------------------|
|
||||
| `result` | オブジェクト | クエリーに対するレスポンスが含まれているオブジェクト |
|
||||
| `result.error` | 文字列 | 発生したエラータイプの一意のコード。 |
|
||||
| `result.status` | 文字列 | `"error"`: リクエストが原因でエラーが発生した場合 |
|
||||
| `result.request` | オブジェクト | このエラーが発生したリクエストのコピー(JSONフォーマット)。**注意:** リクエストにアカウントの機密情報が含まれている場合、ここにコピーされます。**注記:** 発行されるリクエストにかかわらず、リクエストはWebSocketフォーマットに再設定されます。 |
|
||||
|
||||
|
||||
## 汎用エラー
|
||||
|
||||
すべてのメソッドは、以下のいずれかの値の`error`コードを返す可能性があります。
|
||||
|
||||
- `amendmentBlocked` - サーバの状態が[Amendmentブロック](../../../concepts/networks-and-servers/amendments.md#amendment-blocked)されたであるため、XRP Ledgerネットワークとの同期を維持するために最新バージョンに更新する必要があります。
|
||||
- `failedToForward` - ([レポートモード][]のサーバのみ)サーバはこのリクエストをP2Pモードサーバに転送しようとしましたが、接続に失敗しました。
|
||||
- `invalid_API_version` - サーバはリクエストの[APIバージョン番号](request-formatting.md#apiのバージョン管理)をサポートしていません。
|
||||
- `jsonInvalid` -(WebSocketのみ)リクエストは適切なJSONオブジェクトではありません。
|
||||
- この場合JSON-RPCは、代わりに400 Bad Request HTTPエラーを返します。
|
||||
- `missingCommand` -(WebSocketのみ)リクエストに`command`フィールドが指定されていませんでした。
|
||||
- この場合JSON-RPCは、代わりに400 Bad Request HTTPエラーを返します。
|
||||
- `noClosed` - サーバに閉鎖済みレジャーがありません。通常、このエラーは起動が完了していないことが原因で発生します。
|
||||
- `noCurrent` - 高い負荷、ネットワークの問題、バリデータ障害、誤った構成、またはその他の問題が原因で、サーバが現行のレジャーを認識できません。
|
||||
- `noNetwork` - サーバとXRP Ledgerピアツーピアネットワークのその他の部分との接続で問題が発生しています(サーバがスタンドアロンモードで実行されていません)。
|
||||
- `unknownCmd` - リクエストに、`rippled`サーバが認識する[コマンド](../index.md)が含まれていません。
|
||||
- `tooBusy` - サーバの負荷が高すぎるため、現在このコマンドを実行できません。管理者として接続している場合は、通常このエラーが返されることはありません。
|
||||
- `wsTextRequired` -(WebSocketのみ)リクエストの[opcode](https://tools.ietf.org/html/rfc6455#section-5.2)がテキストではありません。
|
||||
|
||||
|
||||
{% raw-partial file="/docs/_snippets/common-links.md" /%}
|
||||
@@ -0,0 +1,16 @@
|
||||
---
|
||||
html: api-conventions.html
|
||||
parent: http-websocket-apis.html
|
||||
seo:
|
||||
description: rippled APIのデータ型とフォーマットについて説明します。
|
||||
metadata:
|
||||
indexPage: true
|
||||
---
|
||||
# APIの規則
|
||||
|
||||
このセクションでは、JSON-RPCおよびWebSocketインターフェイスを含む`rippled` APIのデータ型とフォーマットについて説明します。
|
||||
|
||||
これらのデータ型の一部は、[Data API](../../data-api.md)を含む、より高度なAPIにも使用されます。
|
||||
|
||||
|
||||
{% child-pages /%}
|
||||
@@ -0,0 +1,11 @@
|
||||
---
|
||||
html: markers-and-pagination.html
|
||||
parent: api-conventions.html
|
||||
seo:
|
||||
description: 大きなクエリを複数のレスポンスにページネーションする際の慣例です。
|
||||
---
|
||||
# マーカーとページネーション
|
||||
|
||||
一部のメソッドから返されるデータは、1つのレスポンスに実質的に収まらないことがあります。結果全体が収まらない場合、レスポンスには`marker`フィールドが含まれます。このフィールドを使用することで、複数回の呼出しを通じてデータのページをさらに取得できます。各リクエストで直前のレスポンスの`marker`値を渡して、終わったところから再開します。レスポンスに`marker`が含まれていなければ、データセットの終わりに達しています。
|
||||
|
||||
`marker`フィールドのフォーマットは意図的に未定義になっています。各サーバで`marker`をそれぞれに合わせて定義できるので、このフィールドの形式は文字列、ネストオブジェクトなどさまざまです。異なるサーバ、または同じサーバの異なるメソッドでは、異なる`marker`定義を使用できます。各`marker`は一時的であり、10分以上経過すると予期されているとおりに機能しなくなることがあります。
|
||||
@@ -0,0 +1,67 @@
|
||||
---
|
||||
html: rate-limiting.html
|
||||
parent: api-conventions.html
|
||||
seo:
|
||||
description: パブリックAPIがどのようにクライアントのリクエスト数を制限しているかについての説明です。
|
||||
labels:
|
||||
- コアサーバ
|
||||
---
|
||||
# レート制限
|
||||
|
||||
`rippled`サーバはAPIクライアントが公開APIにリクエストできるレートを制限できます。レート制限はクライアントのIPアドレスに基づいて行われるため、[ネットワークアドレス変換](https://ja.wikipedia.org/wiki/ネットワークアドレス変換)の背後にいるクライアントは公開IPアドレスに基づく制限を共有します。
|
||||
|
||||
{% admonition type="success" name="ヒント" %}レート制限は、クライアントが[管理者](../../../tutorials/http-websocket-apis/build-apps/get-started.md#管理者アクセス権限)として接続されているときには適用されません{% /admonition %}
|
||||
|
||||
クライアントがレート制限に近づいている場合、サーバは[APIレスポンス](response-formatting.md)のトップレベルにフィールド`"warning": "load"`というフィールドを[APIレスポンス](response-formatting.md)のトップレベルに追加します。この警告はすべてのレスポンスに追加されるわけではありませんが、サーバはクライアントを切断する前に何度かこのような警告を送ることがあります。
|
||||
|
||||
クライアントがレート制限を超えると、サーバはそのクライアントを切断し、しばらくの間、クライアントのAPIアドレスからのリクエストを受け付けません。WebSocket APIとJSON-RPC APIでは、異なる切断メッセージを使用します。
|
||||
|
||||
## WebSocket APIの切断メッセージ
|
||||
|
||||
WebSocket APIの場合、サーバは接続を閉じ、切断メッセージとコードを提供します。これらのメッセージにアクセスする方法は、WebSocket クライアントの実装に依存します。例えば、[Node.js ws ライブラリ](https://github.com/websockets/ws)を使用する場合、次のコードは切断時に切断理由を表示します。
|
||||
|
||||
```js
|
||||
const WebSocket = require('ws')
|
||||
const ws = new WebSocket('ws://localhost:6007/')
|
||||
ws.on('close', (code,reason) => {
|
||||
console.log("Disconnected. \ncode: ", code, "\nreason: ", reason)
|
||||
})
|
||||
|
||||
// If rate limited, prints:
|
||||
// Disconnected.
|
||||
// code: 1008
|
||||
// reason: threshold exceeded
|
||||
```
|
||||
|
||||
レート制限のために接続が切断された場合、切断コードは`1008`で、切断メッセージは`threshold exceeded`という文字列になります。
|
||||
|
||||
## JSON-RPCのレート制限エラー
|
||||
|
||||
JSON-RPC APIリクエストの場合、クライアントがレート制限を超えると、サーバはHTTPステータスコード**503 Service Unavailable**でレスポンスします。このレスポンスには、サーバに負荷がかかっていることを示すテキスト(JSONではありません)の本文が含まれます。
|
||||
|
||||
```text
|
||||
503 Service Unavailable
|
||||
|
||||
Server is overloaded
|
||||
```
|
||||
|
||||
## リクエストあたりのレート
|
||||
[[ソース]](https://github.com/XRPLF/rippled/blob/master/src/ripple/resource/Fees.h "ソース")
|
||||
|
||||
サーバは時間の経過とともに行われるリクエストの数に基づいてクライアントの使用率を計算し、サーバがリクエストにレスポンスするためにどれだけの作業をしなければならないかに基づいて、異なるタイプのリクエストに重みをつけます。[subscribeメソッド][]と[path_findメソッド][]に対するサーバからの後続メッセージもクライアントの使用率にカウントされます。
|
||||
|
||||
使用率は時間とともに指数関数的に低下するため、リクエストを自動的に行わないクライアントは、数秒から数分後にアクセスが回復します。
|
||||
|
||||
## 関連項目
|
||||
|
||||
- **コンセプト:**
|
||||
- [`rippled`サーバ](../../../concepts/networks-and-servers/index.md)
|
||||
- [ソフトウェアエコシステム](../../../introduction/software-ecosystem.md)
|
||||
- **チュートリアル:**
|
||||
- [XRP Ledger APIの使用開始](../../../tutorials/http-websocket-apis/build-apps/get-started.md)
|
||||
- [rippledのトラブルシューティング](../../../infrastructure/troubleshooting/index.md)
|
||||
- **リファレンス:**
|
||||
- [rippled APIリファレンス](../index.md)
|
||||
- [エラーのフォーマット](error-formatting.md)
|
||||
|
||||
{% raw-partial file="/docs/_snippets/common-links.md" /%}
|
||||
@@ -0,0 +1,140 @@
|
||||
---
|
||||
html: request-formatting.html
|
||||
parent: api-conventions.html
|
||||
seo:
|
||||
description: WebSocket、JSON-RPC、コマンドラインインターフェイスの標準のリクエストのフォーマットと例です。
|
||||
---
|
||||
# リクエストのフォーマット
|
||||
|
||||
## リクエストの例
|
||||
|
||||
{% tabs %}
|
||||
|
||||
{% tab label="WebSocket" %}
|
||||
```json
|
||||
{
|
||||
"id": 2,
|
||||
"command": "account_info",
|
||||
"account": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59",
|
||||
"strict": true,
|
||||
"ledger_index": "validated",
|
||||
"api_version": 1
|
||||
}
|
||||
```
|
||||
{% /tab %}
|
||||
|
||||
{% tab label="JSON-RPC" %}
|
||||
```json
|
||||
POST http://s1.ripple.com:51234/
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"method": "account_info",
|
||||
"params": [
|
||||
{
|
||||
"account": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59",
|
||||
"strict": true,
|
||||
"ledger_index": "validated",
|
||||
"api_version": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
{% /tab %}
|
||||
|
||||
{% tab label="コマンドライン" %}
|
||||
```sh
|
||||
rippled account_info r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59 validated strict
|
||||
```
|
||||
{% /tab %}
|
||||
|
||||
{% /tabs %}
|
||||
|
||||
|
||||
## WebSocketフォーマット
|
||||
|
||||
`rippled`サーバへのWebSocketを開いた後、以下のフィールドを使用して、コマンドを[JSON](https://ja.wikipedia.org/wiki/JSON)オブジェクトとして送信できます。
|
||||
|
||||
| フィールド | 型 | 説明 |
|
||||
|:--------------------|:----------|:-------------------------------------------|
|
||||
| `command` | 文字列 | [APIメソッド](../public-api-methods/index.md)の名前。 |
|
||||
| `id` | (多種) | _(省略可)_ リクエストを識別するための一意な値。このリクエストに対するレスポンスも同じ `id` フィールドを使用します。これにより、レスポンスが順番通りに返ってこない場合でも、どのリクエストがどのレスポンスを返したのかを知ることができます。 |
|
||||
| `api_version` | 数値 | _(省略可)_ 使用するAPIのバージョン。省略時はバージョン1を使用します。詳細については、[APIのバージョン管理](#api-versioning)をご覧ください。 |
|
||||
| (メソッドのパラメータ) | (多種) | トップレベルのメソッドに任意のパラメータを指定します。 |
|
||||
|
||||
サーバからのレスポンスについては[レスポンスのフォーマット](response-formatting.md)をご覧ください。
|
||||
|
||||
## JSON-RPCフォーマット
|
||||
|
||||
JSON-RPCリクエストを実行するには、`rippled`サーバがJSON-RPC接続をリッスンしているポートおよびIPで、HTTP **POST**リクエストをルートパス(`/`)に送信します。HTTP/1.0またはHTTP/1.1を使用できます。HTTPSを使用する場合は、TLS v1.2を使用してください。セキュリティ上の理由から、`rippled`ではSSL v3以前を _サポートしていません_ 。
|
||||
|
||||
`Content-Type`ヘッダ(値`application/json`)を常に指定してください。
|
||||
|
||||
複数のリクエストを実行する場合は、リクエスト間で再接続を行わずに済むように、[Keep-Alives](http://tools.ietf.org/html/rfc7230#section-6.3)を使用してください。
|
||||
|
||||
以下のフィールドを指定したリクエストボディを[JSON](https://en.wikipedia.org/wiki/JSON)オブジェクトとして送信します。
|
||||
|
||||
|
||||
| フィールド | 型 | 説明 |
|
||||
|:--------------------|:----------|:-------------------------------------------|
|
||||
| `method` | 文字列 | [APIメソッド](../public-api-methods/index.md)の名前。 |
|
||||
| `params` | 配列 | _(省略可)_ このメソッドのパラメータを持つネストされたJSONオブジェクトを含む**一要素の配列**。メソッドがパラメータを必要としない場合は、このフィールドを省略できます。 |
|
||||
|
||||
`params`配列内のオブジェクトには以下のフィールドを含めることができます。
|
||||
|
||||
| フィールド | 型 | 説明 |
|
||||
|:--------------------|:----------|:-------------------------------------------|
|
||||
| `api_version` | 数値 | _(省略可)_ 使用するAPIのバージョン。省略時はバージョン1を使用します。詳細については、[APIのバージョン管理](#api-versioning)をご覧ください。 |
|
||||
| (Method Parameters) | (多種) | メソッドで利用する任意のパラメータ。 |
|
||||
|
||||
サーバからのレスポンスについては[レスポンスのフォーマット](response-formatting.md)をご覧ください。
|
||||
|
||||
## コマンドライン形式
|
||||
|
||||
APIのメソッド名は、通常の(ダッシュで始まる)コマンドラインオプションの後に、スペースで区切られた一部のパラメータを続けて指定します。スペースやその他の特殊文字を含む可能性のあるパラメータ値については、シングルクォートで囲んでください。すべてのメソッドがコマンドラインAPI構文を持っているわけではありません。詳しくは、[コマンドラインの使い方](../../../infrastructure/commandline-usage.md#client-mode-options)をご覧ください。
|
||||
|
||||
コマンドラインはJSON-RPCを呼び出すため、そのレスポンスは常にJSON-RPCの[レスポンスのフォーマット](response-formatting.md)と一致します。
|
||||
|
||||
コマンドラインは常に最新の[APIバージョン](#api-versioning)を使用します。
|
||||
|
||||
{% admonition type="warning" name="注意" %}コマンドラインインターフェイスは管理目的でのみ使用することを意図しており、_サポートされているAPIではありません_です。新しいバージョンの`rippled`では、警告なしにコマンドラインAPIに破壊的な変更が導入される可能性があります!{% /admonition %}
|
||||
|
||||
|
||||
## APIのバージョン管理
|
||||
|
||||
`rippled`サーバは、使用するAPIバージョンを識別するために単一の整数を使用します。現在、`1`と`2`{% badge href="https://github.com/XRPLF/rippled/releases/tag/2.0.0" %}新規: rippled 2.0.0{% /badge %}の2つのAPIバージョンがあります。サーバは`version`APIメソッドでサポートされるAPIバージョンの範囲を報告します。<!-- TODO: add a link when `version` method is documented. -->
|
||||
|
||||
それぞれのAPIバージョンは、破壊的な変更が導入されるときに新しいAPIバージョン番号を導入します。プレリリースやベータ、開発バージョンでは、同じAPIバージョン番号で破壊的な変更を導入することがあり、`account_tx`リクエストを使用してAPIバージョン2を使用し、同じ接続でAPIバージョン1を使用して別の`account_tx`リクエストを行うことができます。
|
||||
|
||||
将来の`rippled`のバージョンで破壊的な変更が導入されると、新しいAPIバージョン3が導入されます。
|
||||
|
||||
|
||||
### 破壊的変更
|
||||
|
||||
次の種類の変更は**破壊的変更**です。
|
||||
|
||||
- リクエストやレスポンスのフィールドの削除や名前の変更
|
||||
- リクエストやレスポンスのフィールドの型の変更
|
||||
- リクエストやレスポンスのフィールドの意味の変更
|
||||
- リクエストやレスポンスのフィールドの位置の変更、または他のリクエストやレスポンスのフィールドの前への新しいフィールドの追加
|
||||
- APIメソッドの削除や名前の変更
|
||||
- 既存のクライアントから確認できるAPI関数の動作の変更
|
||||
- 次の種類の変更は、gRPC APIにのみ適用されます。
|
||||
- `proto`フィールド番号の変更
|
||||
- 列挙型または列挙型値の削除または名前の変更
|
||||
- `oneof`からのフィールドの追加または削除
|
||||
- `oneof`の分割または統合
|
||||
- メッセージフィールドが`optional`、`repeated`、または`required`であるかの変更
|
||||
- リクエストまたはレスポンスのストリーム値の変更
|
||||
- パッケージまたはサービスの削除または名前の変更
|
||||
|
||||
フルリリースで破壊的変更が加えられると、新しいAPIバージョン番号が導入されます。プレリリース版、ベータ版、開発版では、同じAPIバージョン番号に変更を加えることがあります。
|
||||
|
||||
### 非破壊的変更
|
||||
|
||||
次の種類の変更は**非破壊的変更**であり、APIバージョン番号の変更なしに発生する可能性があります。
|
||||
|
||||
- パラメータの位置の変更を含まない、新しいフィールドの追加
|
||||
- 新しいAPIメソッドの追加
|
||||
|
||||
{% raw-partial file="/docs/_snippets/common-links.md" /%}
|
||||
@@ -0,0 +1,198 @@
|
||||
---
|
||||
html: response-formatting.html
|
||||
parent: api-conventions.html
|
||||
seo:
|
||||
description: WebSocket、JSON-RPC、コマンドラインインターフェイスのレスポンスのフォーマットとそのレスポンスに含まれるフィールド。
|
||||
---
|
||||
# レスポンスのフォーマット
|
||||
|
||||
`rippled`APIからのレスポンスのフォーマットは、メソッドが呼び出されたインターフェイス(WebSocket、JSON-RPC、コマンドライン)に応じて多少異なります。コマンドラインインターフェイスがJSON-RPCを呼び出すため、コマンドラインインターフェイスとJSON-RPCインターフェイスは同じフォーマットを使用します。
|
||||
|
||||
成功した場合のレスポンスに含まれるフィールドは、以下の通りです。
|
||||
|
||||
| `Field` | 型 | 説明 |
|
||||
|:----------------|:-----------|:------------------------------------------------|
|
||||
| `id` | (場合により異なる) | (WebSocketのみ)このレスポンスのリクエスト元となったリクエストで指定されているID。 |
|
||||
| `status` | 文字列 | (WebSocketのみ)値が`success`である場合、リクエストがサーバによって正常に受信され、理解されたことを示します。 |
|
||||
| `result.status` | 文字列 | (JSON-RPCおよびコマンドライン)値が`success`である場合、リクエストがサーバによって正常に受信され、理解されたことを示します。 |
|
||||
| `type` | 文字列 | (WebSocketのみ)値が`response`の場合、コマンドに対する正常なレスポンスであることを示します。[非同期の通知](../public-api-methods/subscription-methods/subscribe.md)では、`ledgerClosed`や`transaction`など異なる値が使用されます。 |
|
||||
| `result` | オブジェクト | クエリーの結果。内容はコマンドによって異なります。 |
|
||||
| `warning` | 文字列 | _(省略可)_ このフィールドが存在する場合、値は文字列`load`です。これはクライアントがサーバがこのクライアントを切断する[レートリミット](rate-limiting.md)の閾値に近づいていることを意味します。 |
|
||||
| `warnings` | 配列 | _(省略可)_ このフィールドが存在する場合、重要な警告を含む1つ以上の**Warningsオブジェクト**が含まれます。詳細については、[API警告](#apiの警告)をご覧ください。 |
|
||||
| `forwarded` | 真偽値 | _(省略可)_ `true`の場合、このリクエストとレスポンスは[レポートモード][]サーバからP2Pモードサーバに転送されます。デフォルトは`false`です。 |
|
||||
|
||||
|
||||
## 成功した場合のレスポンスの例
|
||||
|
||||
{% tabs %}
|
||||
|
||||
{% tab label="WebSocket" %}
|
||||
```json
|
||||
{
|
||||
"id": 2,
|
||||
"status": "success",
|
||||
"type": "response",
|
||||
"result": {
|
||||
"account_data": {
|
||||
"Account": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59",
|
||||
"Balance": "27389517749",
|
||||
"Flags": 0,
|
||||
"LedgerEntryType": "AccountRoot",
|
||||
"OwnerCount": 18,
|
||||
"PreviousTxnID": "B6B410172C0B65575D89E464AF5B99937CC568822929ABF87DA75CBD11911932",
|
||||
"PreviousTxnLgrSeq": 6592159,
|
||||
"Sequence": 1400,
|
||||
"index": "4F83A2CF7E70F77F79A307E6A472BFC2585B806A70833CCD1C26105BAE0D6E05"
|
||||
},
|
||||
"ledger_index": 6760970
|
||||
}
|
||||
}
|
||||
```
|
||||
{% /tab %}
|
||||
|
||||
{% tab label="JSON-RPC" %}
|
||||
```json
|
||||
HTTP Status: 200 OK
|
||||
|
||||
{
|
||||
"result": {
|
||||
"account_data": {
|
||||
"Account": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59",
|
||||
"Balance": "27389517749",
|
||||
"Flags": 0,
|
||||
"LedgerEntryType": "AccountRoot",
|
||||
"OwnerCount": 18,
|
||||
"PreviousTxnID": "B6B410172C0B65575D89E464AF5B99937CC568822929ABF87DA75CBD11911932",
|
||||
"PreviousTxnLgrSeq": 6592159,
|
||||
"Sequence": 1400,
|
||||
"index": "4F83A2CF7E70F77F79A307E6A472BFC2585B806A70833CCD1C26105BAE0D6E05"
|
||||
},
|
||||
"ledger_index": 6761012,
|
||||
"status": "success"
|
||||
}
|
||||
}
|
||||
```
|
||||
{% /tab %}
|
||||
|
||||
{% tab label="コマンドライン" %}
|
||||
```json
|
||||
{
|
||||
"result": {
|
||||
"account_data": {
|
||||
"Account": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59",
|
||||
"Balance": "27389517749",
|
||||
"Flags": 0,
|
||||
"LedgerEntryType": "AccountRoot",
|
||||
"OwnerCount": 18,
|
||||
"PreviousTxnID": "B6B410172C0B65575D89E464AF5B99937CC568822929ABF87DA75CBD11911932",
|
||||
"PreviousTxnLgrSeq": 6592159,
|
||||
"Sequence": 1400,
|
||||
"index": "4F83A2CF7E70F77F79A307E6A472BFC2585B806A70833CCD1C26105BAE0D6E05"
|
||||
},
|
||||
"ledger_index": 6761012,
|
||||
"status": "success"
|
||||
}
|
||||
}
|
||||
```
|
||||
{% /tab %}
|
||||
|
||||
{% /tabs %}
|
||||
|
||||
|
||||
## APIの警告
|
||||
|
||||
レスポンスに`warnings`の配列が含まれる場合、その配列の各要素はサーバからの個別の警告を表します。このような**警告オブジェクト**はそれぞれ以下のフィールドを含みます:
|
||||
|
||||
| フィールド | 型 | 説明 |
|
||||
|:----------|:-----------|:--------------------------------------------------------|
|
||||
| `id` | 数値 | この警告メッセージの一意の数値コード。 |
|
||||
| `message` | 文字列 | このメッセージの原因を説明する人間が読める文字列。このメッセージの内容に依存するようなソフトウェアを書かないでください。代わりに`id`(および`details`(もしあれば))を使って警告を識別してください。 |
|
||||
| `details` | オブジェクト | _(省略可)_ この警告に関する追加情報。内容は警告の種類によって異なります。 |
|
||||
|
||||
以下の資料では、考えられるすべての警告について説明しています。
|
||||
|
||||
### 1001. Unsupported amendments have reached majority
|
||||
|
||||
警告の例:
|
||||
|
||||
```json
|
||||
"warnings" : [
|
||||
{
|
||||
"details" : {
|
||||
"expected_date" : 864030,
|
||||
"expected_date_UTC" : "2000-Jan-11 00:00:30.0000000 UTC"
|
||||
},
|
||||
"id" : 1001,
|
||||
"message" : "One or more unsupported amendments have reached majority. Upgrade to the latest version before they are activated to avoid being amendment blocked."
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
この警告は、XRP Ledgerプロトコルの1つ以上の[Amendment](../../../concepts/networks-and-servers/amendments.md)が有効になる予定であるが、現在のサーバにはそれらのAmendmentの実装がないことを示しています。これらのAmendmentが有効になると、現在のサーバは[Amendmentブロック](../../../concepts/networks-and-servers/amendments.md#amendment-blocked-servers)されるため、できるだけ早く[最新の`rippled`バージョンにアップグレード](../../../infrastructure/installation/index.md)する必要があります。
|
||||
|
||||
サーバは、この警告を送信するのは、クライアントが[管理者として接続している](../../../tutorials/http-websocket-apis/build-apps/get-started.md#admin-access)場合のみです。
|
||||
|
||||
この警告には、以下のフィールドを含む`details`フィールドが含まれます。
|
||||
|
||||
| フィールド | 型 | 説明 |
|
||||
|:--------------------|:-------|:----------------------------------------------|
|
||||
| `expected_date` | 数値 | サポートされていない最初のAmendmentが有効になると予想される時刻([リップルエポックからの秒数][])。|
|
||||
| `expected_date_UTC` | 文字列 | サポートされていない最初のAmendmentが有効になると予想される時刻(UTCでのタイムスタンプ)。 |
|
||||
|
||||
レジャーのクローズ時間の変動により、これらはおおよその時刻となります。また、指定された時刻までにAmendmentが80%以上のバリデータからサポートされ続けない場合、Amendmentが有効にならず、期待された時刻にAmendmentが有効にならない可能性があります。サポートされていないAmendmentが有効にならない限り、サーバはAmendmentブロックされません。
|
||||
|
||||
|
||||
### 1002. This server is amendment blocked
|
||||
|
||||
警告の例:
|
||||
|
||||
```json
|
||||
"warnings" : [
|
||||
{
|
||||
"id" : 1002,
|
||||
"message" : "This server is amendment blocked, and must be updated to be able to stay in sync with the network."
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
この警告は、サーバが[Amendmentブロック](../../../concepts/networks-and-servers/amendments.md)され、同期を取ることができなくなったことを示しています。
|
||||
|
||||
サーバの管理者は、アクティブ化されたAmendmentをサポートするバージョンに[`rippled`をアップグレード](../../../infrastructure/installation/index.md)する必要があります。
|
||||
|
||||
### 1003. This is a reporting server
|
||||
|
||||
警告の例:
|
||||
|
||||
```json
|
||||
"warnings" : [
|
||||
{
|
||||
"id" : 1003,
|
||||
"message" : "This is a reporting server. The default behavior of a reporting server is to only return validated data. If you are looking for not yet validated data, include \"ledger_index : current\" in your request, which will cause this server to forward the request to a p2p node. If the forward is successful the response will include \"forwarded\" : \"true\""
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
この警告は、リクエストに応答するサーバが[レポートモード][]で実行されていることを示しています。レポートモードはピアツーピアネットワークに接続せず、まだ検証されていないレジャーデータを追跡しないため、一部のAPIメソッドが利用できないか、異なる動作をすることがあります。
|
||||
|
||||
一般的に、この警告は無視しても安全です。
|
||||
|
||||
{% admonition type="warning" name="注意" %}レポートモードで検証されていないデータをリクエストする場合、明示的に[レジャーバージョンを指定][レジャーの指定]しない限り、レポートモードはデフォルトで最新の検証済みレジャーを使用します。{% /admonition %}
|
||||
|
||||
|
||||
## 関連項目
|
||||
|
||||
- [リクエストのフォーマット](request-formatting.md)
|
||||
- [エラーのフォーマット](error-formatting.md): APIレスポンスの失敗
|
||||
- **コンセプト:**
|
||||
- [`rippled`サーバ](../../../concepts/networks-and-servers/index.md)
|
||||
- [コンセンサス](../../../concepts/consensus-protocol/index.md)
|
||||
- [Amendment](../../../concepts/networks-and-servers/amendments.md)
|
||||
- [既知のAmendment](/resources/known-amendments.md)
|
||||
- **チュートリアル:**
|
||||
- [XRP LedgerのAPIを触ってみよう](../../../tutorials/http-websocket-apis/build-apps/get-started.md)
|
||||
- [`rippled`のインストールと更新](../../../infrastructure/installation/index.md)
|
||||
- **リファレンス:**
|
||||
- [featureメソッド][]
|
||||
- [server_infoメソッド][]
|
||||
|
||||
{% raw-partial file="/docs/_snippets/common-links.md" /%}
|
||||
@@ -0,0 +1,25 @@
|
||||
---
|
||||
html: rippled-server-states.html
|
||||
parent: api-conventions.html
|
||||
seo:
|
||||
description: 一部のAPIメソッドで報告される状態情報の定義です。
|
||||
labels:
|
||||
- コアサーバ
|
||||
---
|
||||
# rippledサーバの状態
|
||||
|
||||
`rippled`サーバの設定、稼働時間、その他の要素により、サーバがグローバルなXRP Ledgerピアツーピアネットワークに参加する度合いは異なります。これは、[server_infoメソッド][]と[server_stateメソッド][]へのレスポンス内の`server_state`フィールドに示されます。レスポンスは昇順のやり取りに従い、後の値は前の値より優先されます。これらのレスポンスの定義を以下に示します(優先順位の高い順)。
|
||||
|
||||
| `Value` | 説明 |
|
||||
|:---------------|:------------------------------------------------------------|
|
||||
| `disconnected` | サーバはXRP Ledgerピアツーピアネットワークにまったく接続されていません。オフラインモードで稼働しているか、何らかの理由でネットワークにアクセスできない可能性があります。 |
|
||||
| `connected` | サーバはネットワークに接続されていると考えられます。 |
|
||||
| `syncing` | サーバは現在、レジャーバージョンの状態に追いついていません。(通常、サーバが始動後に最新状態になるまで数分かかります。) |
|
||||
| `tracking` | サーバはネットワークに接続しています。 |
|
||||
| `full` | サーバはネットワークに完全に組み込まれ、検証にも参加できますが、参加していません(検証者として設定されていないことが原因と考えられます)。 |
|
||||
| `validating` | サーバは現在、レジャーの検証に参加しています。 |
|
||||
| `proposing` | サーバはレジャーの検証に参加しており、現在、自身のバージョンを提案中です。 |
|
||||
|
||||
{% admonition type="info" name="注記" %}`full`、`validating`、`proposing`の区別は、グローバルネットワークの他者との同期の状況に基づいていますが、通常サーバの上記の状態は一般的なオペレーションの中で変動します。{% /admonition %}
|
||||
|
||||
{% raw-partial file="/docs/_snippets/common-links.md" /%}
|
||||
Reference in New Issue
Block a user