diff --git a/content/concepts/payment-system-basics/accounts/tickets.ja.md b/content/concepts/payment-system-basics/accounts/tickets.ja.md new file mode 100644 index 0000000000..62c052ad8a --- /dev/null +++ b/content/concepts/payment-system-basics/accounts/tickets.ja.md @@ -0,0 +1,75 @@ +--- +html: tickets.html +parent: accounts.html +blurb: トランザクションを非連続的な順序で送信する +labels: + - アカウント + - トランザクション送信 +--- +# Ticket + +_([TicketBatch amendment][]が必要です。)_ + +XRP Ledgerのチケットは、取引をすぐに送信せずに、その取引のために[シーケンス番号][Sequence Number]を確保する方法です。チケットを使うことで、通常の順序以外で取引を送信することができます。この使用例としては、必要な署名を集めるのに時間がかかるような[マルチサイン取引](multi-signing.html)などが挙げられます。 + +## 背景 + +[トランザクション](transaction-basics.html)にはシーケンス番号が付いているので、任意のトランザクションを2回以上実行することはできません。シーケンス番号はまた、任意のトランザクションが一意であることを保証します。全く同じ金額を同じ人に複数回送信する場合、シーケンス番号は毎回異なることが保証される1つの詳細です。最後に、シーケンス番号は、ネットワーク全体に送信される際に一部のトランザクションが順不同で届いたとしても、トランザクションを一貫した順序で並べるためのエレガントな方法を提供します。 + +しかし、シーケンス番号では限界がある場合もあります。たとえば、次のような場合です。 + +- 2人以上のユーザーがアカウントへのアクセスを共有し、それぞれが独立してトランザクションを送信することができる状態。これらのユーザーが事前に調整することなく同時期に取引を送信しようとすると、それぞれが同じシーケンス番号を異なる取引に使用しようとする可能性があり、成功するのは1人だけです。 +- トランザクションを事前に準備して署名し、安全な場所に保存しておいて、特定のイベントが発生したときにいつでも実行できるようにしておきたい場合があります。しかし、その間も通常通りにアカウントを使用したい場合、準備しておくトランザクションに使用するシーケンス番号がわかりません。 +- トランザクションを有効にするために[複数人が署名しなければならない](multi-signing.html)場合、一度に複数のトランザクションを計画するのは難しいでしょう。トランザクションに別々のシーケンス番号をつけると、全員が前のトランザクションに署名するまで、後の番号のトランザクションを送信することができません。しかし、保留中のトランザクションに同じシーケンス番号を使用すると、1つのトランザクションのみ成功します。 + +チケットでは、これらの問題を解決するために、通常の順番とは別に、後からでも(ただし、それぞれ1回まで)使用可能なシーケンス番号を用意しています。 + + +## チケットは予約済みのシーケンス番号 + +チケットとは、あるシーケンス番号が後に使用されるために確保されたという記録です。アカウントは、まず[TicketCreate トランザクション][]を送信して、1つまたは複数のシーケンス番号をチケットとして確保します。これにより、[台帳の状態データ](ledgers.html)に、予約された各シーケンス番号について[Ticket オブジェクト][]の形で記録が残されます。 + +チケットには、チケット作成時に設定されたシーケンス番号が使用されます。例えば、あなたのアカウントの現在のシーケンス番号が101で、3枚のチケットを作成した場合、それらのチケットにはチケットシーケンス番号102、103、104が付けられます。これにより、あなたのアカウントのシーケンス番号は105になります。 + +{{ include_svg("img/ticket-creation.svg", "Diagram: Creating three Tickets") }} + +後から、シーケンス番号の代わりに特定のチケットを使用してトランザクションを送信することができます。これにより、元帳の状態データから対応するチケットが削除され、アカウントの通常のシーケンス番号は変更されません。また、チケットを使用せずに、通常のシーケンス番号を使用してトランザクションを送信することもできます。利用可能なチケットは、いつでもどのような順番でも使用できますが、各チケットは1回しか使用できません。 + +{{ include_svg("img/ticket-usage.svg", "Diagram: Using Ticket 103.") }} + +上記の例では、シーケンス番号105または作成した3つのチケットのいずれかを使用してトランザクションを送信できます。チケット103を使ってトランザクションを送信すると、それによってチケット103は元帳から削除されます。その後の次のトランザクションでは、シーケンス番号105、チケット102、またはチケット104を使用できます。 + +**注意:** チケットは1枚ごとに[所有者準備金](reserves.html#所有者準備金)としてカウントされますので、チケット1枚につき2XRPを確保する必要があります。 (このXRPは、チケットを使用した後に再び使用可能になります)一度に多くのチケットを作成すると、このコストはすぐに膨れ上がります。 + +シーケンス番号と同様に、トランザクションの送信は、そのトランザクションが[コンセンサス](consensus.html)によって確認された場合にのみ、チケットを使用します。しかし、意図した通りにならなかった取引でも、[`tec`クラスの結果コード](tec-codes.html)を用いてコンセンサスで確認することができます。 + +あるアカウントで利用可能なチケットを調べるには、[account_objects メソッド][]を使用します。 + +## 制約事項 + +どのアカウントでも、どのような種類の取引でもチケットを作成し、使用することができます。ただし、いくつかの制限があります。 + +- 各チケットは一度しか使用できません。同じチケットシーケンスを使用する複数の異なるトランザクション候補があることは可能ですが、コンセンサスで検証できるのはそのうちの1つだけです。 +- 各アカウントでは、一度に250枚以上のチケットをレジャーに登録することはできません。また、一度に250枚以上のチケットを作成することもできません。 +- チケットを使って別のチケットを作ることは_できます_。その場合、使用したチケットは、一度に所持できるチケットの合計数にはカウントされません。 +- 各チケットは[所有者準備金](eserves.html#所有者準備金)にカウントされるため、まだ使用していないチケット1枚につき2XRPを確保する必要があります。このXRPは、チケットを使用した後、再び使用することができます。 +- 個々の元帳の中では、チケットを使用した取引は、同じ送信者からの他の取引の後に実行されます。1つのアカウントが同じ元帳のバージョンでTicketを使用する複数のトランザクションを持つ場合、それらのTicketは最も低いTicket Sequenceから最も高いTicket Sequenceの順に実行されます。 (詳細については、コンセンサスの[正規順序](consensus.html#xrp-ledgerプロトコル-コンセンサスと検証)に関するドキュメントを参照してください)。 +- 個々の元帳の中では、チケットを使用した取引は、同じ送信者からの他の取引の後に実行されます。1つのアカウントが同じ元帳のバージョンでチケットを使用する複数のトランザクションを持つ場合、それらのチケットは最も低いチケット シーケンス番号から最も高いチケット シーケンス番号の順に実行されます。 (詳細については、コンセンサスの[正規順序](consensus.html#xrp-ledgerプロトコル-コンセンサスと検証)に関するドキュメントを参照してください)。 + +## 関連項目 + + +- **Concepts:** + - [マルチ署名](multi-signing.html) +- **Tutorials:** + - [チケットを使用する](use-tickets.html) +- **References:** + - [TicketCreate トランザクション][] + - [トランザクションの共通フィールド](transaction-common-fields.html) + - [Ticket オブジェクト](ticket.html) + - [account_objects メソッド][] + + +{% include '_snippets/rippled-api-links.md' %} +{% include '_snippets/tx-type-links.md' %} +{% include '_snippets/rippled_versions.md' %} diff --git a/content/references/protocol-reference/ledger-data/ledger-object-types/ticket.ja.md b/content/references/protocol-reference/ledger-data/ledger-object-types/ticket.ja.md new file mode 100644 index 0000000000..3d7b73366f --- /dev/null +++ b/content/references/protocol-reference/ledger-data/ledger-object-types/ticket.ja.md @@ -0,0 +1,55 @@ +--- +html: ticket.html +parent: ledger-object-types.html +blurb: チケットは、将来使用するために確保されたアカウントのシーケンス番号を追跡します。 +labels: + - トランザクション送信 +--- +# Ticket + +[[ソース]](https://github.com/ripple/rippled/blob/76a6956138c4ecd156c5c408f136ed3d6ab7d0c1/src/ripple/protocol/impl/LedgerFormats.cpp#L155-L164) + +_([TicketBatch amendment][]が必要です)_ + +`Ticket`オブジェクトタイプは、将来の使用のために確保されたアカウント[シーケンス番号][Sequence Number]を追跡する[Ticket](tickets.html)を表します。[TicketCreate トランザクション][]で新しいチケットを作成することができます。[New in: rippled 1.7.0][]. + +## {{currentpage.name}} JSONの例 + +```json +{ + "Account" : "rEhxGqkqPPSxQ3P25J66ft5TwpzV14k2de", + "Flags" : 0, + "LedgerEntryType" : "Ticket", + "OwnerNode" : "0000000000000000", + "PreviousTxnID" : "F19AD4577212D3BEACA0F75FE1BA1644F2E854D46E8D62E9C95D18E9708CBFB1", + "PreviousTxnLgrSeq" : 4, + "TicketSequence" : 3 +} +``` + +## {{currentpage.name}}フィールド + +`Ticket`オブジェクトのフィールドは次のとおりです。 + +| フィールド | JSONの型 | 内部の型 | 説明 | +|:--------------------|:----------|:--------------|:---------------------------| +| `LedgerEntryType` | 文字列 | UInt16 | 文字列 `Ticket` にマッピングされた値 `0x0054` は、このオブジェクトが {{currentpage.name}} オブジェクトであることを示しています。 | +| `Account` | 文字列 | AccountID | このチケットを所有する[アカウント](accounts.html)です。 | +| `Flags` | Number | UInt32 | ブール値フラグのビットマップ。Ticketにはフラグが定義されていないため、この値は常に0です。 | +| `OwnerNode` | 文字列 | UInt64 | 送金元の所有者ディレクトリが複数ページで構成されている場合に、このオブジェクトにリンクしているページを示すヒントです。注記: このオブジェクトには、オブジェクトを含む所有者ディレクトリへの直接リンクは含まれていません。これは、その値を`Account`から取得できるためです。 | +| `PreviousTxnID` | 文字列 | Hash256 | 最後にこのオブジェクトを変更した[トランザクション](transaction-basics.html)の識別用ハッシュ。 | +| `PreviousTxnLgrSeq` | 数値 | UInt32 | 最後にこのオブジェクトを変更したトランザクションを含む[レジャーインデックス][Ledger Index]。 | +| `TicketSequence` | 数値 | UInt32 | 本チケットが設定する[シーケンス番号][]。 | + +## {{currentpage.name}} IDのフォーマット + +TicketオブジェクトのIDは、以下の値がこの順序で連結されているSHA-512ハーフです + +* Ticketスペースキー (`0x0054`) +* チケットの所有者のアカウントID +* チケットの`TicketSequence` + + +{% include '_snippets/rippled-api-links.md' %} +{% include '_snippets/tx-type-links.md' %} +{% include '_snippets/rippled_versions.md' %} diff --git a/content/references/protocol-reference/transactions/transaction-types/ticketcreate.ja.md b/content/references/protocol-reference/transactions/transaction-types/ticketcreate.ja.md new file mode 100644 index 0000000000..9a6c802283 --- /dev/null +++ b/content/references/protocol-reference/transactions/transaction-types/ticketcreate.ja.md @@ -0,0 +1,52 @@ +--- +html: ticketcreate.html +parent: transaction-types.html +blurb: チケットとして1つ以上のシーケンス番号を確保する。 +labels: + - Transaction Sending +--- +# TicketCreate + +[[ソース]](https://github.com/ripple/rippled/blob/develop/src/ripple/app/tx/impl/CreateTicket.cpp "Source") + +_([TicketBatch amendment][]が必要です)_ + +TicketCreateトランザクションは、1つまたは複数の[シーケンス番号][sequence numbers]を[Tickets](ticket.html)として確保します。 + +## {{currentpage.name}}JSONの例 + +```json +{ + "TransactionType": "TicketCreate", + "Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn", + "Fee": "10", + "Sequence": 381, + "TicketCount": 10 +} +``` + +{% include '_snippets/tx-fields-intro.md' %} + + +| フィールド | JSONの型 | [内部の型][] | 説明 | +|:-----------------|:-----------------|:------------------|:-------------------| +| `TicketCount` | 数値 | UInt32 | 作成するチケットの枚数。これは正の数でなければならず、このトランザクションの実行の結果、アカウントが250枚以上のチケットを所有することはできません。 | + +トランザクションが要求されたチケット_全て_を作成できない場合(250チケットの制限または[所有者準備金](reservices.html)のいずれかが原因)、失敗してチケットは作成されません。アカウントが現在所有しているチケットの数を調べるには、[account_info メソッド][]を使用して、`account_data.TicketCount`フィールドを確認してください。 + +**ヒント:** このトランザクションは、送信アカウントの[シーケンス番号][Sequence Number]を1 _+_ 作成するチケットの数(`TicketCount`)だけ増加させます。この取引は、アカウントのシーケンス番号を1より多く増加させる唯一の取引です。 + +## エラーケース + +すべてのトランザクションで発生する可能性のあるエラーに加えて、{{currentpage.name}}トランザクションでは、次の[トランザクション結果コード](transaction-results.html)が発生する可能性があります。 + +| エラーコード | 説明 | +|:--------------------------|:-------------------------------------------------| +| `temINVALID_COUNT` | TicketCount`フィールドが無効です。1から250までの整数でなければなりません。| +| `tecDIR_FULL` | この取引により、アカウントが一度に所有するチケットの上限である250枚を超えたり、一般的なレジャーオブジェクトの上限数を超えたりすることになります。 | +| `tecINSUFFICIENT_RESERVE` | 送信側のアカウントには、要求されたすべてのチケットの[所有者準備金](reserves.html)を満たすだけのXRPがありません。 | + + +{% include '_snippets/rippled-api-links.md' %} +{% include '_snippets/tx-type-links.md' %} +{% include '_snippets/rippled_versions.md' %} diff --git a/content/tutorials/manage-account-settings/use-tickets.ja.md b/content/tutorials/manage-account-settings/use-tickets.ja.md new file mode 100644 index 0000000000..c30b623959 --- /dev/null +++ b/content/tutorials/manage-account-settings/use-tickets.ja.md @@ -0,0 +1,261 @@ +--- +html: use-tickets.html +parent: manage-account-settings.html +blurb: チケットは、通常のシーケンス順序以外でトランザクションを送信するために使用します。 +embed_xrpl_js: true +filters: + - interactive_steps + - include_code +labels: + - アカウント +--- +# チケットの使用 + +[チケット](ticket.html)は、通常の順序ではないトランザクションを送信する方法を提供します。このチュートリアルでは、チケットを作成し、それを使って別のトランザクションを送信する手順を説明します。 + +## 前提条件 + + + +{% set use_network = "Devnet" %} + +このページでは、[xrpl.js](https://js.xrpl.org/)ライブラリを使用したJavaScriptのサンプルを提供しています。設定方法は、[JavaScriptを使ってみよう](get-started-using-javascript.html)をご覧ください。 + +JavaScriptはWebブラウザ上で動作するため、セットアップなしで読み進められ、インタラクティブな手順を利用することができます。 + + + +## 手順 +{% set n = cycler(* range(1,99)) %} + +このチュートリアルはいくつかの段階に分かれています。 + +- (Steps 1-2) **準備:** XRP Ledgerのアドレスとシークレットが必要です。本番環境では、同じアドレスとシークレットを一貫して使用することができます。このチュートリアルでは、必要に応じて新しいテスト認証情報を生成することができます。また、ネットワークに接続されている必要があります。 +- (Steps 3-6) **チケットの作成:** トランザクションを送信して、いくつかのチケットを確保します。 +- (任意) **休憩:** チケットを作成した後、以下のステップの前、中、後にいつでも様々な他のトランザクションを送信することができます。 +- (Steps 7-10) **チケットの使用:** 設定されているチケットのうち1枚を使ってトランザクションを送信します。使用するチケットが1枚でも残っていれば、前の部分を飛ばしてこの手順を繰り返すことができます。 + +### {{n.next()}}. クレデンシャルの入手 + +XRP Ledgerでトランザクションを送信するには、アドレスと秘密鍵、そしてXRPが必要です。開発用には、[{{use_network}}](parallel-networks.html)で以下のようなインターフェースを使ってこれらを入手することができます。 + +{% include '_snippets/interactive-tutorials/generate-step.md' %} + +[本番環境のソフトウェアを作成する場合](production-readiness.html)には、既存のアカウントを使用し、[安全な署名](set-up-secure-signing.html)を使用して鍵を管理する必要があります。 + + +### {{n.next()}}. ネットワークへの接続 + +トランザクションをネットワークに送信するには、ネットワークに接続している必要があります。チケットは今のところDevnetでしか利用できないので、Devnetサーバーに接続する必要があります。例えば、以下のようになります。 + + + +_JavaScript_ + +{{ include_code("_code-samples/use-tickets/js/use-tickets.js", language="js", start_with="// Connect to", end_before="// Get credentials") }} + + + +**注記:** このチュートリアルのコードサンプルでは、JavaScriptの[`async`/`await`パターン](https://javascript.info/async-await)を使用しています。`await`は`async`関数の中で使用する必要があるため、残りのコードサンプルはここから始まる`main()`関数の中で続けるように書かれています。なお、`async`/`await`の代わりにPromiseのメソッド`.then()`や`.catch()`を使うこともできます。 + +このチュートリアルでは、以下のボタンをクリックして接続します。 + +{% include '_snippets/interactive-tutorials/connect-step.md' %} + + +### {{n.next()}}. シーケンス番号の確認 + +チケットを作成する前に、自分のアカウントの[シーケンス番号][]を確認しておきましょう。次のステップのために現在のシーケンス番号が必要であり、設定されるチケットのシーケンス番号はこの番号から始まります。 + + + +_JavaScript_ + +{{ include_code("_code-samples/use-tickets/js/use-tickets.js", language="js", start_with="// Check Sequence", end_before="// Prepare and Sign TicketCreate") }} + + + +{{ start_step("Check Sequence") }} + +
Querying...
Sending...