mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-12-06 17:27:57 +00:00
Create batch pages, Update common-fields.md
This commit is contained in:
161
@l10n/ja/docs/concepts/transactions/batch-transactions.md
Normal file
161
@l10n/ja/docs/concepts/transactions/batch-transactions.md
Normal file
@@ -0,0 +1,161 @@
|
||||
---
|
||||
seo:
|
||||
description: バッチは最大8つのトランザクションを単一のユニットとして送信できます。
|
||||
labels:
|
||||
- Batch
|
||||
- Transactions
|
||||
status: not_enabled
|
||||
---
|
||||
# バッチ
|
||||
|
||||
`Batch`では、複数のトランザクションをまとめてパッケージ化し、単一のユニットとして実行できます。部分的な完了や予期しない結果のリスクを排除し、複雑な操作をより信頼性が高く予測可能な方法で実行できます。1つのバッチで最大8つのトランザクションを送信できます。
|
||||
|
||||
`Batch`の潜在的な使用例は以下の通りです。
|
||||
- 全て成功か全て失敗:NFTをミントして同時にオファーを作成できます。オファー作成が失敗した場合、NFTミントも取り消されます。
|
||||
- 複数のオファーの試行:異なるスリッページ量で複数のオファーを送信しますが、成功するのは1つだけです。
|
||||
- プラットフォーム手数料:プラットフォーム手数料をトランザクション自体に含めることで、プロセスを簡素化できます。
|
||||
- スワップ(マルチアカウント):複数のアカウント間でのトラストレスなトークン/NFTスワップ。
|
||||
- アカウント引き出し(マルチアカウント):当座預金からの引き出しを試行し、失敗した場合は代わりに普通預金から引き出します。
|
||||
|
||||
`Batch`トランザクションは、ラッパーである`Batch`トランザクション自体の_外部トランザクション_と、それぞれがアトミックに実行される_内部トランザクション_で構成されます。内部トランザクションの正確な処理方法は、バッチ_モード_によって決まります。
|
||||
|
||||
## バッチのモード
|
||||
|
||||
`Batch`には4つのモードがあります:`ALLORNOTHING`、`ONLYONE`、`UNTILFAILURE`、`INDEPENDENT`。
|
||||
|
||||
### All or Nothing(全て成功か全て失敗)
|
||||
|
||||
`ALLORNOTHING`モードでは、いずれかのトランザクションが成功するには、全ての内部トランザクションが成功する必要があります。
|
||||
|
||||
### Only One(1つだけ)
|
||||
|
||||
`ONLYONE`モードでは、最初に成功したトランザクションのみが成功します。他の全てのトランザクションは失敗するか、実行されません。
|
||||
|
||||
### Until Failure(失敗まで)
|
||||
|
||||
`UNTILFAILURE`は失敗するまで全てのトランザクションを適用します。最初の失敗後の全てのトランザクションは適用されません。
|
||||
|
||||
### Independent(独立)
|
||||
|
||||
1つ以上の内部トランザクションが失敗しても、全てのトランザクションが適用されます。
|
||||
|
||||
## Raw Transactions
|
||||
|
||||
`RawTransactions`オブジェクトは、実行するトランザクションのリストを格納するコンテナです。1つのバッチには最大8つのトランザクションを含めることができます。トランザクションは単一のアカウントまたは複数のアカウントからのものを混在させることができます。
|
||||
|
||||
各内部トランザクションは以下の要件を満たす必要があります。
|
||||
|
||||
- `tfInnerBatchTxn`フラグを設定する必要があります。
|
||||
- 手数料を持ってはいけません。手数料の値は_0_を使用する必要があります。
|
||||
- 署名されてはいけません(グローバルトランザクションは既に関連する全ての当事者によって署名されています)。代わりに`SigningPubKey`と`TxnSignature`フィールドに空文字列("")を持つ必要があります。
|
||||
|
||||
`tesSUCCESS`以外の結果を受け取った場合、トランザクションは失敗と見なされます。
|
||||
|
||||
### 共通のフラグ
|
||||
|
||||
`Batch`はグローバルトランザクションフラグを追加します。
|
||||
|
||||
| フラグ名 | 値 |
|
||||
|------------------|------------|
|
||||
| `tfInnerBatchTxn`| 0x40000000 |
|
||||
|
||||
このフラグは、トランザクションがバッチトランザクションの内部トランザクションである場合にのみ使用されます。これは、トランザクションが署名されていないことを示します。このフラグを含む通常のトランザクションは拒否されます。
|
||||
|
||||
### BatchSigners
|
||||
|
||||
このフィールドは、アカウントがマルチサインで署名している場合(単一署名とは対照的に)に含まれます。標準トランザクションのマルチサインで使用される`Signers`フィールドと同等に動作します。このフィールドは`Flags`フィールドと`RawTransactions`内のトランザクションのハッシュの署名を保持します。このフィールドは、複数のアカウントのトランザクションが`Batch`トランザクションに含まれている場合にのみ必要となります。それ以外の場合は、通常のトランザクション署名が同じセキュリティを保証します。
|
||||
|
||||
このフィールドは、1つ以上のアカウントが内部トランザクションをバッチに含める場合に提供する必要があります。その場合、外部トランザクションに署名するアカウント(該当する場合)を除き、内部トランザクションを含む全てのアカウントからの署名を含める必要があります。
|
||||
|
||||
この配列内の各オブジェクトには、以下のフィールドが含まれます。
|
||||
|
||||
| フィールド | 必須? | JSONの型 | 内部の型 |
|
||||
|-----------------|-----------|-----------|---------------|
|
||||
| Account | はい | string | STAccount |
|
||||
| SigningPubKey | いいえ | string | STBlob |
|
||||
| TxnSignature | いいえ | string | STBlob |
|
||||
| Signers | いいえ | array | STArray |
|
||||
|
||||
`SigningPubKey`と`TxnSignature`フィールド、または`Signers`フィールドのいずれかを含める必要があります。
|
||||
|
||||
#### Account
|
||||
|
||||
これは、少なくとも1つの内部トランザクションを持つアカウントです。
|
||||
|
||||
#### SigningPubKeyとTxnSignature
|
||||
|
||||
これらのフィールドは、アカウントが単一署名で署名している場合(マルチサインとは対照的に)に含まれます。これらは`Flags`フィールドと`RawTransactions`内のトランザクションのハッシュに署名します。
|
||||
|
||||
#### Signers
|
||||
|
||||
このフィールドは、アカウントがマルチサインで署名している場合(単一署名とは対照的に)に含まれます。標準トランザクションのマルチサインで使用される`Signers`フィールドと同等に動作します。このフィールドは`Flags`フィールドと`RawTransactions`内のトランザクションのハッシュの署名を保持します。
|
||||
|
||||
## 手数料
|
||||
|
||||
外部トランザクションの手数料は、ベース手数料の2倍(手数料エスカレーションがない場合は合計20 drop)に、全ての内部トランザクションのトランザクション手数料の合計(`multisign`や`AMMCreate`などのより高い手数料などの要因を組み込む)を加え、さらにトランザクション内の各追加署名(例:`BatchSigners`から)に対する追加のベース手数料金額を加えたものです。式で表すと以下の通りです。
|
||||
|
||||
2 * (ベース手数料) + SUM(内部トランザクション手数料) + 各追加署名に対する追加のベース手数料
|
||||
|
||||
個々の内部トランザクションの手数料は、内部トランザクション自体ではなく外部トランザクションで支払われます。これにより、手数料エスカレーションがオーバーヘッドのみではなくバッチトランザクション全体のコストに基づいて計算されることが保証されます。
|
||||
|
||||
## メタデータ
|
||||
|
||||
内部トランザクションは台帳に個別にコミットされるため、個別のメタデータを持ちます。これにより、レガシーシステムがシステムの変更を必要とせずに`Batch`トランザクションをサポートできるよう、より良い後方互換性が保証されます。
|
||||
|
||||
例えば、2つの内部トランザクションを含む1つの`Batch`トランザクションのみを持つ台帳は、次のようになります。
|
||||
|
||||
```
|
||||
[
|
||||
OuterTransaction,
|
||||
InnerTransaction1,
|
||||
InnerTransaction2
|
||||
]
|
||||
```
|
||||
|
||||
### 外部トランザクション
|
||||
|
||||
各外部トランザクションには、内部トランザクション処理ではなく、シーケンスと手数料処理のメタデータが含まれます。エラーコードは外部トランザクション処理(例:シーケンスと手数料)のみに基づいており、内部トランザクション処理が失敗してもtesSUCCESSエラーを返します。
|
||||
|
||||
### 内部トランザクション
|
||||
|
||||
各内部トランザクションには、独自の処理のメタデータが含まれます。実際に台帳にコミットされた内部トランザクションのみが含まれます。これにより、レガシーシステムが`Batch`トランザクションを通常のトランザクションのように処理することが容易になります。
|
||||
|
||||
親の外部トランザクション(`ParentBatchID`)への逆ポインタもあります。
|
||||
|
||||
## 共通のフィールド
|
||||
|
||||
この標準はトランザクション共通フィールドに新しいフィールドを追加しませんが、別のグローバルトランザクションフラグを追加します:
|
||||
|
||||
| フラグ名 | 値 |
|
||||
|------------------|------------|
|
||||
| tfInnerBatchTxn | 0x40000000 |
|
||||
|
||||
このフラグは、トランザクションが`Batch`トランザクションの内部トランザクションである場合にのみ使用すべきです。これは、トランザクションが署名されるべきでないことを示します。このフラグを含む通常のトランザクションは拒否されるべきです。
|
||||
|
||||
## セキュリティ
|
||||
|
||||
バッチトランザクションには追加のセキュリティ考慮事項があります。
|
||||
|
||||
### 信頼の前提
|
||||
|
||||
`Batch`トランザクションに含まれるアカウントのトランザクション数に関係なく、全てのアカウントがトランザクションのコレクションに署名する必要があります。
|
||||
|
||||
#### 単一アカウント
|
||||
|
||||
単一アカウントの場合、その単一アカウントは送信する全てのトランザクションを承認する必要があります。他のアカウントは関与しません。
|
||||
|
||||
#### マルチアカウント
|
||||
|
||||
マルチアカウントの場合はより複雑で、例で最もよく説明できます。
|
||||
|
||||
アリスとボブがマルチアカウント`Batch`を介してトラストレススワップを行っており、アリスが1000 XRPを提供し、ボブが1000 USDを提供します。ボブが`Batch`トランザクションを送信するため、アリスは彼女の部分のスワップをボブに提供する必要があります。
|
||||
|
||||
アリスが完全に自動入力され署名されたトランザクションをボブに提供した場合、ボブは自分のトランザクションを送信せずに台帳上でアリスのトランザクションを送信し、1000 USDを失うことなく1000 XRPを受け取ることができます。したがって、内部トランザクションは署名されていない必要があります。
|
||||
|
||||
アリスがバッチトランザクションの彼女の部分のみに署名した場合、ボブは自分のトランザクションを1 USDのみを提供するように変更でき、それによってはるかに安い価格で1000 XRPを取得できます。したがって、バッチトランザクション全体(とその全ての内部トランザクション)は全ての当事者によって署名される必要があります。
|
||||
|
||||
### 内部トランザクションの安全性
|
||||
|
||||
内部バッチトランザクションは特殊なケースです。署名や手数料を含みません(これらは両方とも外部トランザクションに含まれているため)。したがって、誰かが外部トランザクションに含めることなく、内部`Batch`トランザクションを直接送信できないことを保証するために、慎重に処理する必要があります。
|
||||
|
||||
内部トランザクションはブロードキャストできません(例えば悪意のあるノードからブロードキャストされた場合、受け入れられません)。代わりに`Batch`の外部トランザクションから生成される必要があります。内部トランザクションは、submit RPCを介して直接送信することはできません。
|
||||
@@ -71,11 +71,12 @@ AccountTxnIDを使用するには、アカウントの1つ前のトランザク
|
||||
|
||||
### グローバルフラグ
|
||||
|
||||
すべてのトランザクションにグローバルに適用される唯一のフラグは、以下のとおりです。
|
||||
すべてのトランザクションにグローバルに適用されるフラグは、以下のとおりです。
|
||||
|
||||
| フラグの名前 | 16進値 | 10進値 | 説明 |
|
||||
|:--------------------|:-----------|:--------------|:--------------------------|
|
||||
| tfFullyCanonicalSig | 0x80000000 | 2147483648 | _(使用を強く推奨)_ 完全に正規である署名を要求します。 |
|
||||
| tfInnerBatchTxn | 0x40000000 | 1073741824 | このフラグはバッチトランザクションの内部トランザクションである場合にのみ使用されます。これは、トランザクションが署名されていないことを示します。このフラグを含む通常のトランザクションは拒否されます。 |
|
||||
|
||||
[signメソッド][](または「署名と送信」モードの[submitメソッド][])を使用すると、`rippled`は、`Flags`フィールドがすでに存在している場合を除き、`tfFullyCanonicalSig`フラグを有効にした状態で`Flags`フィールドを追加します。`tfFullyCanonicalSig`フラグは、`Flags`が明示的に指定されている場合、自動的には有効に***なりません***。また、[sign_forメソッド][]を使用してマルチシグトランザクションに署名を追加する場合も、自動的には有効に***なりません***。
|
||||
|
||||
|
||||
393
@l10n/ja/docs/references/protocol/transactions/types/batch.md
Normal file
393
@l10n/ja/docs/references/protocol/transactions/types/batch.md
Normal file
@@ -0,0 +1,393 @@
|
||||
---
|
||||
html: batch.html
|
||||
seo:
|
||||
description: 最大8つのトランザクションのバッチを作成・送信する。
|
||||
labels:
|
||||
- Batch
|
||||
- Transactions
|
||||
status: not_enabled
|
||||
---
|
||||
# Batch
|
||||
[[ソース]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/Batch.cpp "Source")
|
||||
|
||||
`Batch`トランザクションは、最大8つのトランザクションを単一のバッチで送信します。各トランザクションは、4つのモードのいずれかでアトミックに実行されます。全て成功または全て失敗(All or Nothing)、一つのみ成功(Only One)、失敗まで継続(Until Failure)、および独立実行(Independent)。
|
||||
|
||||
## Batch JSONの例
|
||||
|
||||
以下の例は、ユーザーがDEX UIを使って取引する中でオファーを作成し、2番目のトランザクションがプラットフォーム手数料となっています。内部トランザクションは署名されておらず、関与するアカウントが1つのみのため、外部トランザクションに`BatchSigners`フィールドは不要です。
|
||||
|
||||
```json
|
||||
{
|
||||
"TransactionType": "Batch",
|
||||
"Account": "rUserBSM7T3b6nHX3Jjua62wgX9unH8s9b",
|
||||
"Flags": "0x00010000",
|
||||
"RawTransactions": [
|
||||
{
|
||||
"RawTransaction": {
|
||||
"TransactionType": "OfferCreate",
|
||||
"Flags": 1073741824,
|
||||
"Account": "rUserBSM7T3b6nHX3Jjua62wgX9unH8s9b",
|
||||
"TakerGets": "6000000",
|
||||
"TakerPays": {
|
||||
"currency": "GKO",
|
||||
"issuer": "ruazs5h1qEsqpke88pcqnaseXdm6od2xc",
|
||||
"value": "2"
|
||||
},
|
||||
"Sequence": 4,
|
||||
"Fee": "0",
|
||||
"SigningPubKey": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"RawTransaction": {
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 1073741824,
|
||||
"Account": "rUserBSM7T3b6nHX3Jjua62wgX9unH8s9b",
|
||||
"Destination": "rDEXfrontEnd23E44wKL3S6dj9FaXv",
|
||||
"Amount": "1000",
|
||||
"Sequence": 5,
|
||||
"Fee": "0",
|
||||
"SigningPubKey": ""
|
||||
}
|
||||
}
|
||||
],
|
||||
"Sequence": 3,
|
||||
"Fee": "40",
|
||||
"SigningPubKey": "022D40673B44C82DEE1DDB8B9BB53DCCE4F97B27404DB850F068DD91D685E337EA",
|
||||
"TxnSignature": "3045022100EC5D367FAE2B461679AD446FBBE7BA260506579AF4ED5EFC3EC25F4DD1885B38022018C2327DB281743B12553C7A6DC0E45B07D3FC6983F261D7BCB474D89A0EC5B8"
|
||||
}
|
||||
```
|
||||
|
||||
### レジャー確認のサンプル
|
||||
|
||||
この例は、トランザクション確認後のレジャーの状態を示しています。
|
||||
内部トランザクションが通常のトランザクションとしてコミットされていることに注意してください。
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"TransactionType": "Batch",
|
||||
"Account": "rUserBSM7T3b6nHX3Jjua62wgX9unH8s9b",
|
||||
"Flags": "0x00010000",
|
||||
"RawTransactions": [
|
||||
{
|
||||
"RawTransaction": {
|
||||
"TransactionType": "OfferCreate",
|
||||
"Flags": 1073741824,
|
||||
"Account": "rUserBSM7T3b6nHX3Jjua62wgX9unH8s9b",
|
||||
"TakerGets": "6000000",
|
||||
"TakerPays": {
|
||||
"currency": "GKO",
|
||||
"issuer": "ruazs5h1qEsqpke88pcqnaseXdm6od2xc",
|
||||
"value": "2"
|
||||
},
|
||||
"Sequence": 4,
|
||||
"Fee": "0",
|
||||
"SigningPubKey": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"RawTransaction": {
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 1073741824,
|
||||
"Account": "rUserBSM7T3b6nHX3Jjua62wgX9unH8s9b",
|
||||
"Destination": "rDEXfrontEnd23E44wKL3S6dj9FaXv",
|
||||
"Amount": "1000",
|
||||
"Sequence": 5,
|
||||
"Fee": "0",
|
||||
"SigningPubKey": ""
|
||||
}
|
||||
}
|
||||
],
|
||||
"Sequence": 3,
|
||||
"Fee": "40",
|
||||
"SigningPubKey": "022D40673B44C82DEE1DDB8B9BB53DCCE4F97B27404DB850F068DD91D685E337EA",
|
||||
"TxnSignature": "3045022100EC5D367FAE2B461679AD446FBBE7BA260506579AF4ED5EFC3EC25F4DD1885B38022018C2327DB281743B12553C7A6DC0E45B07D3FC6983F261D7BCB474D89A0EC5B8"
|
||||
},
|
||||
{
|
||||
"TransactionType": "OfferCreate",
|
||||
"Flags": 1073741824,
|
||||
"Account": "rUserBSM7T3b6nHX3Jjua62wgX9unH8s9b",
|
||||
"TakerGets": "6000000",
|
||||
"TakerPays": {
|
||||
"currency": "GKO",
|
||||
"issuer": "ruazs5h1qEsqpke88pcqnaseXdm6od2xc",
|
||||
"value": "2"
|
||||
},
|
||||
"Sequence": 4,
|
||||
"Fee": "0",
|
||||
"SigningPubKey": ""
|
||||
},
|
||||
{
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 1073741824,
|
||||
"Account": "rUserBSM7T3b6nHX3Jjua62wgX9unH8s9b",
|
||||
"Destination": "rDEXfrontEnd23E44wKL3S6dj9FaXv",
|
||||
"Amount": "1000",
|
||||
"Sequence": 5,
|
||||
"Fee": "0",
|
||||
"SigningPubKey": ""
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### レジャーのサンプル
|
||||
|
||||
この例は、トランザクション確認後のレジャーの状態を示しています。内部トランザクションが通常のトランザクションとしてコミットされ、外部トランザクションの検証済みバージョンには`RawTransactions`フィールドが含まれていないことに注意してください。
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"TransactionType": "Batch",
|
||||
"Account": "rUserBSM7T3b6nHX3Jjua62wgX9unH8s9b",
|
||||
"Flags": "1",
|
||||
"TxnIDs": [
|
||||
"7EB435C800D7DC10EAB2ADFDE02EE5667C0A63AA467F26F90FD4CBCD6903E15E",
|
||||
"EAE6B33078075A7BA958434691B896CCA4F532D618438DE6DDC7E3FB7A4A0AAB"
|
||||
],
|
||||
"Sequence": 3,
|
||||
"Fee": "40",
|
||||
"SigningPubKey": "022D40673B44C82DEE1DDB8B9BB53DCCE4F97B27404DB850F068DD91D685E337EA",
|
||||
"TxnSignature": "3045022100EC5D367FAE2B461679AD446FBBE7BA260506579AF4ED5EFC3EC25F4DD1885B38022018C2327DB281743B12553C7A6DC0E45B07D3FC6983F261D7BCB474D89A0EC5B8"
|
||||
},
|
||||
{
|
||||
"TransactionType": "OfferCreate",
|
||||
"Account": "rUserBSM7T3b6nHX3Jjua62wgX9unH8s9b",
|
||||
"TakerGets": "6000000",
|
||||
"TakerPays": {
|
||||
"currency": "GKO",
|
||||
"issuer": "ruazs5h1qEsqpke88pcqnaseXdm6od2xc",
|
||||
"value": "2"
|
||||
},
|
||||
"BatchTxn": {
|
||||
"Account": "rUserBSM7T3b6nHX3Jjua62wgX9unH8s9b",
|
||||
"OuterSequence": 3,
|
||||
"BatchIndex": 0
|
||||
},
|
||||
"Sequence": 0,
|
||||
"Fee": "0",
|
||||
"SigningPubKey": "",
|
||||
"TxnSignature": ""
|
||||
},
|
||||
{
|
||||
"TransactionType": "Payment",
|
||||
"Account": "rUserBSM7T3b6nHX3Jjua62wgX9unH8s9b",
|
||||
"Destination": "rDEXfrontEnd23E44wKL3S6dj9FaXv",
|
||||
"Amount": "1000",
|
||||
"BatchTxn": {
|
||||
"Account": "rUserBSM7T3b6nHX3Jjua62wgX9unH8s9b",
|
||||
"OuterSequence": 3,
|
||||
"BatchIndex": 1
|
||||
},
|
||||
"Sequence": 0,
|
||||
"Fee": "0",
|
||||
"SigningPubKey": "",
|
||||
"TxnSignature": ""
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### Batchのフィールド
|
||||
|
||||
<!-- {% raw-partial file="/@l10n/ja/docs/_snippets/tx-fields-intro.md" /%} -->
|
||||
|
||||
| フィールド | JSONの型 | [内部の型][] | 説明 |
|
||||
|:----------------|:--------------------|:------------------|:-------------------|
|
||||
| TransactionType | string | UInt16 | |
|
||||
| Account | string | STAccount | |
|
||||
| Fee | string | STAmount | 手数料は基本手数料の2倍(手数料エスカレーションがない場合は合計20 drops)に、すべての内部トランザクションのトランザクション手数料の合計を加えたものです(マルチサインやAMMCreateなどの高い手数料も含む)。個々の内部トランザクションの手数料は、内部トランザクション自体ではなくここで支払われ、手数料エスカレーションがオーバーヘッドだけでなくトランザクションの総コストで計算されることを保証します。 |
|
||||
| Flags | number | UInt32 | `Flags`フィールドはトランザクションのバッチモードを表します。`Batch`トランザクションでは正確に1つを指定する必要があります。[Batchのフラグ](#batchのフラグ)を参照してください。|
|
||||
| RawTransactions | array | STArray | 適用されるトランザクションのリストを含みます。[RawTransactions](#rawtransactions)を参照してください。 |
|
||||
| TxnIDs | array | Vector256 | `TxnIDs`は`RawTransactions`に含まれるすべてのトランザクションのトランザクションハッシュ/IDのリストを含みます。これは内部トランザクションの`Batch`トランザクション内でレジャーの一部として保存される唯一の部分です。内部トランザクション自体はレジャー上で独自のトランザクションであるためです。TxnIDsのハッシュは`RawTransactions`の生トランザクションと同じ順序である必要があります。 |
|
||||
| BatchSigners | array | STArray | _オプション_。`Batch`に複数のアカウントのトランザクションが含まれる場合のみ必要です。[BatchSigners](#batchsigners)を参照してください。 |
|
||||
|
||||
### Batchのフラグ
|
||||
|
||||
`Batch`型のトランザクションは、`Flags`フィールドで以下の追加値をサポートしています。
|
||||
|
||||
| フラグ名 | 16進値 | 10進値 | 説明 |
|
||||
|:-------------------|:-------------| ------------: |:------------------------------|
|
||||
| `ALLORNOTHING` | 0x00000001 | 1 | 全て成功または全て失敗。すべてのトランザクションが成功しなければ、どれも成功しません。 |
|
||||
| `ONLYONE` | 0x00000002 | 2 | 最初に成功したトランザクションのみが成功し、他のすべてのトランザクションは失敗するか実行されません。 |
|
||||
| `UNTILFAILURE` | 0x00000004 | 4 | 最初の失敗まですべてのトランザクションが処理され、最初の失敗後のすべてのトランザクションは処理されません。 |
|
||||
| `INDEPENDENT` | 0x00000008 | 8 | 失敗に関係なく、すべてのトランザクションが処理されます。 |
|
||||
|
||||
### RawTransactions
|
||||
|
||||
`RawTransactions`は実行されるトランザクションのリストを含みます。最大8つのトランザクションを含めることができます。これらのトランザクションは1つのアカウントまたは複数のアカウントからのものである可能性があります。
|
||||
|
||||
内部の各トランザクションは以下の要件を満たす必要があります。
|
||||
|
||||
- BatchTxnフィールドを含む必要があります。
|
||||
- シーケンス番号を持ってはいけません。シーケンス番号値0を使用する必要があります。
|
||||
- 手数料を持ってはいけません。手数料値"0"を使用する必要があります。
|
||||
- 署名されてはいけません(グローバルトランザクションはすでにすべての関連当事者によって署名されています)。代わりに`SigningPubKey`および`TxnSignature`フィールドに空文字列("")を持つ必要があります。
|
||||
|
||||
トランザクションは`tesSUCCESS`でない結果を受け取った場合、失敗と見なされます。
|
||||
|
||||
このフィールドは検証済みトランザクションには含まれず、すべてのトランザクションがレジャーの一部として個別に含まれるため、外部トランザクション署名の計算にも使用されません。
|
||||
|
||||
### BatchSigners
|
||||
|
||||
このフィールドはXRPLのマルチサインと同様に動作します。複数のアカウントのトランザクションがBatchトランザクションに含まれる場合のみ必要です。そうでなければ、通常のトランザクション署名が同じセキュリティ保証を提供します。
|
||||
|
||||
少なくとも1つの内部トランザクションを持つすべてのアカウント(該当する場合は外部アカウントを除く)は、BatchSignersフィールドを持つ必要があります。
|
||||
|
||||
| フィールド | JSONの型 | [内部の型][] | 説明 |
|
||||
|:----------------|:--------------------|:------------------|:-------------------|
|
||||
| Account | string | STAccount | 少なくとも1つの内部トランザクションを持つアカウント。 |
|
||||
| SigningPubKey | string | STBlob | アカウントが単一署名で署名している場合に含まれます。 |
|
||||
| Signature | string | STBlob | アカウントが単一署名で署名している場合に含まれます。 |
|
||||
| Signers | array | STArray | アカウントがマルチサイン(単一署名の代わりに)で署名している場合にこのフィールドが含まれます。標準トランザクションマルチサインで使用されるSignersフィールドと同等に動作します。このフィールドはFlagsおよびTxnIDsフィールドの署名を保持します。 |
|
||||
|
||||
## BatchTxn
|
||||
|
||||
`BatchTxn`内部オブジェクトは、`Batch`トランザクションのすべての内部トランザクションに含める必要があります。
|
||||
含めることで、以下の効果があります。
|
||||
|
||||
- 同一トランザクション間のハッシュ衝突を防ぎます(シーケンス番号が含まれていないため)。
|
||||
- すべてのトランザクションがシーケンス番号を関連付けることを保証し、ID生成でそれを使用する作成されたレジャーオブジェクトが引き続き動作できるようにします。
|
||||
- ユーザーがトランザクションを正しい順序でより簡単に整理できるようにします。
|
||||
|
||||
このオブジェクトに含まれるフィールドは以下の通りです。
|
||||
|
||||
| フィールド | JSONの型 | [内部の型][] | 説明 |
|
||||
|:---------------------|:-----------------|:------------------|:-----------------|
|
||||
| `Account` | string | AccountID | 外部`Batch`トランザクションを送信するアカウント。 |
|
||||
| `OuterSequence` | number | UInt32 | 外部`Batch`トランザクションのシーケンス番号。他の`Batch`トランザクションとのハッシュ衝突がないことを保証します。 |
|
||||
| `Sequence` | number | UInt32 | _(オプション)_ 内部トランザクションのアカウントの次の利用可能なシーケンス番号。マルチアカウントBatchトランザクションでのみ含める必要があります。 |
|
||||
| `BatchIndex` | number | UInt8 | 既存の`Batch`トランザクション内での内部トランザクションの(0から始まる)インデックス。最初の内部トランザクションはBatchIndex値0、2番目は1、以下同様です。同じ`Batch`トランザクション内の他の内部トランザクションとのハッシュ衝突がないことを保証し、すべてのトランザクションが正しい順序で配置されることを保証します。 |
|
||||
|
||||
## 複数アカウントでのBatch JSONの例
|
||||
|
||||
この例では、2人のユーザーがトークンをアトミックに交換しており、XRPをGKOと交換しています。内部トランザクションは依然として署名されていませんが、この`Batch`トランザクションには2つのアカウントの内部トランザクションがあるため、外部トランザクションに`BatchSigners`フィールドが必要です。
|
||||
|
||||
```json
|
||||
{
|
||||
"TransactionType": "Batch",
|
||||
"Account": "rUser1fcu9RJa5W1ncAuEgLJF2oJC6",
|
||||
"Flags": "0x00010000",
|
||||
"RawTransactions": [
|
||||
{
|
||||
"RawTransaction": {
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 1073741824,
|
||||
"Account": "rUser1fcu9RJa5W1ncAuEgLJF2oJC6",
|
||||
"Destination": "rUser2fDds782Bd6eK15RDnGMtxf7m",
|
||||
"Amount": "6000000",
|
||||
"Sequence": 5,
|
||||
"Fee": "0",
|
||||
"SigningPubKey": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"RawTransaction": {
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 1073741824,
|
||||
"Account": "rUser2fDds782Bd6eK15RDnGMtxf7m",
|
||||
"Destination": "rUser1fcu9RJa5W1ncAuEgLJF2oJC6",
|
||||
"Amount": {
|
||||
"currency": "GKO",
|
||||
"issuer": "ruazs5h1qEsqpke88pcqnaseXdm6od2xc",
|
||||
"value": "2"
|
||||
},
|
||||
"Sequence": 20,
|
||||
"Fee": "0",
|
||||
"SigningPubKey": ""
|
||||
}
|
||||
}
|
||||
],
|
||||
"BatchSigners": [
|
||||
{
|
||||
"BatchSigner": {
|
||||
"Account": "rUser2fDds782Bd6eK15RDnGMtxf7m",
|
||||
"SigningPubKey": "03C6AE25CD44323D52D28D7DE95598E6ABF953EECC9ABF767F13C21D421C034FAB",
|
||||
"TxnSignature": "304502210083DF12FA60E2E743643889195DC42C10F62F0DE0A362330C32BBEC4D3881EECD022010579A01E052C4E587E70E5601D2F3846984DB9B16B9EBA05BAD7B51F912B899"
|
||||
}
|
||||
}
|
||||
],
|
||||
"Sequence": 4,
|
||||
"Fee": "60",
|
||||
"SigningPubKey": "03072BBE5F93D4906FC31A690A2C269F2B9A56D60DA9C2C6C0D88FB51B644C6F94",
|
||||
"TxnSignature": "30440220702ABC11419AD4940969CC32EB4D1BFDBFCA651F064F30D6E1646D74FBFC493902204E5B451B447B0F69904127F04FE71634BD825A8970B9467871DA89EEC4B021F8"
|
||||
}
|
||||
```
|
||||
|
||||
#### レジャーレスポンスの例
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"TransactionType": "Batch",
|
||||
"Account": "rUser1fcu9RJa5W1ncAuEgLJF2oJC6",
|
||||
"Flags": "0x00010000",
|
||||
"RawTransactions": [
|
||||
{
|
||||
"RawTransaction": {
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 1073741824,
|
||||
"Account": "rUser1fcu9RJa5W1ncAuEgLJF2oJC6",
|
||||
"Destination": "rUser2fDds782Bd6eK15RDnGMtxf7m",
|
||||
"Amount": "6000000",
|
||||
"Sequence": 5,
|
||||
"Fee": "0",
|
||||
"SigningPubKey": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"RawTransaction": {
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 1073741824,
|
||||
"Account": "rUser2fDds782Bd6eK15RDnGMtxf7m",
|
||||
"Destination": "rUser1fcu9RJa5W1ncAuEgLJF2oJC6",
|
||||
"Amount": {
|
||||
"currency": "GKO",
|
||||
"issuer": "ruazs5h1qEsqpke88pcqnaseXdm6od2xc",
|
||||
"value": "2"
|
||||
},
|
||||
"Sequence": 20,
|
||||
"Fee": "0",
|
||||
"SigningPubKey": ""
|
||||
}
|
||||
}
|
||||
],
|
||||
"BatchSigners": [
|
||||
{
|
||||
"BatchSigner": {
|
||||
"Account": "rUser2fDds782Bd6eK15RDnGMtxf7m",
|
||||
"SigningPubKey": "03C6AE25CD44323D52D28D7DE95598E6ABF953EECC9ABF767F13C21D421C034FAB",
|
||||
"TxnSignature": "304502210083DF12FA60E2E743643889195DC42C10F62F0DE0A362330C32BBEC4D3881EECD022010579A01E052C4E587E70E5601D2F3846984DB9B16B9EBA05BAD7B51F912B899"
|
||||
}
|
||||
}
|
||||
],
|
||||
"Sequence": 4,
|
||||
"Fee": "60",
|
||||
"SigningPubKey": "03072BBE5F93D4906FC31A690A2C269F2B9A56D60DA9C2C6C0D88FB51B644C6F94",
|
||||
"TxnSignature": "30440220702ABC11419AD4940969CC32EB4D1BFDBFCA651F064F30D6E1646D74FBFC493902204E5B451B447B0F69904127F04FE71634BD825A8970B9467871DA89EEC4B021F8"
|
||||
},
|
||||
{
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 1073741824,
|
||||
"Account": "rUser1fcu9RJa5W1ncAuEgLJF2oJC6",
|
||||
"Destination": "rUser2fDds782Bd6eK15RDnGMtxf7m",
|
||||
"Amount": "6000000",
|
||||
"Sequence": 5,
|
||||
"Fee": "0",
|
||||
"SigningPubKey": ""
|
||||
},
|
||||
{
|
||||
"TransactionType": "Payment",
|
||||
"Flags": 1073741824,
|
||||
"Account": "rUser2fDds782Bd6eK15RDnGMtxf7m",
|
||||
"Destination": "rUser1fcu9RJa5W1ncAuEgLJF2oJC6",
|
||||
"Amount": {
|
||||
"currency": "GKO",
|
||||
"issuer": "ruazs5h1qEsqpke88pcqnaseXdm6od2xc",
|
||||
"value": "2"
|
||||
},
|
||||
"Sequence": 20,
|
||||
"Fee": "0",
|
||||
"SigningPubKey": ""
|
||||
}
|
||||
]
|
||||
```
|
||||
Reference in New Issue
Block a user