mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-11-30 08:35:50 +00:00
Merge branch 'master' into devref-friipay
This commit is contained in:
92
@l10n/ja/docs/concepts/tokens/fungible-tokens/deep-freeze.md
Normal file
92
@l10n/ja/docs/concepts/tokens/fungible-tokens/deep-freeze.md
Normal file
@@ -0,0 +1,92 @@
|
||||
---
|
||||
blurb: ディープフリーズは、トラストラインのフリーズが解除されるまで、フリーズされたトークン保有者がその資金を送受信できないようにします。
|
||||
labels:
|
||||
- トークン
|
||||
- フリーズ
|
||||
- ディープフリーズ
|
||||
---
|
||||
# ディープフリーズ
|
||||
|
||||
ディープフリーズは、XRP Ledger上のトークン発行者が、フリーズされたアカウントによるトークンの悪用を防ぐための機能です。これは、フリーズされた資産と支払いのやり取りを強化し、トラストラインがフリーズ解除されない限り、フリーズされたトークン保有者が資金を受け取ることができないようにします。
|
||||
|
||||
この変更により、発行者はXRPL上での規制遵守がより容易になります。たとえば、制裁リストに記載されたウォレットへのトークン流通を防ぐことで、規制されたステーブルコインや現実資産(RWA)などのユースケースにおいて、コンプライアンスを強化できます。
|
||||
|
||||
ディープフリーズは、支払い、オファー、分散型取引所(DEX)、自動マーケットメイカー(AMM)に関わるトラストラインに影響を与えます。発行者は、ディープフリーズ状態の保有者に対して、送金および受取をブロックできます。
|
||||
|
||||
_([DeepFreeze amendment][]により追加されました。)_
|
||||
|
||||
## ディープフリーズの仕組み
|
||||
|
||||
ディープフリーズは、トラストライン上に設定される機能です。これを有効にするには、発行者がまず通常のフリーズ(Individual Freeze)をそのトラストラインに対して実行しておく必要があります。また、発行者のアカウントで `No Freeze` が有効になっている場合は、ディープフリーズを実行することはできません。
|
||||
|
||||
発行者がディープフリーズを実行すると、そのトラストライン上のトークンには以下のルールが適用されます。
|
||||
|
||||
- ディープフリーズされたトラストラインの両当事者間の直接決済は、ディープフリーズ後も可能です。
|
||||
- トラストラインのカウンターパーティは、発行者への直接決済を除き、ディープフリーズされたトラストライン上の残高を増減させることができません。カウンターパーティは、ディープフリーズされた通貨を発行者にのみ直接送ることができます。
|
||||
- カウンターパーティは、ディープフリーズされたトラストライン上で、他のアドレスとの間で決済を行うことができません。
|
||||
- カウンターパーティによる、ディープフリーズされたトラストライン上のトークンの売買オファーは資金不足と見なされます。
|
||||
|
||||
また、個別のアドレスが、自分から発行者または金融機関へのトラストラインをディープフリーズに設定することも可能です。
|
||||
これは、その金融機関と他のユーザー間の取引には影響を与えませんが、次の効果があります。
|
||||
|
||||
- 他のアドレスが、その金融機関のトークンをその個別アドレスに送信することを防ぎます。
|
||||
- その個別アドレスが、そのトークンを発行者以外のアドレスに送信することも防ぎます。
|
||||
|
||||
### RippleState オブジェクト
|
||||
|
||||
ディープフリーズでは、`RippleState`(トラストライン)オブジェクトに、`lsfLowDeepFreeze` と `lsfHighDeepFreeze` の2つのフラグが導入されます。
|
||||
|
||||
| フラグ名 | フラグ値 | 説明 |
|
||||
|-----------|-------------|-------------|
|
||||
| `lsfLowDeepFreeze` | `0x02000000` | 低位アカウントがトラストラインをディープフリーズしており、高位アカウントは資産を移動できません。 |
|
||||
| `lsfHighDeepFreeze` | `0x04000000` | 高位アカウントがトラストラインをディープフリーズしており、低位アカウントは資産を移動できません。 |
|
||||
|
||||
[高位vs低位アカウント](../../../references/protocol/ledger-data/ledger-entry-types/ripplestate.md#high-vs-low-account)をご覧ください.
|
||||
|
||||
### TrustSet トランザクション
|
||||
|
||||
ディープフリーズでは、`TrustSet` トランザクションに `tfSetDeepFreeze` および `tfClearDeepFreeze` の2つのフラグが導入されます。
|
||||
|
||||
| フラグ名 | フラグ値 | 説明 |
|
||||
|-----------|-------------|-------------|
|
||||
| `tfSetDeepFreeze` | `0x00400000` | トラストラインをディープフリーズします。 |
|
||||
| `tfClearDeepFreeze` | `0x00800000` | トラストラインのディープフリーズを解除します。 |
|
||||
|
||||
`tfSetDeepFreeze` を設定しようとする `TrustSet` トランザクションは、以下のいずれかが当てはまる場合にのみ成功します。
|
||||
|
||||
- 保有者はすでにフリーズされており、その状態はトラストライン上の `lsfLowFreeze`/`lsfHighFreeze` フラグによって示されている。
|
||||
- 同じ `TrustSet` トランザクションで `tfSetFreeze` も同時に設定されている。
|
||||
|
||||
ディープフリーズの導入により、`TrustSet` トランザクションには追加の制限が課されます。
|
||||
|
||||
トラストラインが発行者によってディープフリーズされている場合(`lsfLowDeepFreeze`/`lsfHighDeepFreeze` フラグが立っている)、発行者が `tfClearDeepFreeze` フラグを設定せずに `tfClearFreeze` フラグだけを設定すると、`TrustSet` トランザクションは失敗します。つまり、発行者はディープフリーズを解除しないかぎり、通常のフリーズを解除することはできません。
|
||||
|
||||
## 支払いエンジン
|
||||
|
||||
支払いエンジンは、送信者と受信者をつなぐステップで構成されたパスを実行します。一般的に、資金は次の二つのうちいずれかのステップを通じてトラストラインに入金されます。
|
||||
|
||||
- [リップリング](#リップリング)
|
||||
- [オーダーブックまたはAMM](#オーダーブック)
|
||||
|
||||
### リップリング
|
||||
|
||||
リップリングのステップの結果として、ディープフリーズされたトラストラインでの資金受け取りは失敗します。
|
||||
|
||||
### オーダーブック
|
||||
|
||||
買い注文で指定された `TakerPays` トークンについて、オファー所有者のトラストラインがディープフリーズされていると、そのオファーは資金の裏付けがないと判断され、約定しません。
|
||||
|
||||
## OfferCreate トランザクション
|
||||
|
||||
ディープフリーズ機能の導入により、`OfferCreate` トランザクションに対して変更が加えられます:
|
||||
|
||||
`TakerPays`(購入額)トークンが発行者によってディープフリーズされている場合、`OfferCreate` は `tecFROZEN` を返します。
|
||||
さらに、`TakerPays` トークンに対してオファー所有者がディープフリーズされている既存のオファーは、もはや約定することはありません。そのようなオファーは資金不足と見なされ、新たにクロスするオファーによって暗黙的にキャンセルされます。
|
||||
|
||||
## MPT のフリーズ/ロックの挙動は、IOU とどう異なりますか?
|
||||
|
||||
マルチパーパストークン(MPT)のフリーズ/ロック機能は、IOUの挙動とはやや異なります。MPTの保有者がロックされると、MPTの送信および受信の両方ができなくなるため、単一のフラグで対応可能です。
|
||||
|
||||
一方、IOUの場合、通常のフリーズでは送信のみが禁止されます。受信もブロックしたい場合は、発行者がディープフリーズを適用する必要があります。
|
||||
|
||||
{% raw-partial file="/docs/_snippets/common-links.md" /%}
|
||||
@@ -51,7 +51,8 @@ labels:
|
||||
- **Limit**: 0から[トークンの上限量](../../../references/protocol/data-types/currency-formats.md)の範囲内の数字です。支払いや他のアカウントの操作によって、(このアカウントから見た)トラストラインの残高が限度額を超えることはできません。デフォルトは`0`です。
|
||||
- **Authorized**: [Authorized Trust Lines](authorized-trust-lines.md)と併用し、このアカウントが発行するトークンを相手側に保持させることを許可するための値(true/false)です。デフォルトは`false`です。一度`true`に設定すると、元に戻すことはできません。
|
||||
- **No Ripple**: トークンがこのトラストラインを通過して[ripple](rippling.md)するかどうかを設定するための値(true/false)です。デフォルトはアカウントの"Default Ripple"設定に依存します。新しいアカウントでは"Default Ripple"はoffで、つまり`true`がNo Rippleのデフォルト値となります。通常、発行者はrippleを許可し、非発行者はコミュニティクレジットのためにトラストラインを使用していない限り、rippleを無効にするべきです。
|
||||
- **Freeze**: このトラストラインに[個別のフリーズ](freezes.md#individual-freeze)が適用されているかどうかを示す値(true/false)です。デフォルトは`false です。
|
||||
- **Freeze**: このトラストラインに[個別のフリーズ](freezes.md#individual-freeze)が適用されているかどうかを示す値(true/false)です。デフォルトは`false` です。
|
||||
- **DeepFreeze**: このトラストラインに[ディープフリーズ](deep-freeze.md)が適用されているかどうかを示す値(true/false)です。デフォルトは`false` です。
|
||||
- **Quality In** および **Quality Out**: この設定により、このトラストライン上の他のアカウントで発行されたトークンを額面より少なく(または多く)評価することができます。たとえば、ステーブルコインの発行者が、オフレッジャーにある同等の資産に対してトークンの引き出しに3%の手数料を課している場合、この設定を使用して、それらのトークンを額面の97%で評価することが可能です。デフォルトは`0`で、額面価格を表しています。
|
||||
|
||||
|
||||
|
||||
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`には`ALLORNOTHING`、`ONLYONE`、`UNTILFAILURE`、`INDEPENDENT`の4つのモードがあります。
|
||||
|
||||
### All or Nothing(全て成功か全て失敗)
|
||||
|
||||
`ALLORNOTHING`モードでは、いずれかの内部トランザクションが成功するには、全ての内部トランザクションが成功する必要があります。
|
||||
|
||||
### Only One(1つだけ)
|
||||
|
||||
`ONLYONE`モードでは、最初に成功したトランザクションのみが成功します。他の全てのトランザクションは失敗するか、実行されません。
|
||||
|
||||
### Until Failure(失敗まで)
|
||||
|
||||
`UNTILFAILURE`では、全ての内部トランザクションをいずれかが失敗するまで適用します。最初の失敗後の全てのトランザクションは適用されません。
|
||||
|
||||
### Independent(独立)
|
||||
|
||||
`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 XRP送信の情報をボブに提供する必要があります。
|
||||
|
||||
アリスが完全に自動入力され署名されたトランザクションをボブに提供した場合、ボブは自分のトランザクションを送信せずに台帳上でアリスのトランザクションを送信し、1000 USDを失うことなく1000 XRPを受け取ることができます。したがって、内部トランザクションは署名されていない必要があります。
|
||||
|
||||
アリスがバッチトランザクションの自身の部分のみに署名した場合、ボブは自分のトランザクションを1 USDのみを提供するように変更でき、それによってはるかに安い価格で1000 XRPを取得できます。したがって、バッチトランザクション全体(とその全ての内部トランザクション)は全ての当事者によって署名される必要があります。
|
||||
|
||||
### 内部トランザクションの安全性
|
||||
|
||||
バッチの内部トランザクションは特殊なケースです。署名や手数料を含みません(これらは両方とも外部トランザクションに含まれているため)。したがって、誰かが外部トランザクションに含めることなく、`Batch`の内部トランザクションを直接送信できないことを保証するために、慎重に処理する必要があります。
|
||||
|
||||
内部トランザクションはブロードキャストできません(例えば悪意のあるノードからブロードキャストされた場合、受け入れられません)。代わりに`Batch`の外部トランザクションから生成される必要があります。内部トランザクションは、submit RPCを介して直接送信することはできません。
|
||||
@@ -16,8 +16,6 @@ top_nav_grouping: 人気ページ
|
||||
|
||||
そしてAPIコールを効率的に処理し、P2Pモードで動作している`rippled`サーバの負荷を軽減することができます。
|
||||
|
||||
[{% inline-svg file="/docs/img/reporting-mode-basic-architecture.svg" /%}](/docs/img/reporting-mode-basic-architecture.svg "図 1: レポートモードでの`rippled`の動作")
|
||||
|
||||
`rippled`のレポートモードでは2種類のデータストアを使用します。
|
||||
|
||||
* トランザクションのメタデータ、アカウントの状態、レジャーのヘッダーを含む`rippled`のプライマリ永続データストア。プライマリ永続データストアとしてNuDB(ソースに付属)または[Cassandra](https://cassandra.apache.org/)を使用できます。Cassandraを使用する場合、複数のレポートモードサーバが単一のCassandraインスタンスまたはクラスター内のデータへのアクセスを共有できます。
|
||||
|
||||
@@ -11,11 +11,11 @@ labels:
|
||||
|
||||
Linuxでは、`rippled`が1回限りの`cron`構成を使用して最新バージョンに自動的にアップグレードされるように設定できます。可能であれば自動更新を有効にしておくことが推奨されます。
|
||||
|
||||
以下の手順では、`rippled`が[`yum`リポジトリから(CentOS/RedHat)](install-rippled-on-centos-rhel-with-yum.md)、または[`apt`(Ubuntu/Debian)を使用して](install-rippled-on-ubuntu.md)インストールされていることを前提としています。
|
||||
以下の手順では、`rippled`が[`yum`リポジトリから(CentOS/RedHat)](install-rippled-on-rhel.md)、または[`apt`(Ubuntu/Debian)を使用して](install-rippled-on-ubuntu.md)インストールされていることを前提としています。
|
||||
|
||||
自動更新を設定するには、以下の手順に従います。
|
||||
|
||||
1. `/opt/ripple/etc/update-rippled-cron`が存在することを確認します。存在しない場合は、([CentOS/Red Hat](update-rippled-manually-on-centos-rhel.md)または[Ubuntu/Debian](update-rippled-manually-on-ubuntu.md)を)手動で更新します。
|
||||
1. `/opt/ripple/etc/update-rippled-cron`が存在することを確認します。存在しない場合は、([CentOS/Red Hat](update-rippled-manually-on-rhel.md)または[Ubuntu/Debian](update-rippled-manually-on-ubuntu.md)を)手動で更新します。
|
||||
|
||||
2. `cron.d`フォルダーに、`/opt/ripple/etc/update-rippled-cron`構成ファイルへのsymlinkを作成します。
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ labels:
|
||||
|
||||
このページでは、CentOSまたはRed Hat Enterprise Linuxで最新リリースの`rippled`に手動で更新する手順を説明します。可能であれば手動更新ではなく[自動更新](update-rippled-automatically-on-linux.md)を設定することが推奨されます。
|
||||
|
||||
以下の手順は、[`rippled`がすでに`yum`リポジトリからインストール](install-rippled-on-centos-rhel-with-yum.md)されていることを前提としています。
|
||||
以下の手順は、[`rippled`がすでに`yum`リポジトリからインストール](install-rippled-on-rhel.md)されていることを前提としています。
|
||||
|
||||
{% admonition type="success" name="ヒント" %}これらの手順をすべて一度に実行するには、`rippled`パッケージに含まれている`/opt/ripple/bin/update-rippled.sh`スクリプトを実行します。このスクリプトは`sudo`ユーザとして実行する必要があります。{% /admonition %}
|
||||
|
||||
@@ -27,7 +27,7 @@ _([NonFungibleTokensV1_1 amendment][]により追加されました。)_
|
||||
## NFTokenID
|
||||
|
||||
|
||||
NFTokenID, 任意, 文字列, Hash256
|
||||
NFTokenID, 任意, 文字列, UInt256
|
||||
|
||||
この複合フィールドは、トークンを一意に識別するものであり、以下のセクションから構成されます。
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ seo:
|
||||
|
||||
| `Field` | JSONの型 | [内部の型][] | 必須? | 説明 |
|
||||
|:-------------------------|:--------|:------------|:------|:------------|
|
||||
| `index` or `LedgerIndex` | 文字列 | Hash256 | いいえ | このレジャーエントリの一意のID。JSONでは、このフィールドはコンテキストやAPIメソッドによって異なる名前で表現されます。(コード上では"任意(optional)"と指定されていますが、XRP Ledgerの歴史のごく初期からのレガシーデータでない限り、すべてのレジャーエントリは一意であるべきです)。 |
|
||||
| `index` or `LedgerIndex` | 文字列 | UInt256 | いいえ | このレジャーエントリの一意のID。JSONでは、このフィールドはコンテキストやAPIメソッドによって異なる名前で表現されます。(コード上では"任意(optional)"と指定されていますが、XRP Ledgerの歴史のごく初期からのレガシーデータでない限り、すべてのレジャーエントリは一意であるべきです)。 |
|
||||
| `LedgerEntryType` | 文字列 | UInt16 | はい | レジャーエントリのタイプ。有効な[レジャーエントリのタイプ](ledger-entry-types/index.md)には`AccountRoot`、`Offer`、`RippleState`などがあります。 |
|
||||
| `Flags` | 数値 | UInt32 | はい | このレジャーエントリのビットフラグのセット。 |
|
||||
|
||||
|
||||
@@ -40,8 +40,8 @@ labels:
|
||||
| フィールド | JSONの型 | [内部の型][] | 必須? | 説明 |
|
||||
|:------------------------------|:---------|:------------------|:------|:------|
|
||||
| `Account` | 文字列 | AccountID | はい | この[アカウント](../../../../concepts/accounts/index.md)を識別するための(クラシック)アドレスです。 |
|
||||
| `AccountTxnID` | 文字列 | Hash256 | いいえ | このアカウントから直近に送信されたトランザクションの識別ハッシュ。このフィールドは、[`AccountTxnID`トランザクションフィールド](../../transactions/common-fields.md#accounttxnid)を使うために有効になっていなければなりません。これを有効にするには、[`asfAccountTxnID`フラグを有効にしたAccountSetトランザクション](../../transactions/types/accountset.md#accountsetのフラグ)を送信してください。 |
|
||||
| `AMMID` | 文字列 | Hash256 | いいえ | _([AMM amendment][]により追加されました。)_ 対応するAMMレジャーエントリのレジャーエントリID。アカウント作成時に設定します。AMM以外のアカウントでは常に省略されます。 |
|
||||
| `AccountTxnID` | 文字列 | UInt256 | いいえ | このアカウントから直近に送信されたトランザクションの識別ハッシュ。このフィールドは、[`AccountTxnID`トランザクションフィールド](../../transactions/common-fields.md#accounttxnid)を使うために有効になっていなければなりません。これを有効にするには、[`asfAccountTxnID`フラグを有効にしたAccountSetトランザクション](../../transactions/types/accountset.md#accountsetのフラグ)を送信してください。 |
|
||||
| `AMMID` | 文字列 | UInt256 | いいえ | _([AMM amendment][]により追加されました。)_ 対応するAMMレジャーエントリのレジャーエントリID。アカウント作成時に設定します。AMM以外のアカウントでは常に省略されます。 |
|
||||
| `Balance` | 文字列 | Amount | いいえ | アカウントの現在の[drop単位のXRP残高][XRP、drop単位]で、文字列で表現されます。 |
|
||||
| `BurnedNFTokens` | 数値 | UInt32 | いいえ | このアカウントで発行された [非代替性トークン](../../../../concepts/tokens/nfts/index.md) のうち、バーンしたトークンの総数を表します。この数値は常に `MintedNFTokens` と同じかそれ以下となります。 |
|
||||
| `Domain` | 文字列 | VariableLength | いいえ | このアカウントに関連付けられたドメイン。JSONでは、ドメインのASCII表現を16進数で表現します。[256バイトを超える長さは使用できません](https://github.com/xrplf/rippled/blob/55dc7a252e08a0b02cd5aa39e9b4777af3eafe77/src/ripple/app/tx/impl/SetAccount.h#L34) |
|
||||
@@ -52,14 +52,14 @@ labels:
|
||||
| `MintedNFTokens` | 数値 | UInt32 | いいえ | このアカウントによって、またはこのアカウントのためにMintされた[非代替性トークン](../../../../concepts/tokens/nfts/index.md) の合計数。 |
|
||||
| `NFTokenMinter` | 文字列 | AccountID | いいえ | このアカウントに代わって[非代替性トークン](../../../../concepts/tokens/nfts/index.md)をミントできる別のアカウントを表します。 |
|
||||
| `OwnerCount` | 数値 | UInt32 | はい | レジャーでこのアカウントが所有しており、アカウント所有者の準備金に資金を付与するオブジェクトの数。 |
|
||||
| `PreviousTxnID` | 文字列 | Hash256 | はい | 最後にこのオブジェクトを変更したトランザクションの識別用ハッシュ。 |
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | はい | 最後にこのオブジェクトを変更したトランザクションの識別用ハッシュ。 |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | はい | 最後にこのオブジェクトを変更したトランザクションが記録された[レジャーインデックス][]。 |
|
||||
| `RegularKey` | 文字列 | AccountID | いいえ | このアカウントのトランザクションに署名するときにマスターキーの代わりに使用できる[キーペア](../../../../concepts/accounts/cryptographic-keys.md)のアドレス。この値を変更するには[SetRegularKeyトランザクション][]を使用してください。 |
|
||||
| `Sequence` | 数値 | UInt32 | はい | このアカウントの有効な次のトランザクションの[シーケンス番号](../../data-types/basic-data-types.md#アカウントシーケンス) を表します。 |
|
||||
| `TicketCount` | 数値 | UInt32 | いいえ | このアカウントが台帳に保有する[チケット](../../../../concepts/accounts/tickets.md)の数です。これは、アカウントが一度に250 チケットという上限以内に留まることを保証するために自動的に更新されます。このフィールドは、チケットの数がゼロの場合は省略されます。 _([TicketBatch amendment][]により追加されました)_ |
|
||||
| `TickSize` | 数値 | UInt8 | いいえ | このアドレスが発行した通貨が関わるオファーの為替レートに使用する有効桁数。有効な値は`3`以上`15`以下です。_([TickSize Amendment][]により追加されました。)_ |
|
||||
| `TransferRate` | 数値 | UInt32 | いいえ | このアカウントが発行した通貨を他のユーザが相互に送金する際に、これらのユーザに請求する[送金手数料](../../../../concepts/tokens/transfer-fees.md)。 |
|
||||
| `WalletLocator` | 文字列 | Hash256 | いいえ | ユーザが設定できる任意の256bit値。 |
|
||||
| `WalletLocator` | 文字列 | UInt256 | いいえ | ユーザが設定できる任意の256bit値。 |
|
||||
| `WalletSize` | 数値 | UInt32 | いいえ | 未使用。(コード上ではこのフィールドをサポートしていますが、設定する方法はありません)。 |
|
||||
|
||||
## AMMの特殊なAccountRootエントリ
|
||||
|
||||
@@ -53,15 +53,15 @@ labels:
|
||||
| `Amendments` | 配列 | VECTOR256 | いいえ | _(省略可)_ 現在有効なすべてのAmendmentの256ビット[Amendment ID](../../../../concepts/networks-and-servers/amendments.md)からなる配列。省略されている場合は、有効なAmendmentがありません。 |
|
||||
| `Flags` | 数値 | UInt32 | はい | ブール値フラグのビットマップ。Amendmentオブジェクトタイプにはフラグが定義されていないため、この値は常に`0`です。 |
|
||||
| `LedgerEntryType` | 文字列 | UInt16 | はい | 値が`0x0066`(文字列`Amendments`にマッピング)の場合は、このオブジェクトがXRP **Ledgerに対するAmendmentのステータスを記述していることを示します**。 |
|
||||
| `Majorities` | 配列 | STArray | いいえ | _(省略可)_ 過半数の支持を得ているがまだ有効になっていないAmendmentのステータスを記述するオブジェクトの配列。省略されている場合は、過半数の支持を得ている保留中のAmendmentがありません。 |
|
||||
| `PreviousTxnID` | 文字列 | Hash256 | いいえ | このエントリを最後に変更したトランザクションの識別ハッシュ。_([fixPreviousTxnID amendment][]により追加されました。)_ |
|
||||
| `Majorities` | 配列 | Array | いいえ | _(省略可)_ 過半数の支持を得ているがまだ有効になっていないAmendmentのステータスを記述するオブジェクトの配列。省略されている場合は、過半数の支持を得ている保留中のAmendmentがありません。 |
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | いいえ | このエントリを最後に変更したトランザクションの識別ハッシュ。_([fixPreviousTxnID amendment][]により追加されました。)_ |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | いいえ | このエントリを最後に変更したトランザクションが含まれる[レジャーインデックス](../ledger-header.md)。_([fixPreviousTxnID amendment][]により追加されました。)_ |
|
||||
|
||||
`Majorities`フィールドにメンバーが含まれている場合、各メンバーは`Majority`フィールドのみが含まれているオブジェクトです。このフィールドの内容は、以下のフィールドからなるネストオブジェクトです。
|
||||
|
||||
| 名前 | JSONの型 | [内部の型][] | 説明 |
|
||||
|-------------------|----------|--------------|-------------|
|
||||
| `Amendment` | 文字列 | Hash256 | 保留中のAmendmentのAmendment ID。 |
|
||||
| `Amendment` | 文字列 | UInt256 | 保留中のAmendmentのAmendment ID。 |
|
||||
| `CloseTime` | 数値 | UInt32 | このAmendmentが最後に過半数の支持を得たレジャーバージョンの[`close_time`フィールド](../ledger-header.md)。 |
|
||||
|
||||
[Amendmentプロセス](../../../../concepts/networks-and-servers/amendments.md#amendmentプロセス)では、80%以上のバリデータが新しいAmendmentを支持してバリデータのコンセンサスが得られると、`tfGotMajority`フラグを指定した[EnableAmendment][]疑似トランザクションを使用してこの新しいAmendmentが`Majorities`フィールドに追加されます。保留中のAmendmentの支持が80%を下回ると、`tfLostMajority`フラグが指定された[EnableAmendment][]疑似トランザクションによりそのAmendmentが`Majorities`配列から削除されます。Amendmentが`Majorities`フィールドに含まれている状態が2週間以上継続している場合、フラグが指定されていない[EnableAmendment][]疑似トランザクションによってそのAmendmentは`Majorities`から削除され、`Amendments`フィールドに恒久的に追加されます。
|
||||
|
||||
@@ -68,12 +68,12 @@ _([AMM amendment][]により追加されました。)_
|
||||
| `Asset` | オブジェクト | STIssue | はい | このAMMが保有する2つのアセットのうちの1つの定義。JSONでは、`currency`と`issuer`フィールドを持つオブジェクトになります。 |
|
||||
| `Asset2` | オブジェクト | STIssue | はい | このAMMが保有するもう一つの資産の定義。JSONでは、`currency`と`issuer`フィールドを持つオブジェクトになります。 |
|
||||
| `Account` | 文字列 | AccountID | はい | このAMMの資産を保有する[特殊なアカウント](accountroot.md#ammの特殊なaccountrootエントリ)のアドレス。 |
|
||||
| `AuctionSlot` | オブジェクト | STObject | いいえ | オークションスロットの現在の所有者の詳細。[オークションスロットオブジェクト](#オークションスロットオブジェクト)形式です。|
|
||||
| `AuctionSlot` | オブジェクト | Object | いいえ | オークションスロットの現在の所有者の詳細。[オークションスロットオブジェクト](#オークションスロットオブジェクト)形式です。|
|
||||
| `LPTokenBalance` | [通貨額][] | Amount | はい | AMMインスタンスの流動性供給者トークンの発行残高の合計。このトークンの保有者は、保有量に比例してAMMの取引手数料に投票したり、取引手数料の徴収とともに増えていくAMMの資産の一部とトークンを交換したりすることができます。 |
|
||||
| `PreviousTxnID` | 文字列 | Hash256 | いいえ | このエントリを最後に変更したトランザクションの識別ハッシュ。_([fixPreviousTxnID amendment][]により追加されました。)_ |
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | いいえ | このエントリを最後に変更したトランザクションの識別ハッシュ。_([fixPreviousTxnID amendment][]により追加されました。)_ |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | いいえ | このエントリを最後に変更したトランザクションが含まれる[レジャーインデックス](../ledger-header.md)。_([fixPreviousTxnID amendment][]により追加されました。)_ |
|
||||
| `TradingFee` | 数値 | UInt16 | はい | AMMインスタンスに対する取引に課される手数料のパーセンテージを1/100,000の単位で指定します。最大値は1000で、これは1%の手数料となります。 |
|
||||
| `VoteSlots` | 配列 | STArray | いいえ | プールの取引手数料に関する投票を表す、投票オブジェクトのリスト。|
|
||||
| `VoteSlots` | 配列 | Array | いいえ | プールの取引手数料に関する投票を表す、投票オブジェクトのリスト。|
|
||||
|
||||
|
||||
### AuctionSlotオブジェクト
|
||||
@@ -83,7 +83,7 @@ _([AMM amendment][]により追加されました。)_
|
||||
| フィールド | JSONの型 | [内部の型][] | 必須? | 説明 |
|
||||
|:----------------|:--------------------|:------------------|:----------|:--|
|
||||
| `Account` | 文字列 - アドレス | AccountID | はい | このオークションスロットの現在の所有者。 |
|
||||
| `AuthAccounts` | 配列 | STArray | いいえ | AMMインスタンスに対して取引手数料を割引した価格で取引することを許可された、最大4つの追加アカウントのリスト。 |
|
||||
| `AuthAccounts` | 配列 | Array | いいえ | AMMインスタンスに対して取引手数料を割引した価格で取引することを許可された、最大4つの追加アカウントのリスト。 |
|
||||
| `DiscountedFee` | 文字列 | UInt32 | はい | オークションスロットの所有者に請求される取引手数料で、`TradingFee`と同じフォーマットです。これは通常の取引手数料の1/10です。 |
|
||||
| `Price` | [通貨額][] | Amount | はい | オークションスロットの所有者がこのスロットを落札するために支払った金額(LPトークン)。 |
|
||||
| `Expiration` | 文字列 | UInt32 | はい | このスロットの有効期限が切れる[Rippleエポック以降の経過秒数][]で指定した時刻。 |
|
||||
|
||||
@@ -45,10 +45,10 @@ _([Checks Amendment][]が必要です)_
|
||||
| `DestinationNode` | 文字列 | UInt64 | いいえ | _(省略可)_ 送金先の所有者ディレクトリが複数ページで構成されている場合に、このオブジェクトにリンクしているページを示すヒントです。 |
|
||||
| `DestinationTag` | 数値 | UInt32 | いいえ | _(省略可)_ このCheckの送金先(送金先アドレスのホスティングされている受取人など)を詳しく指定するための任意のタグ。 |
|
||||
| `Expiration` | 数値 | UInt32 | いいえ | _(省略可)_ 経過後にこのCheckが有効期限切れとみなされる時刻を示します。詳細は[時間の指定][]をご覧ください。 |
|
||||
| `InvoiceID` | 文字列 | Hash256 | いいえ | _(省略可)_ このCheckの具体的な理由または識別子として送金元が指定する任意の256ビットハッシュ。 |
|
||||
| `InvoiceID` | 文字列 | UInt256 | いいえ | _(省略可)_ このCheckの具体的な理由または識別子として送金元が指定する任意の256ビットハッシュ。 |
|
||||
| `LedgerEntryType` | 文字列 | UInt16 | はい | 値`0x0043`が文字列`Check`にマッピングされている場合は、このオブジェクトがCheckオブジェクトであることを示します。 |
|
||||
| `OwnerNode` | 文字列 | UInt64 | はい | 送金元の所有者ディレクトリが複数ページで構成されている場合に、このオブジェクトにリンクしているページを示すヒントです。**注記:** このオブジェクトには、オブジェクトを含む所有者ディレクトリへの直接リンクは含まれていません。これは、その値を`Account`から取得できるためです。 |
|
||||
| `PreviousTxnID` | 文字列 | Hash256 | はい | 最後にこのオブジェクトを変更したトランザクションの識別用ハッシュ。 |
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | はい | 最後にこのオブジェクトを変更したトランザクションの識別用ハッシュ。 |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | はい | 最後にこのオブジェクトを変更したトランザクションを含む[レジャーインデックス][]。 |
|
||||
| `SendMax` | 文字列またはオブジェクト | Amount | はい | このCheckで送金元から引き落とすことができる最大通貨額。Checkの換金が成功すると、送金先に同じ通貨で最大この額までの資金が入金されます。 |
|
||||
| `Sequence` | 数値 | UInt32 | はい | このCheckを作成した[CheckCreateトランザクション][]のシーケンス番号。 |
|
||||
|
||||
@@ -36,7 +36,7 @@ status: not_enabled
|
||||
| `Expiration` | 数値 | UInt32 | いいえ | 資格情報が期限切れとなる時間([リップルエポックからの秒数][])。 |
|
||||
| `Issuer` | 文字列 - [アドレス][] | AccountID | はい | この資格情報を発行したアカウント。 |
|
||||
| `IssuerNode` | 文字列 | UInt64 | はい | ディレクトリが複数のページで構成される場合に、発行者のディレクトリのどのページがこのエントリにリンクしているかを示すヒント。 |
|
||||
| `PreviousTxnID` | 文字列 - [ハッシュ][] | Hash256 | はい | このエントリを最後に変更したトランザクションの識別ハッシュ。 |
|
||||
| `PreviousTxnID` | 文字列 - [ハッシュ][] | UInt256 | はい | このエントリを最後に変更したトランザクションの識別ハッシュ。 |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | はい | このオブジェクトを最後に変更したトランザクションを含む[レジャーインデックス][Ledger Index]。 |
|
||||
| `Subject` | 文字列 - [アドレス][] | AccountID | はい | この資格情報の対象となるアカウント。 |
|
||||
| `SubjectNode` | 文字列 | UInt64 | はい | ディレクトリが複数のページで構成される場合に、対象の所有者ディレクトリのどのページがこのエントリにリンクしているかを示すヒント。 |
|
||||
|
||||
@@ -66,7 +66,7 @@ labels:
|
||||
| `AuthorizeCredentials` | 配列 | Array | いいえ | 事前承認を受けた資格情報のセット。(これらの資格情報を持つアカウントは事前承認されます。)この配列の長さは最小1、最大8です。 |
|
||||
| `LedgerEntryType` | 文字列 | UInt16 | はい | 値`0x0070`が文字列`DepositPreauth`にマッピングされている場合は、これがDepositPreauthオブジェクトであることを示します。 |
|
||||
| `OwnerNode` | 文字列 | UInt64 | はい | 送金元アドレスの所有者のディレクトリが複数ページで構成されている場合に、このオブジェクトにリンクしているページを示すヒントです。**注記:** このオブジェクトには、オブジェクトを含む所有者ディレクトリへの直接リンクは含まれていません。これは、その値を`Account`から取得できるためです。 |
|
||||
| `PreviousTxnID` | 文字列 - [ハッシュ][] | Hash256 | はい | このオブジェクトを最後に変更したトランザクションの識別用ハッシュ。 |
|
||||
| `PreviousTxnID` | 文字列 - [ハッシュ][] | UInt256 | はい | このオブジェクトを最後に変更したトランザクションの識別用ハッシュ。 |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | はい | このオブジェクトを最後に変更したトランザクションが記録された[レジャーインデックス][]。 |
|
||||
|
||||
各エントリには、`Authorize`フィールドまたは`AuthorizeCredentials`フィールドのいずれかが必要ですが、両方を持つことはできません。
|
||||
|
||||
@@ -42,7 +42,7 @@ _([DID Amendment][])_
|
||||
| `Data` | 文字列 | Blob | いいえ | DIDに関連付けられたID情報の公開証明。`Data`フィールドの有効性はチェックされず、最大長は 256 バイトに制限されます。 |
|
||||
| `LedgerEntryType` | 文字列 | UInt16 | はい | 文字列`DID`にマップされる値`0x0049`は、このオブジェクトがDIDオブジェクトであることを示します。 |
|
||||
| `OwnerNode` | 文字列 | UInt64 | はい | ディレクトリが複数のページで構成されている場合に、送信者のオーナーディレクトリのどのページがこのエントリにリンクしているかを示すヒント。 |
|
||||
| `PreviousTxnID` | 文字列 | Hash256 | はい | このオブジェクトを最近変更したトランザクションの識別ハッシュ。 |
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | はい | このオブジェクトを最近変更したトランザクションの識別ハッシュ。 |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | はい | このオブジェクトを最後に変更したトランザクションを含むレジャーインデックス。 |
|
||||
| `URI` | 文字列 | Blob | いいえ | 対応するDIDドキュメントまたはDIDに関連付けられたデータを指すユニバーサルリソース識別子。このフィールドにはHTTP(S)URLまたはIPFS URIを指定できます。このフィールドの有効性はチェックされず、最大長は256バイトに制限されます。 |
|
||||
|
||||
|
||||
@@ -101,15 +101,15 @@ labels:
|
||||
| `IndexNext` | 数値 | UInt64 | いいえ | (省略可)このディレクトリに複数のページが含まれている場合、このIDはチェーン内の次のオブジェクトにリンクし、末尾でラップアラウンドします。 |
|
||||
| `IndexPrevious` | 数値 | UInt64 | いいえ | (省略可)このディレクトリに複数のページが含まれている場合、このIDはチェーン内の前のオブジェクトにリンクし、先頭でラップアラウンドします。 |
|
||||
| `LedgerEntryType` | 文字列 | UInt16 | はい | 値が`0x0064`(文字列`DirectoryNode`にマッピング)の場合は、このオブジェクトがディレクトリの一部であることを示します。 |
|
||||
| `NFTokenID` | 文字列 | Hash256 | いいえ |(NFTオファーディレクトリのみ) 購入または売却オファーに紐づくNFTのID。. |
|
||||
| `NFTokenID` | 文字列 | UInt256 | いいえ |(NFTオファーディレクトリのみ) 購入または売却オファーに紐づくNFTのID。. |
|
||||
| `Owner` | 文字列 | AccountID | いいえ | (所有者ディレクトリのみ)このディレクトリ内のオブジェクトを所有するアカウントのアドレス。 |
|
||||
| `PreviousTxnID` | 文字列 | Hash256 | いいえ | このエントリを最後に変更したトランザクションの識別ハッシュ。_([fixPreviousTxnID amendment][]により追加されました。)_ |
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | いいえ | このエントリを最後に変更したトランザクションの識別ハッシュ。_([fixPreviousTxnID amendment][]により追加されました。)_ |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | いいえ | このエントリを最後に変更したトランザクションが含まれる[レジャーインデックス](../ledger-header.md)。_([fixPreviousTxnID amendment][]により追加されました。)_ |
|
||||
| `RootIndex` | 文字列 | Hash256 | はい | このディレクトリのルートオブジェクトのID。 |
|
||||
| `TakerGetsCurrency` | 文字列 | Hash160 | いいえ | (オファーディレクトリのみ)このディレクトリのオファーのTakerGetsの額の通貨コード。 |
|
||||
| `TakerGetsIssuer` | 文字列 | Hash160 | いいえ | (オファーディレクトリのみ)このディレクトリのオファーのTakerGetsの額のイシュアー。 |
|
||||
| `TakerPaysCurrency` | 文字列 | Hash160 | いいえ | (オファーディレクトリのみ)このディレクトリのオファーのTakerPaysの額の通貨コード。 |
|
||||
| `TakerPaysIssuer` | 文字列 | Hash160 | いいえ | (オファーディレクトリのみ)このディレクトリのオファーのTakerPaysの額のイシュアー。 |
|
||||
| `RootIndex` | 文字列 | UInt256 | はい | このディレクトリのルートオブジェクトのID。 |
|
||||
| `TakerGetsCurrency` | 文字列 | UInt160 | いいえ | (オファーディレクトリのみ)このディレクトリのオファーのTakerGetsの額の通貨コード。 |
|
||||
| `TakerGetsIssuer` | 文字列 | UInt160 | いいえ | (オファーディレクトリのみ)このディレクトリのオファーのTakerGetsの額のイシュアー。 |
|
||||
| `TakerPaysCurrency` | 文字列 | UInt160 | いいえ | (オファーディレクトリのみ)このディレクトリのオファーのTakerPaysの額の通貨コード。 |
|
||||
| `TakerPaysIssuer` | 文字列 | UInt160 | いいえ | (オファーディレクトリのみ)このディレクトリのオファーのTakerPaysの額のイシュアー。 |
|
||||
|
||||
|
||||
## {% $frontmatter.seo.title %}のフラグ
|
||||
|
||||
@@ -51,7 +51,7 @@ _([Escrow Amendment][]により追加されました。)_
|
||||
| `FinishAfter` | 数値 | UInt32 | いいえ | _(省略可)_ [Rippleエポック以降の経過秒数][]で示される時刻が経過した後、保留中の支払を完了できます。この時刻より前の[EscrowFinishトランザクション][]はすべて失敗します。(特にこれは、前の検証済みレジャーの閉鎖時刻と比較されます。) |
|
||||
| `LedgerEntryType` | 文字列 | UInt16 | はい | 値`0x0075`が文字列`Escrow`にマッピングされている場合は、このオブジェクトが`Escrow`オブジェクトであることを示します。 |
|
||||
| `OwnerNode` | 文字列 | UInt64 | はい | 所有者のディレクトリが複数ページで構成されている場合に、このオブジェクトにリンクしているページを示すヒントです。**注記:** このオブジェクトには、オブジェクトを含む所有者ディレクトリへの直接リンクは含まれていません。これは、その値を`Account`から取得できるためです。 |
|
||||
| `PreviousTxnID` | 文字列 | Hash256 | はい | 最後にこのオブジェクトを変更したトランザクションの識別用ハッシュ。 |
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | はい | 最後にこのオブジェクトを変更したトランザクションの識別用ハッシュ。 |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | はい | 最後にこのオブジェクトを変更したトランザクションが記録された[レジャーインデックス][]。 |
|
||||
| `SourceTag` | 数値 | UInt32 | いいえ | _(省略可)_ この保留中の支払の支払元(所有者のアドレスにホスティングされている受取人など)を詳しく指定するための任意のタグ。 |
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ labels:
|
||||
| `ReferenceFeeUnits` | 数値 | UInt32 | 「手数料単位」に変換された`BaseFee` |
|
||||
| `ReserveBase` | 数値 | UInt32 | XRP Ledgerのアカウントの[基本準備金](../../../../concepts/accounts/reserves.md#基本準備金と所有者準備金)(XRPのdrop数)。 |
|
||||
| `ReserveIncrement` | 数値 | UInt32 | 所有するオブジェクトごとに増加する[所有者準備金](../../../../concepts/accounts/reserves.md#基本準備金と所有者準備金)(XRPのdrop数)。 |
|
||||
| `PreviousTxnID` | 文字列 | Hash256 | このエントリを最後に変更したトランザクションの識別ハッシュ。_([fixPreviousTxnID amendment][]により追加されました。)_ |
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | このエントリを最後に変更したトランザクションの識別ハッシュ。_([fixPreviousTxnID amendment][]により追加されました。)_ |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | このエントリを最後に変更したトランザクションが含まれる[レジャーインデックス](../ledger-header.md)。_([fixPreviousTxnID amendment][]により追加されました。)_ |
|
||||
|
||||
{% admonition type="danger" name="警告" %}このレジャーオブジェクトのJSONフォーマットは一般的ではありません。`BaseFee`、`ReserveBase`、および`ReserveIncrement`はXRPのdrop数を示しますが、通常の[XRP指定][通貨額]フォーマットでは***ありません*** 。{% /admonition %}
|
||||
|
||||
@@ -43,7 +43,7 @@ _([MPTokensV1_1 amendment][]により追加されました。)_
|
||||
| `MPTokenIssuanceID` | 文字列 | UInt192 | `MPTokenIssuance`の識別子。 |
|
||||
| `MPTAmount` | 文字列 | UInt64 | この値は、所有者が現在保有しているトークンの正の数量を指定します。このフィールドの有効な値は0x0から0x7FFFFFFFFFFFFFFFの間です。 |
|
||||
| `Flags` | 数値 | UInt32 | (デフォルト) [MPTokenのフラグ](#mptokenのフラグ)をご覧ください。 |
|
||||
| `PreviousTxnID` | 文字列 | Hash256 | このオブジェクトを最後に変更したトランザクションのトランザクションID。 |
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | このオブジェクトを最後に変更したトランザクションのトランザクションID。 |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | このオブジェクトを最後に変更したトランザクションを含むレジャーのシーケンス番号。 |
|
||||
| `OwnerNode` | 文字列 | UInt64 | (デフォルト) 所有者のディレクトリでこのアイテムが参照されているページ。 |
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ _([MPTokensV1_1 amendment][]により追加されました。)_
|
||||
| `OutstandingAmount` | 文字列 | UInt64 | すべてのトークン保有者に発行されたトークン量の合計を指定します。この値は、値が0の場合にLedger上で少ないスペースを占めるように、デフォルトタイプとしてLedgerに保存されます。この値は、発行者が非発行者アカウントにMPTを支払うたびに増加し、非発行者が発行アカウントにMPTを支払うたびに減少します。 |
|
||||
| `TransferFee` | 数値 | UInt16 | この値は、トークンの二次販売が許可されている場合に、発行者が課す手数料をベーシスポイントの10分の1単位で指定します。このフィールドの有効な値は0から50,000までです。値1は1/10ベーシスポイントまたは0.001%に相当し、0%から50%までの手数料設定を可能にします。50,000の`TransferFee`は50%に相当します。このフィールドのデフォルト値は0です。転送手数料の小数点以下は切り捨てられます。支払いが小さい場合、手数料は0に切り捨てられる可能性があります。発行者は、MPTの`AssetScale`が十分に大きいことを確認する必要があります。 |
|
||||
| `MPTokenMetadata` | 文字列 | Blob | この発行に関する任意のメタデータで、16進数形式です。このフィールドの制限は1024バイトです。 |
|
||||
| `PreviousTxnID` | 文字列 | Hash256 | このオブジェクトを最後に変更したトランザクションのトランザクションID。 |
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | このオブジェクトを最後に変更したトランザクションのトランザクションID。 |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | このオブジェクトを最後に変更したトランザクションを含むレジャーのシーケンス番号。 |
|
||||
| `OwnerNode` | 文字列 | UInt64 | このアイテムが参照されている所有者のディレクトリのページ。 |
|
||||
| `Sequence` | 数値 | UInt32 | 特定の送信者からの発行が、Issuanceが後で削除された場合でも一度しか存在できないことを保証するために使用される32ビットの符号なし整数。新しい発行が作成されるたびに、この値はアカウントの現在の`Sequence`番号と一致する必要があります。`Tickets`は通常の順序外でトランザクションを送信できるように、これらのルールから一部例外を設けています。`Tickets`は後で使用するために予約されたシーケンス番号を表します。トランザクションは通常のアカウントSequence番号の代わりに`Ticket`を使用できます。MPTを作成するトランザクションがレジャーに含まれるたびに、トランザクションが正常に実行されたか、tecクラスのエラーコードで失敗したかに関係なく、シーケンス番号(またはTicket)が使用されます。その他のトランザクションの失敗はレジャーに含まれないため、送信者のシーケンス番号は変更されません(また、他の影響もありません)。未確認のMPT作成トランザクションが同じIssuerとシーケンス番号を持つことは可能です。そのようなトランザクションは相互に排他的であり、検証済みレジャーに含まれるのは最大で1つだけです。(他のトランザクションは最終的に効果がありません。) |
|
||||
|
||||
@@ -42,7 +42,7 @@ _([NegativeUNL amendment][]により追加されました。)_
|
||||
| `DisabledValidators` | 配列 | Array | いいえ | `DisabledValidator`オブジェクト(下記参照)は、現在無効になっている信頼できるバリデータを表すリストです。 |
|
||||
| `Flags` | 数値 | UInt32 | はい | 真偽値フラグのビットマップ。NegativeUNLオブジェクトタイプにはフラグが定義されていないため、この値は常に`0`となります。 |
|
||||
| `LedgerEntryType` | 文字列 | UInt16 | はい | `0x004E`は文字列`NegativeUNL`に対応し、このオブジェクトがNegativeUNLであることを意味します。 |
|
||||
| `PreviousTxnID` | 文字列 | Hash256 | いいえ | このエントリを最後に変更したトランザクションの識別ハッシュ。_([fixPreviousTxnID amendment][]により追加されました。)_ |
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | いいえ | このエントリを最後に変更したトランザクションの識別ハッシュ。_([fixPreviousTxnID amendment][]により追加されました。)_ |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | いいえ | このエントリを最後に変更したトランザクションが含まれる[レジャーインデックス](../ledger-header.md)。_([fixPreviousTxnID amendment][]により追加されました。)_ |
|
||||
| `ValidatorToDisable` | 文字列 | Blob | いいえ | 次回のフラグレジャーで無効化される予定の信頼できるバリデータの公開鍵を表します。 |
|
||||
| `ValidatorToReEnable` | 文字列 | Blob | いいえ | 次回のフラグレジャーで再有効化される予定のネガティブUNLの信頼できるバリデータの公開鍵を表します。 |
|
||||
|
||||
@@ -39,11 +39,11 @@ _([NonFungibleTokensV1_1 amendment][]により追加されました)_
|
||||
| `Expiration` | 数値 | UInt32 | いいえ | オファーが有効でなくなる時刻。値は、リップルエポックからの秒数です。 |
|
||||
| `Flags` | 数値 | UInt32 | はい | このオブジェクトに関連付けられたフラグのセットで、様々なオプションや設定を指定するために使用されます。フラグは、以下の表に示すとおりです。 |
|
||||
| `LedgerEntryType` | 文字列 | UInt16 | はい | レジャーオブジェクトの種類を示します(0x0074)。 |
|
||||
| `NFTokenID` | 文字列 | Hash256 | はい | このオファーが参照するNFTokenオブジェクトのNFTokenID。 |
|
||||
| `NFTokenID` | 文字列 | UInt256 | はい | このオファーが参照するNFTokenオブジェクトのNFTokenID。 |
|
||||
| `NFTokenOfferNode` | 文字列 | UInt64 | いいえ | トークン購入または売却のオファーディレクトリの中で、このトークンが記録されている内部的な台帳です。このフィールドを使用することで、オファーを効率的に削除することができます。 |
|
||||
| `Owner` | 文字列 | AccountID | はい | オファーの作成者であり、所有者であるアカウント。NFTokenの現在の所有者のみがNFTokenの売却オファーを作成できますが、NFTokenの購入オファーはどのアカウントでも作成できます。 |
|
||||
| `OwnerNode` | 文字列 | UInt64 | いいえ | このトークンが記録されているオーナーディレクトリ内のページを示す、内部的な台帳です。このフィールドを使用することで、オファーを効率的に削除することができます。 |
|
||||
| `PreviousTxnID` | 文字列 | Hash256 | はい | このオブジェクトを最も最近更新したトランザクションの識別ハッシュ。 |
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | はい | このオブジェクトを最も最近更新したトランザクションの識別ハッシュ。 |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | はい | このオブジェクトを最も最近更新したトランザクションを含むレジャーのインデックス。 |
|
||||
|
||||
|
||||
|
||||
@@ -47,10 +47,10 @@ _([NonFungibleTokensV1_1 amendment][]により追加されました)_
|
||||
| 名前 | JSONの型 | [内部の型][] | 必須? | 説明 |
|
||||
|:--------------------|:----------|:-----------|:----------|:------------|
|
||||
| `LedgerEntryType` | 文字列 | UInt16 | はい | レジャーオブジェクトのタイプを識別文字列です。予約されているレジャーの種類は、0x0050です。|
|
||||
| `NextPageMin` | 文字列 | Hash256 | いいえ | 次のページの位置情報(もしあれば)。このフィールドの使用方法は、NFTokenオブジェクトの追加の項に記載しています。|
|
||||
| `NextPageMin` | 文字列 | UInt256 | いいえ | 次のページの位置情報(もしあれば)。このフィールドの使用方法は、NFTokenオブジェクトの追加の項に記載しています。|
|
||||
| `NFTokens` | オブジェクト | TOKEN | はい | このNFTokenPageオブジェクトに含まれる`NFToken`オブジェクトのコレクション。本仕様では、1ページあたり32のNFTokenオブジェクトを上限としています。オブジェクトは、`NFTokenID`をソートパラメータとして使用して、低いものから高いものへとソートされた順序で格納されています。|
|
||||
| `PreviousPageMin` | 文字列 | Hash256 | いいえ | 前のページの位置情報(もしあれば)。このフィールドの使用方法は、NFTokenオブジェクトの追加の項に記載しています。|
|
||||
| `PreviousTxnID` | 文字列 | HASH256 | いいえ | このNFTokenPageオブジェクトを最も最近変更したトランザクションのトランザクションIDの情報を示します。|
|
||||
| `PreviousPageMin` | 文字列 | UInt256 | いいえ | 前のページの位置情報(もしあれば)。このフィールドの使用方法は、NFTokenオブジェクトの追加の項に記載しています。|
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | いいえ | このNFTokenPageオブジェクトを最も最近変更したトランザクションのトランザクションIDの情報を示します。|
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | いいえ | このNFTokenPageオブジェクトを最も最近変更したトランザクションを含むレジャーのシーケンスを示します。|
|
||||
|
||||
|
||||
|
||||
@@ -43,13 +43,13 @@ labels:
|
||||
| 名前 | JSONの型 | [内部の型][] | 必須? | 説明 |
|
||||
|-------------------|-----------|-----------|------|-------|
|
||||
| `Account` | 文字列 | AccountID | はい | このオファーを所有するアカウントのアドレス。 |
|
||||
| `BookDirectory` | 文字列 | Hash256 | はい | このオファーにリンクしている[オファーディレクトリー](directorynode.md)のID。 |
|
||||
| `BookDirectory` | 文字列 | UInt256 | はい | このオファーにリンクしている[オファーディレクトリー](directorynode.md)のID。 |
|
||||
| `BookNode` | 文字列 | UInt64 | はい | Offerディレクトリが複数ページで構成されている場合に、このオブジェクトにリンクしているページを示すヒント。 |
|
||||
| `Expiration` | 数値 | UInt32 | いいえ | (省略可)このオファーが資金不足とみなされる時刻。詳細は、[時間の指定][]をご覧ください。 |
|
||||
| `Flags` | 数値 | UInt32 | はい | このオファーに対して有効になっているブール値フラグのビットマップ。 |
|
||||
| `LedgerEntryType` | 文字列 | UInt16 | はい | 値が`0x006F`(文字列`Offer`にマッピング)の場合は、このオブジェクトが通貨取引オーダーを記述することを示す。 |
|
||||
| `OwnerNode` | 文字列 | UInt64 | はい | 所有者ディレクトリーが複数ページで構成されている場合に、このオブジェクトにリンクしているページを示すヒント。**注記:** このオファーには、オファーを含む所有者ディレクトリーへの直接リンクは含まれていません。これは、その値を`Account`から取得できるためです。 |
|
||||
| `PreviousTxnID` | 文字列 | Hash256 | はい | 最後にこのオブジェクトを変更したトランザクションの識別用ハッシュ。 |
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | はい | 最後にこのオブジェクトを変更したトランザクションの識別用ハッシュ。 |
|
||||
| `Sequence` | 数値 | UInt32 | はい | `Offer`オブジェクトを作成した[OfferCreate][]トランザクションの`Sequence`値。`Account`とこのフィールドの組み合わせによってこのオファーが識別されます。 |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | はい | 最後にこのオブジェクトを変更したトランザクションが記録された[レジャーインデックス][]。 |
|
||||
| `TakerPays` | 文字列またはオブジェクト | Amount | はい | オファー作成者がリクエストする残額と通貨の種類。 |
|
||||
|
||||
@@ -54,7 +54,7 @@ _([PayChan Amendment][]により追加されました。)_
|
||||
| `Expiration` | 数値 | UInt32 | いいえ | _(省略可)_ このPayment Channelの変更可能な有効期限([Rippleエポック以降の経過秒数][])。この値が指定されており、前のレジャーの[`close_time`フィールド](../ledger-header.md)よりも小さい場合、Channelは有効期限切れです。詳細は、[Channel有効期限の設定](#channel有効期限の設定)をご覧ください。 |
|
||||
| `LedgerEntryType` | 文字列 | UInt16 | はい | 値`0x0078`が文字列`PayChannel`にマッピングされている場合は、このオブジェクトがPayment Channelオブジェクトであることを示します。 |
|
||||
| `OwnerNode` | 文字列 | UInt64 | はい | 支払元アドレスの所有者のディレクトリが複数ページで構成されている場合に、このオブジェクトにリンクしているページを示すヒントです。 |
|
||||
| `PreviousTxnID` | 文字列 | Hash256 | はい | 最後にこのオブジェクトを変更したトランザクションの識別用ハッシュ。 |
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | はい | 最後にこのオブジェクトを変更したトランザクションの識別用ハッシュ。 |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | はい | 最後にこのオブジェクトを変更したトランザクションが記録された[レジャーインデックス][]。 |
|
||||
| `PublicKey` | 文字列 | PubKey | はい | このChannelに対するクレームの署名に使用できるキーペアの公開鍵(16進数)。有効なsecp256k1公開鍵またはEd25519公開鍵を指定できます。Channelを作成したトランザクションによって設定されます。Channelに対するクレームに使用される公開鍵と一致している必要があります。Channelの支払元アドレスは、署名付きクレームなしでこのChannelから宛先にXRPを送金することもできます。 |
|
||||
| `SettleDelay` | 数値 | UInt32 | はい | ChannelにXRPがまだある場合に、支払元アドレスがそのChannelを閉鎖するまでに待機する秒数。値が小さい場合、支払元アドレスがChannelの閉鎖を要求した後で、宛先アドレスが未処理のクレームを精算できる時間が短くなります。32ビットの符号なし整数に収まる値(0~2^32-1)であれば任意の値を指定できます。これは、Channelを作成するトランザクションにより設定されます。 |
|
||||
|
||||
@@ -64,7 +64,7 @@ labels:
|
||||
| `LowNode` | 文字列 | UInt64 | はい | (一部の履歴レジャーでは省略されます)低位アカウントの所有者ディレクトリが複数ページで構成されている場合に、このオブジェクトにリンクしているページを示すヒントです。 |
|
||||
| `LowQualityIn` | 数値 | UInt32 | いいえ | (省略可)暗黙の比率(LowQualityIn:1,000,000,000)で整数として低位アカウントにより設定された着信品質。値が0の場合は10億または額面価格と同等です。 |
|
||||
| `LowQualityOut` | 数値 | UInt32 | いいえ | (省略可)暗黙の比率(LowQualityOut:1,000,000,000)で整数として低位アカウントにより設定された発信品質。値が0の場合は10億または額面価格と同等です。 |
|
||||
| `PreviousTxnID` | 文字列 | Hash256 | はい | 最後にこのオブジェクトを変更したトランザクションの識別用ハッシュ。 |
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | はい | 最後にこのオブジェクトを変更したトランザクションの識別用ハッシュ。 |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | はい | 最後にこのオブジェクトを変更したトランザクションが記録された[レジャーインデックス][]。 |
|
||||
|
||||
## RippleStateのフラグ
|
||||
@@ -82,6 +82,8 @@ labels:
|
||||
| `lsfHighNoRipple` | `0x00200000` | 2097152 | `tfSetNoRipple` | 高位アカウントで、このトラストラインから、同じアカウントのNoRippleフラグが設定されている他のトラストラインへの[Ripplingが無効化されています](../../../../concepts/tokens/fungible-tokens/rippling.md)。 |
|
||||
| `lsfLowFreeze` | `0x00400000` | 4194304 | `tfSetFreeze` | 低位アカウントがトラストラインをフリーズしており、高位アカウントから資産を移動できません。 |
|
||||
| `lsfHighFreeze` | `0x00800000` | 8388608 | `tfSetFreeze` | 高位アカウントがトラストラインをフリーズしており、低位アカウントから資産を移動できません。 |
|
||||
| `lsfLowDeepFreeze` | `0x02000000` | 33554432 |`tfSetLowDeepFreeze` | 低位アカウントがトラストラインをディープフリーズしており、高位アカウントは資産を移動できません。 |
|
||||
| `lsfHighDeepFreeze` | `0x04000000` | 67108864 | `tfSetHighDeepFreeze` | 高位アカウントがトラストラインをディープフリーズしており、低位アカウントは資産を移動できません。 |
|
||||
|
||||
トラストラインによって接続された2つのアカウントは、[TrustSetトランザクション][]を使用して、それぞれの設定を変更することができます。
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ _([MultiSign Amendment][]により追加されました。)_
|
||||
|:--------------------|:----------|:--------------|:---------------------------|
|
||||
| `LedgerEntryType` | 文字列 | UInt16 | 値が`0x0053`(文字列`SignerList`にマッピング)の場合は、これがSignerListオブジェクトであることを示します。 |
|
||||
| `Flags` | 数値 | UInt32 | このSignerListに対して有効になっているブール値フラグのビットマップ。詳細は、[SignerListのフラグ](#signerlistのフラグ)をご覧ください。 |
|
||||
| `PreviousTxnID` | 文字列 | Hash256 | 最後にこのオブジェクトを変更したトランザクションの識別用ハッシュ。 |
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | 最後にこのオブジェクトを変更したトランザクションの識別用ハッシュ。 |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | 最後にこのオブジェクトを変更したトランザクションが記録された[レジャーインデックス][]。 |
|
||||
| `OwnerNode` | 文字列 | UInt64 | 所有者ディレクトリーが複数ページで構成されている場合に、このオブジェクトにリンクしているページを示すヒントです。 |
|
||||
| `SignerEntries` | 配列 | 配列 | この署名者リストに記載されている署名者を表すSignerEntryオブジェクトの配列。 |
|
||||
@@ -74,7 +74,7 @@ _([MultiSign Amendment][]により追加されました。)_
|
||||
|:---------------|:----------|:--------------|:--------------------------------|
|
||||
| `Account` | 文字列 | AccountID | 署名がマルチシグに提供されるXRP Ledgerアドレス。レジャーの資金供給のあるアドレスである必要はありません。 |
|
||||
| `SignerWeight` | 数値 | UInt16 | この署名者による署名の重み。マルチシグは、付与された署名の重みの合計がSignerListの`SignerQuorum`値を超えている場合にのみ有効となります。 |
|
||||
| `WalletLocator` | 文字列 | Hash256 | (省略可)任意の16進数データ。これは署名者を識別するため、または他の関連する目的のために使用することができます。[ExpandedSignerList amendment][]により追加されました。 |
|
||||
| `WalletLocator` | 文字列 | UInt256 | (省略可)任意の16進数データ。これは署名者を識別するため、または他の関連する目的のために使用することができます。[ExpandedSignerList amendment][]により追加されました。 |
|
||||
|
||||
マルチシグトランザクションを処理する際に、サーバはトランザクション実行時にレジャーに関する`Account`値を間接参照します。アドレスが資金供給のある[AccountRootオブジェクト](accountroot.md)に対応して _いない_ 場合、そのアドレスに関連付けられているマスターシークレットによってのみ有効な署名を生成できます。アカウントがレジャーに _確かに_ 存在している場合は、アカウントの状態により異なります。アカウントにレギュラーキーが設定されている場合はレギュラーキーを使用できます。アカウントのマスターキーが無効化されていない場合に限り、アカウントのマスターキーを使用できます。マルチシグを別のマルチシグの一部として使用することはできません。
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ _([TicketBatch amendment][]が必要です)_
|
||||
| `Account` | 文字列 | AccountID | はい | このチケットを所有する[アカウント](../../../../concepts/accounts/index.md)です。 |
|
||||
| `LedgerEntryType` | 文字列 | UInt16 | はい | 文字列`Ticket`にマッピングされた値`0x0054`は、このオブジェクトが {% $frontmatter.seo.title %}エントリであることを示しています。 |
|
||||
| `OwnerNode` | 文字列 | UInt64 | はい | 送金元の所有者ディレクトリが複数ページで構成されている場合に、このオブジェクトにリンクしているページを示すヒントです。注記: このオブジェクトには、オブジェクトを含む所有者ディレクトリへの直接リンクは含まれていません。これは、その値を`Account`から取得できるためです。 |
|
||||
| `PreviousTxnID` | 文字列 | Hash256 | はい | 最後にこのオブジェクトを変更した[トランザクション](../../../../concepts/transactions/index.md)の識別用ハッシュ。 |
|
||||
| `PreviousTxnID` | 文字列 | UInt256 | はい | 最後にこのオブジェクトを変更した[トランザクション](../../../../concepts/transactions/index.md)の識別用ハッシュ。 |
|
||||
| `PreviousTxnLgrSeq` | 数値 | UInt32 | はい | 最後にこのオブジェクトを変更したトランザクションを含む[レジャーインデックス][Ledger Index]。 |
|
||||
| `TicketSequence` | 数値 | UInt32 | はい | 本チケットが設定する[シーケンス番号][]。 |
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ _([XChainBridge Amendment][] {% not-enabled /%} が必要です)_
|
||||
| フィールド | JSONの型 | [内部の型][] | 必須? | 説明 |
|
||||
|:--------------------------|:-------------|:--------------|:-----|:----|
|
||||
| `Account` | 文字列 | Account | はい | このオブジェクトを所有するアカウント。 |
|
||||
| `LedgerIndex` | 文字列 | Hash256 | はい | レジャーインデックスは、`XChainOwnedClaimID`の一意な接頭辞、`XChainClaimID`の実際の値、`XChainBridge`のフィールドのハッシュです。 |
|
||||
| `LedgerIndex` | 文字列 | UInt256 | はい | レジャーインデックスは、`XChainOwnedClaimID`の一意な接頭辞、`XChainClaimID`の実際の値、`XChainBridge`のフィールドのハッシュです。 |
|
||||
| `OtherChainSource` | 文字列 | Account | はい | 送信元チェーンで対応する`XChainCommit`を送信する必要があるアカウント。つまり、`OtherChainSource`が指定されていないと、別のアカウントが別の送信先を指定して資金を盗もうとする可能性があるということです。また、どのアカウントが`XChainCommit`トランザクションを送信するのかが分かるので、単一の署名セットのみを追跡することもできます。 |
|
||||
| `SignatureReward` | [通貨額][] | Amount | はい | Witnessサーバに支払う署名報酬の合計額。`Bridge`レジャー帳オブジェクトの`SignatureReward`の値以上でなければなりません。 |
|
||||
| `XChainBridge` | XChainBridge | XChain_Bridge | はい | このオブジェクトに紐づくブリッジのドアアカウントと資産。 |
|
||||
|
||||
@@ -59,7 +59,7 @@ _([XChainBridge Amendment][] {% not-enabled /%} が必要です)_
|
||||
| フィールド | JSONの型 | [内部の型][] | 必須? | 説明 |
|
||||
|:----------------------------------|:-------------|:--------------|:------|:------------|
|
||||
| `Account` | 文字列 | Account | はい | このオブジェクトを所有するアカウント。 |
|
||||
| `LedgerIndex` | 文字列 | Hash256 | はい | レジャーインデックスは、`XChainOwnedCreateAccountClaimID`の一意な接頭辞、`XChainAccountClaimCount`の実際の値、`XChainBridge`のフィールドのハッシュです。 |
|
||||
| `LedgerIndex` | 文字列 | UInt256 | はい | レジャーインデックスは、`XChainOwnedCreateAccountClaimID`の一意な接頭辞、`XChainAccountClaimCount`の実際の値、`XChainBridge`のフィールドのハッシュです。 |
|
||||
| `XChainAccountCreateCount` | 数値 | UInt64 | はい | クロスチェーン送金で作成されたアカウントの実行順序を決める整数。小さい数字は大きい数字より先に実行されなければなりません。 |
|
||||
| `XChainBridge` | XChainBridge | XChain_Bridge | はい | このオブジェクトに紐づくブリッジのドアアカウントと資産。 |
|
||||
| `XChainCreateAccountAttestations` | 配列 | Array | はい | Witnessサーバから収集された証明。これには、署名されたメッセージの再作成に必要なパラメータが含まれます。これには、その署名の量、どのチェーン(ロックまたは発行)、任意の宛先、報酬アカウントなどが含まれます。 |
|
||||
|
||||
@@ -15,13 +15,13 @@ labels:
|
||||
| フィールド | JSONの型 | [内部の型][] | 説明 |
|
||||
|:-----------------------------|:----------|:------------------|:--------------|
|
||||
| `ledger_index` | 文字列 | UInt32 | レジャーの[レジャーインデックス][レジャーインデックス]。APIメソッドの中には、この番号を引用符で囲んだ整数として表示するメソッドと、ネイティブJSON数値として表示するメソッドがあります。 |
|
||||
| `ledger_hash` | 文字列 | Hash256 | このレジャーバージョンの[SHA-512ハーフ][]。これは、このレジャーとそのすべての内容の一意のIDとして機能します。 |
|
||||
| `account_hash` | 文字列 | Hash256 | このレジャーの状態ツリー情報の[SHA-512ハーフ][]。 |
|
||||
| `ledger_hash` | 文字列 | UInt256 | このレジャーバージョンの[SHA-512ハーフ][]。これは、このレジャーとそのすべての内容の一意のIDとして機能します。 |
|
||||
| `account_hash` | 文字列 | UInt256 | このレジャーの状態ツリー情報の[SHA-512ハーフ][]。 |
|
||||
| `close_time` | 数値 | UInt32 | このレジャーバージョンが閉鎖されたおおよその時刻。Rippleエポック(2000-01-01 00:00:00)以降の経過秒数として示されます。この値は、`close_time_resolution`に基づいて丸められます。 |
|
||||
| `closed` | ブール値 | ブール値 | `true`の場合、このレジャーバージョンはこれ以上新しいトランザクションを受け入れません。(ただし、このレジャーバージョンが未検証の場合は、一連の異なるトランザクションが記録されている別のレジャーバージョンに置き換えられることがあります。) |
|
||||
| `parent_hash` | 文字列 | Hash256 | このバージョンの直前のレジャーバージョンの`ledger_hash`値。直前のレジャーインデックスの異なるバージョンが存在している場合、これはレジャーの生成元を示します。 |
|
||||
| `parent_hash` | 文字列 | UInt256 | このバージョンの直前のレジャーバージョンの`ledger_hash`値。直前のレジャーインデックスの異なるバージョンが存在している場合、これはレジャーの生成元を示します。 |
|
||||
| `total_coins` | 文字列 | UInt64 | レジャーのアカウントが保有するXRPの[XRPのdrop数][]の合計。トランザクション手数料により消却されたXRPは除外されます。一部のアカウントは、そのキーを知っている人がいない「ブラックホール」アカウントであるため、流通している実際のXRPの量はこれよりも少なくなります。 |
|
||||
| `transaction_hash` | 文字列 | Hash256 | このレジャーに記録されているトランザクションの[SHA-512ハーフ][]。 |
|
||||
| `transaction_hash` | 文字列 | UInt256 | このレジャーに記録されているトランザクションの[SHA-512ハーフ][]。 |
|
||||
| `close_time_resolution` | 数値 | Uint8 | `close_time`を丸めるときの最大秒数を示す範囲[2,120]内の整数。 |
|
||||
| [`closeFlags`](#closeフラグ) | (省略) | UInt8 | このレジャーの閉鎖に関連するフラグのビットマップ。 |
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ labels:
|
||||
| TransactionType | 文字列 | UInt16 | _(必須)_ トランザクションのタイプ。有効なタイプは、`Payment`、`OfferCreate`、`OfferCancel`、`TrustSet`、`AccountSet`、`SetRegularKey`、`SignerListSet`、`EscrowCreate`、`EscrowFinish`、`EscrowCancel`、`PaymentChannelCreate`、`PaymentChannelFund`、`PaymentChannelClaim`、`DepositPreauth`です。 |
|
||||
| Fee | 文字列 | Amount | _(必須。[自動入力可能][])_ 整数で表したXRPの額(drop単位)。このトランザクションをネットワークに送信するためのコストとして消却されます。トランザクションのタイプによっては、最小要件が異なります。詳細は、[トランザクションコスト][]をご覧ください。 |
|
||||
| Sequence | 符号なし整数 | UInt32 | _(必須。[自動入力可能][])_ トランザクションを開始したアカウントに関連付けられた、トランザクションのシーケンス番号。トランザクションが有効とみなされるのは、その`Sequence`番号が、同一のアカウントの直前トランザクションよりも1大きい場合のみです。保留中のトランザクションを`Sequence`番号を使用して無効にする方法については、[トランザクションのキャンセルまたはスキップ](../../../concepts/transactions/finality-of-results/canceling-a-transaction.md)をご覧ください。 |
|
||||
| [AccountTxnID][] | 文字列 | Hash256 | _(省略可)_ 別のトランザクションを識別するためのハッシュ値。このハッシュがある場合、このトランザクションが有効になるのは、送信側のアカウントの直前送信トランザクションがこのハッシュと一致しているときのみです。 |
|
||||
| [AccountTxnID][] | 文字列 | UInt256 | _(省略可)_ 別のトランザクションを識別するためのハッシュ値。このハッシュがある場合、このトランザクションが有効になるのは、送信側のアカウントの直前送信トランザクションがこのハッシュと一致しているときのみです。 |
|
||||
| [Flags][] | 符号なし整数 | UInt32 | _(省略可)_ このトランザクションのビットフラグのセット。 |
|
||||
| LastLedgerSequence | 数値 | UInt32 | _(省略可。使用を強く推奨)_ このトランザクションを登録できるレジャーインデックスの最大値。このフィールドを指定することにより、トランザクションが検証または拒否されるのを待たなければならない期間の上限を設定することができます。詳細は、[信頼できるトランザクションの送信](../../../concepts/transactions/reliable-transaction-submission.md)をご覧ください。 |
|
||||
| [`NetworkID`](#networkidフィールド) | Number | UInt32 | _(Network-specific)_ The network ID of the chain this transaction is intended for. **MUST BE OMITTED** for Mainnet and some test networks. **REQUIRED** on chains whose network ID is 1025 or higher. |
|
||||
@@ -32,7 +32,7 @@ labels:
|
||||
[Memos]: #memosフィールド
|
||||
[Signers]: #signersフィールド
|
||||
|
||||
{% badge href="https://github.com/XRPLF/rippled/releases/tag/0.28.0" %}削除: rippled 0.28.0{% /badge %}: トランザクションの`PreviousTxnID`フィールドは、[AccountTxnID][]フィールドに置き換えられました。この文字列/Hash256フィールドは、過去に発生したトランザクションの一部に記述されています。このフィールドは、一部の[レジャーオブジェクト](../ledger-data/index.md)にある`PreviousTxnID`という同じ名前のフィールドとは無関係です。
|
||||
{% badge href="https://github.com/XRPLF/rippled/releases/tag/0.28.0" %}削除: rippled 0.28.0{% /badge %}: トランザクションの`PreviousTxnID`フィールドは、[AccountTxnID][]フィールドに置き換えられました。この文字列/UInt256フィールドは、過去に発生したトランザクションの一部に記述されています。このフィールドは、一部の[レジャーオブジェクト](../ledger-data/index.md)にある`PreviousTxnID`という同じ名前のフィールドとは無関係です。
|
||||
|
||||
|
||||
## AccountTxnID
|
||||
@@ -71,11 +71,12 @@ AccountTxnIDを使用するには、アカウントの1つ前のトランザク
|
||||
|
||||
### グローバルフラグ
|
||||
|
||||
すべてのトランザクションにグローバルに適用される唯一のフラグは、以下のとおりです。
|
||||
すべてのトランザクションにグローバルに適用されるフラグは、以下のとおりです。
|
||||
|
||||
| フラグの名前 | 16進値 | 10進値 | 説明 |
|
||||
|:--------------------|:-----------|:--------------|:--------------------------|
|
||||
| tfFullyCanonicalSig | 0x80000000 | 2147483648 | _(使用を強く推奨)_ 完全に正規である署名を要求します。 |
|
||||
| tfInnerBatchTxn | 0x40000000 | 1073741824 | このフラグは [Batchトランザクション][] の内部トランザクションである場合にのみ使用されます。これは、トランザクションが署名されていないことを示します。このフラグを含む通常のトランザクションは拒否されます。 |
|
||||
|
||||
[signメソッド][](または「署名と送信」モードの[submitメソッド][])を使用すると、`rippled`は、`Flags`フィールドがすでに存在している場合を除き、`tfFullyCanonicalSig`フラグを有効にした状態で`Flags`フィールドを追加します。`tfFullyCanonicalSig`フラグは、`Flags`が明示的に指定されている場合、自動的には有効に***なりません***。また、[sign_forメソッド][]を使用してマルチシグトランザクションに署名を追加する場合も、自動的には有効に***なりません***。
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ labels:
|
||||
|
||||
| フィールド | JSONの型 | [内部の型][] | 説明 |
|
||||
|:---------------|:----------|:------------------|:----------------------------|
|
||||
| Amendment | 文字列 | Hash256 | Amendmentの一意のID。人間が読み取れる形式の名前ではありません。既知のAmendmentのリストについては、[Amendment](../../../../concepts/networks-and-servers/amendments.md)をご覧ください。 |
|
||||
| Amendment | 文字列 | UInt256 | Amendmentの一意のID。人間が読み取れる形式の名前ではありません。既知のAmendmentのリストについては、[Amendment](../../../../concepts/networks-and-servers/amendments.md)をご覧ください。 |
|
||||
| LedgerSequence | 数値 | UInt32 | Amendmentが含まれているレジャーバージョンのインデックス。これにより、この疑似トランザクションと別途発生する同様の変更が区別されます。 |
|
||||
|
||||
## EnableAmendment Flags
|
||||
|
||||
@@ -40,7 +40,7 @@ AccountSetトランザクションは、[XRP Ledgerのアカウント](../../led
|
||||
| [`SetFlag`](#accountsetのフラグ) | 数値 | UInt32 | _(省略可)_ このアカウントについてオプションを有効にするための整数フラグ。 |
|
||||
| [`TransferRate`](#transferrate) | 符号なし整数 | UInt32 | _(省略可)_ ユーザがこのアカウントのトークンを送金するときに請求される手数料。通貨単位の10億分の1で表現されます。手数料なしを意味する特殊なケースの`0`を除いて、`2000000000`より大きくしたり、`1000000000`より小さくしたりすることはできません。 |
|
||||
| [`TickSize`](../../../../concepts/tokens/decentralized-exchange/ticksize.md) | 符号なし整数 | UInt8 | _(省略可)_このアドレスによって発行されている通貨が関係するオファーに使用する為替レートの呼値の単位。それらのオファーの為替レートは、この有効桁数へと丸められます。有効な値は`3`から`15`、または無効にするための`0`です_([TickSize Amendment][]により追加されました)。_ |
|
||||
| `WalletLocator` | 文字列 | Hash256 | _(省略可)_ 任意の256ビット値です。指定された場合、この値はアカウントの設定の一部として保存さ れますが、固有の定義や要件を持ちません。 |
|
||||
| `WalletLocator` | 文字列 | UInt256 | _(省略可)_ 任意の256ビット値です。指定された場合、この値はアカウントの設定の一部として保存さ れますが、固有の定義や要件を持ちません。 |
|
||||
| `WalletSize` | 数値 | UInt32 | _(省略可)_ 使用されません。このフィールドはAccountSetトランザクションで有効ですが、何の機能もありません |
|
||||
|
||||
これらのオプションがいずれも指定されていない場合、AccountSetトランザクションは(取引コストの消却以外に)意味がありません。詳細は、[トランザクションのキャンセルまたはスキップ](../../../../concepts/transactions/finality-of-results/canceling-a-transaction.md)をご覧ください。
|
||||
@@ -70,22 +70,43 @@ AccountSetトランザクションは、[XRP Ledgerのアカウント](../../led
|
||||
|
||||
使用できるAccountSetのフラグは、以下のとおりです。
|
||||
|
||||
| フラグの名前 | 10進値 | 対応するレジャーフラグ | 説明 |
|
||||
|:----------------------------------|:------|:----------------------------------|:--------------|
|
||||
| `asfAccountTxnID` | 5 | (なし) | このアカウントの直近のトランザクションのIDを追跡します。[AccountTxnID](../common-fields.md#accounttxnid)については必須です。 |
|
||||
| `asfAuthorizedNFTokenMinter` | 10 | (なし) | このアカウントの代わりに、別のアカウントが非代替性トークン(NFToken)をミントすることを許可するために使用します。認可されたアカウントを[AccountRoot](../../ledger-data/ledger-entry-types/accountroot.md)オブジェクトの`NFTokenMinter`フィールドで指定します。認可されたアカウントを削除するには、このフラグを有効にして`NFTokenMinter`フィールドを省略します。 _([NonFungibleTokensV1_1 amendment][]により追加されました。)_ |
|
||||
| `asfDefaultRipple` | 8 | `lsfDefaultRipple` | このアカウントのトラストラインでの[リップリング](../../../../concepts/tokens/fungible-tokens/rippling.md)をデフォルトで有効にします。 |
|
||||
| `asfDepositAuth` | 9 | `lsfDepositAuth` | このアカウントに対して[Deposit Authorization](../../../../concepts/accounts/depositauth.md)を有効にします _([DepositAuth Amendment][]により追加されました)。_ |
|
||||
| `asfDisableMaster` | 4 | `lsfDisableMaster` | マスターキーペアの使用を禁止します。[レギュラーキー](../../../../concepts/accounts/cryptographic-keys.md)や[署名者リスト](../../../../concepts/accounts/multi-signing.md)など、トランザクションに署名するための別の手段がアカウントで設定されている場合のみ有効にできます。 |
|
||||
| `asfDisallowIncomingCheck` | 13 | `lsfDisallowIncomingCheck` | チェックの着信をブロックします。_([DisallowIncoming amendment][] が必要です。)_ |
|
||||
| `asfDisallowIncomingNFTokenOffer` | 12 | `lsfDisallowIncomingNFTokenOffer` | NFTokenOffersの着信をブロックします。_([DisallowIncoming amendment][] が必要です)_。 |
|
||||
| `asfDisallowIncomingPayChan` | 14 | `lsfDisallowIncomingPayChan` | ペイメントチャネルの着信をブロックします。_([DisallowIncoming amendment][] が必要です)_。 |
|
||||
| `asfDisallowIncomingTrustline` | 15 | `lsfDisallowIncomingTrustline` | トラストラインの着信をブロックします。_([DisallowIncoming amendment][] が必要です)_。 |
|
||||
| `asfDisallowXRP` | 3 | `lsfDisallowXRP` | XRPがこのアカウントに送信されないようにします(勧告的なもので、XRP Ledgerのプロトコルでは強制されません)。 |
|
||||
| `asfGlobalFreeze` | 7 | `lsfGlobalFreeze` | このアカウントによって発行されたすべての資産を[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)します。 |
|
||||
| `asfNoFreeze` | 6 | `lsfNoFreeze` | [個々のトラストラインのフリーズまたはGlobal Freezeの無効化](../../../../concepts/tokens/fungible-tokens/freezes.md)の機能を永続的に放棄します。このフラグは、有効にした後は無効にできません。 |
|
||||
| `asfRequireAuth` | 2 | `lsfRequireAuth` | このアドレスによって発行された残高をユーザが保持することについて、承認を要求します。アドレスにトラストラインが接続されていない場合のみ有効にできます。 |
|
||||
| `asfRequireDest` | 1 | `lsfRequireDestTag` | トランザクションをこのアカウントに送信するための宛先タグを要求します。 |
|
||||
| フラグの名前 | 10進値 | 説明 |
|
||||
|:----------------------------------|:------|:--------------|
|
||||
| `asfAccountTxnID` | 5 | このアカウントの直近のトランザクションのIDを追跡します。[AccountTxnID](../common-fields.md#accounttxnid)については必須です。 |
|
||||
| `asfAllowTrustLineClawback` | 16 | アカウントの発行したトークンを回収する機能を有効にします。 _([Clawback Amendment][]により追加されました)。_ 所有者ディレクトリが存在する場合はClawback機能を有効にできません。つまり、トラストラインやオファー、エスクロー、ペイメントチャネル、チェック、または署名者リストを設定する前に行う必要があります。このフラグは、有効にした後は無効にできません。|
|
||||
| `asfAuthorizedNFTokenMinter` | 10 | このアカウントの代わりに、別のアカウントが非代替性トークン(NFToken)をミントすることを許可するために使用します。認可されたアカウントを[AccountRoot](../../ledger-data/ledger-entry-types/accountroot.md)オブジェクトの`NFTokenMinter`フィールドで指定します。認可されたアカウントを削除するには、このフラグを有効にして`NFTokenMinter`フィールドを省略します。 _([NonFungibleTokensV1_1 amendment][]により追加されました。)_ |
|
||||
| `asfDefaultRipple` | 8 | このアカウントのトラストラインでの[リップリング](../../../../concepts/tokens/fungible-tokens/rippling.md)をデフォルトで有効にします。 |
|
||||
| `asfDepositAuth` | 9 | このアカウントに対して[Deposit Authorization](../../../../concepts/accounts/depositauth.md)を有効にします _([DepositAuth Amendment][]により追加されました)。_ |
|
||||
| `asfDisableMaster` | 4 | マスターキーペアの使用を禁止します。[レギュラーキー](../../../../concepts/accounts/cryptographic-keys.md)や[署名者リスト](../../../../concepts/accounts/multi-signing.md)など、トランザクションに署名するための別の手段がアカウントで設定されている場合のみ有効にできます。 |
|
||||
| `asfDisallowIncomingCheck` | 13 | チェックの着信をブロックします。_([DisallowIncoming amendment][] が必要です。)_ |
|
||||
| `asfDisallowIncomingNFTokenOffer` | 12 | NFTokenOffersの着信をブロックします。_([DisallowIncoming amendment][] が必要です)_。 |
|
||||
| `asfDisallowIncomingPayChan` | 14 | ペイメントチャネルの着信をブロックします。_([DisallowIncoming amendment][] が必要です)_。 |
|
||||
| `asfDisallowIncomingTrustline` | 15 | トラストラインの着信をブロックします。_([DisallowIncoming amendment][] が必要です)_。 |
|
||||
| `asfDisallowXRP` | 3 | XRPがこのアカウントに送信されないようにします(勧告的なもので、XRP Ledgerのプロトコルでは強制されません)。 |
|
||||
| `asfGlobalFreeze` | 7 | このアカウントによって発行されたすべての資産を[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)します。 |
|
||||
| `asfNoFreeze` | 6 | [個々のトラストラインのフリーズまたはGlobal Freezeの無効化](../../../../concepts/tokens/fungible-tokens/freezes.md)の機能を永続的に放棄します。このフラグは、有効にした後は無効にできません。 |
|
||||
| `asfRequireAuth` | 2 | このアドレスによって発行された残高をユーザが保持することについて、承認を要求します。アドレスにトラストラインが接続されていない場合のみ有効にできます。 |
|
||||
| `asfRequireDest` | 1 | トランザクションをこのアカウントに送信するための宛先タグを要求します。 |
|
||||
|
||||
参考のため、各AccountSetフラグに対応するレジャーフラグは以下のとおりです。
|
||||
|
||||
| AccountSetフラグの名前 | 対応するレジャーフラグ |
|
||||
|:----------------------------------|:----------------------------------|
|
||||
| `asfAccountTxnID` | (なし) |
|
||||
| `asfAllowTrustLineClawback` | `lsfAllowTrustlineClawback` |
|
||||
| `asfAuthorizedNFTokenMinter` | (なし) |
|
||||
| `asfDefaultRipple` | `lsfDefaultRipple` |
|
||||
| `asfDepositAuth` | `lsfDepositAuth` |
|
||||
| `asfDisableMaster` | `lsfDisableMaster` |
|
||||
| `asfDisallowIncomingCheck` | `lsfDisallowIncomingCheck` |
|
||||
| `asfDisallowIncomingNFTokenOffer` | `lsfDisallowIncomingNFTokenOffer` |
|
||||
| `asfDisallowIncomingPayChan` | `lsfDisallowIncomingPayChan` |
|
||||
| `asfDisallowIncomingTrustline` | `lsfDisallowIncomingTrustline` |
|
||||
| `asfDisallowXRP` | `lsfDisallowXRP` |
|
||||
| `asfGlobalFreeze` | `lsfGlobalFreeze` |
|
||||
| `asfNoFreeze` | `lsfNoFreeze` |
|
||||
| `asfRequireAuth` | `lsfRequireAuth` |
|
||||
| `asfRequireDest` | `lsfRequireDestTag` |
|
||||
|
||||
`asfDisableMaster`フラグまたは`asfNoFreeze`フラグを有効にするには、マスターキーペアで署名することによって[トランザクションを承認](../../../../concepts/transactions/index.md#トランザクションの承認)する必要があります。レギュラーキーペアやマルチ署名を使用することはできません。レギュラーキーペアまたはマルチ署名を使用すると、`asfDisableMaster`を無効にする(つまり、マスターキーペアを再び有効にする)ことができます。{% badge href="https://github.com/XRPLF/rippled/releases/tag/0.28.0" %}新規: rippled 0.28.0{% /badge %}
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ AMMのLPトークンを使って落札すると、落札に利用したLPトー
|
||||
| `Asset2` | オブジェクト | STIssue | はい | AMMのプールにあるもう一つのアセットの定義です。JSONでは、`currency`と`issuer`フィールドを持つオブジェクトになります(XRPの場合は`issuer`を省略します)。 |
|
||||
| `BidMin` | [通貨額][] | Amount | いいえ | スロットに支払う最小の金額。この値を高く設定すると、他の人から競り落とされにくくなります。省略された場合は、落札に必要な最低額を支払います。 |
|
||||
| `BidMax` | [通貨額][] | Amount | いいえ | スロットに支払う最大の金額。落札するためのコストがこの金額より高い場合、取引は失敗します。省略された場合は、落札に必要な金額を支払います。 |
|
||||
| `AuthAccounts` | 配列 | STArray | いいえ | 割引料金で取引を許可する最大4つの追加のアカウントのリスト。これには、トランザクション送信者のアドレスは含めることはできません。これらのオブジェクトはそれぞれ[Auth Accountオブジェクト](#auth-accountオブジェクト)である必要があります。. |
|
||||
| `AuthAccounts` | 配列 | Array | いいえ | 割引料金で取引を許可する最大4つの追加のアカウントのリスト。これには、トランザクション送信者のアドレスは含めることはできません。これらのオブジェクトはそれぞれ[Auth Accountオブジェクト](#auth-accountオブジェクト)である必要があります。. |
|
||||
|
||||
### Auth Accountオブジェクト
|
||||
|
||||
|
||||
173
@l10n/ja/docs/references/protocol/transactions/types/batch.md
Normal file
173
@l10n/ja/docs/references/protocol/transactions/types/batch.md
Normal file
@@ -0,0 +1,173 @@
|
||||
---
|
||||
seo:
|
||||
description: 最大8件のトランザクションをまとめて作成・送信し、それらがすべて成功するか、すべて失敗するようにアトミックに処理されるようにします。
|
||||
labels:
|
||||
- Batch
|
||||
- Transaction Sending
|
||||
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))のいずれかでアトミックに実行されます。
|
||||
|
||||
## {% $frontmatter.seo.title %} JSONの例
|
||||
|
||||
### 単一アカウントの場合
|
||||
|
||||
この例では、ユーザーがDEX UIを使って取引する中でオファーを作成し、2番目のトランザクションでプラットフォーム手数料を支払っています。内部トランザクションは署名されておらず、関与するアカウントが1つのみのため、外部トランザクションに`BatchSigners`フィールドは不要です。
|
||||
|
||||
```json
|
||||
{
|
||||
"TransactionType": "Batch",
|
||||
"Account": "rUserBSM7T3b6nHX3Jjua62wgX9unH8s9b",
|
||||
"Flags": 65536,
|
||||
"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"
|
||||
}
|
||||
```
|
||||
|
||||
### 複数アカウントの場合
|
||||
|
||||
この例では、2人のユーザーがトークン(XRPとGKO)をアトミックに交換しています。
|
||||
|
||||
```json
|
||||
{
|
||||
"TransactionType": "Batch",
|
||||
"Account": "rUser1fcu9RJa5W1ncAuEgLJF2oJC6",
|
||||
"Flags": 65536,
|
||||
"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"
|
||||
}
|
||||
```
|
||||
|
||||
{% raw-partial file="/@l10n/ja/docs/_snippets/tx-fields-intro.md" /%}
|
||||
|
||||
| フィールド | JSONの型 | [内部の型][] | 必須? | 説明 |
|
||||
| :---------------- | :--------- | :--------- | :----- | :----------------------------------------------------------- |
|
||||
| `Flags` | 数値 | UInt32 | はい | このトランザクションのビットフラグです。トランザクションのバッチモードを表すために、正確に1つ指定する必要があります。[バッチのフラグ](#バッチのフラグ)をご覧ください。 |
|
||||
| `RawTransactions` | 配列 | Array | はい | 適用するトランザクションのリストです。 |
|
||||
| `BatchSigners` | 配列 | Array | いいえ | 複数アカウントの`Batch`トランザクションを承認する署名です。 |
|
||||
|
||||
### RawTransactions
|
||||
|
||||
`RawTransactions` には、適用される**内部トランザクションのリスト**が含まれます。最大8つのトランザクションを含めることができます。単一のアカウントからでも、複数のアカウントからでも構いません。
|
||||
|
||||
各内部トランザクションは以下の条件を満たす必要があります。
|
||||
|
||||
* `tfInnerBatchTxn` (10進数値: `1073741824`、または16進数値: `0x40000000`) フラグを含める必要があります。
|
||||
* `Fee` の値が `"0"` である必要があります。
|
||||
* 署名されていてはなりません(グローバルトランザクションはすべての関係者によってすでに署名されています)。代わりに、`SigningPubKey` には空の文字列 (`""`) を含み、`TxnSignature` フィールドは省略する必要があります。
|
||||
* `TicketSequence` または `Sequence` の値がゼロより大きい必要があります。
|
||||
|
||||
### BatchSigners
|
||||
|
||||
このフィールドは、XRPLにおけるマルチシグ機能と同様の仕組みで動作します。複数のアカウントのトランザクションが`Batch`トランザクションに含まれている場合にのみ必要で、それ以外の場合は通常のトランザクション署名で同じセキュリティが保証されます。
|
||||
|
||||
| フィールド | JSONの型 | [内部の型][] | 必須? | 説明 |
|
||||
| :-------------- | :--------- | :--------- | :----- | :----------------------------------------------------------- |
|
||||
| `Account` | 文字列 | AccountID | はい | 少なくとも1つの内部トランザクションを持つアカウント。 |
|
||||
| `SigningPubKey` | 文字列 | Blob | いいえ | このトランザクションの署名に使用された秘密鍵に対応する公開鍵の16進数表現。 |
|
||||
| `TxnSignature` | 文字列 | Blob | いいえ | このトランザクションが、それが由来するとされるアカウントからのものであることを検証する署名。 |
|
||||
| `Signers` | 配列 | Array | いいえ | このトランザクションを承認するマルチシグを表すオブジェクトの配列。 |
|
||||
|
||||
{% admonition type="info" name="Note" %}
|
||||
`Batch`トランザクションを送信するアカウントが単一署名を使用する場合、`Flags`フィールドと内部トランザクションのハッシュに署名します。この場合、含まれるのは`SigningPubKey`と`TxnSignature`のみです。一方で、複数署名を使用する場合は代わりに`Signers`フィールドが使用され、そこに`Flags`フィールドおよび内部トランザクションのハッシュに対する署名が格納されます。
|
||||
{% /admonition %}
|
||||
|
||||
|
||||
## バッチのフラグ
|
||||
|
||||
`Batch`タイプのトランザクションは、[`Flags`フィールド](../common-fields.md#flags-field)に追加の値をサポートしており、以下のとおりです。
|
||||
|
||||
| フラグ名 | 16進数値 | 10進数値 | 説明 |
|
||||
| :--------------- | :--------- | :------- | :--------------------------------- |
|
||||
| `tfAllOrNothing` | `0x00010000` | 65536 | すべてのトランザクションが成功しなければ、バッチ全体が失敗します。 |
|
||||
| `tfOnlyOne` | `0x00020000` | 131072 | 最初に成功したトランザクションのみ適用され、それ以降はすべて失敗またはスキップされます。 |
|
||||
| `tfUntilFailure` | `0x00040000` | 262144 | 最初の失敗が発生するまで、すべてのトランザクションが順に適用されます。失敗以降のトランザクションはスキップされます。 |
|
||||
| `tfIndependent` | `0x00080000` | 524288 | 各トランザクションは、成功・失敗に関係なくすべて適用されます。 |
|
||||
|
||||
トランザクションは`tesSUCCESS`を結果として返す場合、成功とみなされます。
|
||||
|
||||
|
||||
## エラーケース
|
||||
|
||||
| エラーコード | 説明 |
|
||||
|:--------------------------|:--------------------------------------------------|
|
||||
| `temINVALID_INNER_BATCH` | 内部トランザクションの形式が不正です。 |
|
||||
| `temSEQ_AND_TICKET` | トランザクションに`TicketSequence`フィールドと、0以外の`Sequence`フィールドの両方が含まれています。両方を同時に指定することはできませんが、いずれか一方は必須です。 |
|
||||
|
||||
{% raw-partial file="/docs/_snippets/common-links.md" /%}
|
||||
@@ -29,7 +29,7 @@ _([Checks Amendment][]が必要です)_
|
||||
|
||||
| フィールド | JSONの型 | [内部の型][] | 説明 |
|
||||
|:------------|:----------|:------------------|:-------------------------------|
|
||||
| `CheckID` | 文字列 | Hash256 | 取り消す[Checkレジャーオブジェクト](../../ledger-data/ledger-entry-types/check.md)のID(64文字の16進文字列)。 |
|
||||
| `CheckID` | 文字列 | UInt256 | 取り消す[Checkレジャーオブジェクト](../../ledger-data/ledger-entry-types/check.md)のID(64文字の16進文字列)。 |
|
||||
|
||||
## エラーケース
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ Checkに相当する資金があるとは保証されないため、送金元に
|
||||
|
||||
| フィールド | JSONの型 | [内部の型][] | 説明 |
|
||||
|:-------------|:--------------------|:------------------|:--------------------|
|
||||
| `CheckID` | 文字列 | Hash256 | 換金する[Checkレジャーオブジェクト](../../ledger-data/ledger-entry-types/check.md)のID(64文字の16進文字列)。 |
|
||||
| `CheckID` | 文字列 | UInt256 | 換金する[Checkレジャーオブジェクト](../../ledger-data/ledger-entry-types/check.md)のID(64文字の16進文字列)。 |
|
||||
| `Amount` | [通貨額][] | Amount | _(省略可)_ 可能であればCheckを厳密にこの額で清算します。通貨は対応するCheckCreateトランザクションの`SendMax`の通貨と一致している必要があります。このフィールドまたは`DeliverMin`のいずれかを指定する必要があります。 |
|
||||
| `DeliverMin` | [通貨額][] | Amount | _(省略可)_ Checkをこの額以上の可能な限りの額で清算します。通貨は対応するCheckCreateトランザクションの`SendMax`の通貨と一致している必要があります。このフィールドまたは`Amount`のいずれかを指定する必要があります。 |
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ _([Checks Amendment][]が必要です)_
|
||||
| `SendMax` | [通貨額][] | Amount | Checkで送金元から引き落とすことができる送金元通貨の最大額(XRP以外の通貨の[送金手数料](../../../../concepts/tokens/transfer-fees.md)を含む)。Checkは同一通貨の送金先にのみ入金可能です(XRP以外の通貨の場合は同一イシュアーから)。XRP以外の金額の場合、入れ子フィールドの名前にはアルファベットの小文字のみ使用してください。 |
|
||||
| `DestinationTag` | 数値 | UInt32 | _(省略可)_ Checkの理由を明確にする任意のタグ、または支払先となる、ホスティングされている受取人。 |
|
||||
| `Expiration` | 数値 | UInt32 | _(省略可)_ Checkが無効になる時刻([Rippleエポック以降の経過秒数][])。 |
|
||||
| `InvoiceID` | 文字列 | Hash256 | _(省略可)_ このCheckの具体的な理由または識別子を表現する任意の256ビットハッシュ。 |
|
||||
| `InvoiceID` | 文字列 | UInt256 | _(省略可)_ このCheckの具体的な理由または識別子を表現する任意の256ビットハッシュ。 |
|
||||
|
||||
## エラーケース
|
||||
|
||||
|
||||
@@ -58,9 +58,9 @@ DepositPreauthトランザクションは、あなたのアカウントへの支
|
||||
| フィールド | JSONの型 | [内部の型][] | 必須? | 説明 |
|
||||
| :----------------------- | :-------------------- | :----------- | :----- | ---- |
|
||||
| `Authorize` | 文字列 - [アドレス][] | AccountID | いいえ | 事前承認するアカウント。 |
|
||||
| `AuthorizeCredentials` | 配列 | STArray | いいえ | 承認する資格証明書のセット。 _([Credentials amendment][]が必要です。 {% not-enabled /%})_ |
|
||||
| `AuthorizeCredentials` | 配列 | Array | いいえ | 承認する資格証明書のセット。 _([Credentials amendment][]が必要です。 {% not-enabled /%})_ |
|
||||
| `Unauthorize` | 文字列 | AccountID | いいえ | 事前承認を取り消すアカウント。 |
|
||||
| `UnauthorizeCredentials` | 配列 | STArray | いいえ | 事前承認を取り消す資格証明書のセット。 _([Credentials amendment][]が必要です。 {% not-enabled /%})_ |
|
||||
| `UnauthorizeCredentials` | 配列 | Array | いいえ | 事前承認を取り消す資格証明書のセット。 _([Credentials amendment][]が必要です。 {% not-enabled /%})_ |
|
||||
|
||||
`Authorize`, `AuthorizeCredentials`, `Unauthorize`, or `UnauthorizeCredentials`の**いずれか**を提供する必要があります。
|
||||
|
||||
|
||||
@@ -76,8 +76,8 @@ _([NonFungibleTokensV1_1 amendment][]により追加されました)_
|
||||
|
||||
| フィールド | JSONの型 | [内部の型][] | 説明 |
|
||||
|:-------------------|:--------------------|:------------------|:--------------|
|
||||
| `NFTokenSellOffer` | 文字列 | Hash256 | _(省略可)_ `NFToken`の売却を提案する`NFTokenOffer`の識別情報です。 |
|
||||
| `NFTokenBuyOffer` | 文字列 | Hash256 | _(省略可)_ `NFToken`の購入を提案する`NFTokenOffer`の識別情報です。 |
|
||||
| `NFTokenSellOffer` | 文字列 | UInt256 | _(省略可)_ `NFToken`の売却を提案する`NFTokenOffer`の識別情報です。 |
|
||||
| `NFTokenBuyOffer` | 文字列 | UInt256 | _(省略可)_ `NFToken`の購入を提案する`NFTokenOffer`の識別情報です。 |
|
||||
| `NFTokenBrokerFee` | [通貨額][] | Amount | _(省略可)_ このフィールドはブローカーモードでのみ有効であり、2つのオファーをまとめるための手数料としてブローカーが保持する金額を指定します。残りの金額は`NFToken`の販売者に送られます。指定する場合、発行者が課す送金手数料を考慮する前に、販売者が受け取る金額が少なくとも売却オファーで示された金額になるように手数料を設定しなければなりません。 |
|
||||
|
||||
ダイレクトモードでは、`NFTokenSellOffer`または`NFTokenBuyOffer`フィールドの**いずれか**を指定する必要があります。ブローカーモードでは、**両方**のフィールドを指定する必要があります。
|
||||
|
||||
@@ -33,7 +33,7 @@ _([NonFungibleTokensV1_1 amendment][]により追加されました)_
|
||||
|
||||
| フィールド | JSONの型 | [内部の型][] | 説明 |
|
||||
|:------------------|:----------|:------------------|:-------------------------|
|
||||
| `NFTokenID` | 文字列 | Hash256 | このトランザクションによって削除される`NFToken`を指定します。 |
|
||||
| `NFTokenID` | 文字列 | UInt256 | このトランザクションによって削除される`NFToken`を指定します。 |
|
||||
| `Owner` | 文字列 | AccountID | _(省略可)_ Burnする`NFToken`の所有者。所有者がこのトランザクションを送信するアカウントと異なる場合にのみ使用されます。発行者または許可された発行者は、`lsfBurnable`フラグが有効なNFTをBurnするために、このフィールドを使用することができます。 |
|
||||
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ _([NonFungibleTokensV1_1 amendment][]により追加されました)_
|
||||
| フィールド | JSONの型 | [内部の型][] | 説明 |
|
||||
|:--------------|:--------------------|:------------------|:-------------------|
|
||||
| `Owner` | 文字列 | AccountID | _(省略可)_ 対応する`NFToken`の所有者を指定します。トークンの購入オファーである場合、このフィールドは必ず存在し、`Account`フィールドとは異なるものでなければなりません(すでに保有しているトークンの購入オファーは無意味)。トークンの売却オファーである場合、このフィールドは存在してはいけません。所有者は暗黙のうちに`Account`と同じになるからです(すでに保有していないトークンを売却するオファーは無意味)。 |
|
||||
| `NFTokenID` | 文字列 | Hash256 | オファーが参照する`NFToken`オブジェクトを指定します。 |
|
||||
| `NFTokenID` | 文字列 | UInt256 | オファーが参照する`NFToken`オブジェクトを指定します。 |
|
||||
| `Amount` | [通貨額][] | Amount | 対応する`NFToken`に対する売却希望額または売却提示額を表します。0を指定することは、トークンの現在の所有者が、誰でも、または`Destination`フィールドで指定されたアカウントに、トークンを無償で譲渡することを意味します。 |
|
||||
| `Expiration` | 数値 | UInt32 | _(省略可)_ オファーが無効となる時間を指定します。値は[Rippleエポック以降の経過秒数][]です。 |
|
||||
| `Destination` | 文字列 | AccountID | _(省略可)_ 存在する場合、このオファーは指定されたアカウントによってのみ受け入れることが可能であることを示します。他のアカウントによってこのオファーを受け入れることはできません。 |
|
||||
|
||||
@@ -33,7 +33,7 @@ title:
|
||||
| `TransactionType` | 文字列 | UINT16 | `NFTokenModify` |
|
||||
| `Account` | 文字列 | AccountID | NFTの発行者または許可されたアカウントの一意のアドレス。 |
|
||||
| `Owner` | 文字列 | AccountID | _(任意)_ NFTの所有者のアドレス。`Account`と`Owner`が同じアドレスの場合、このフィールドは省略します。 |
|
||||
| `NFTokenID` | 文字列 | Hash256 | NFTを識別する一意のID。 |
|
||||
| `NFTokenID` | 文字列 | UInt256 | NFTを識別する一意のID。 |
|
||||
| `URI` | 文字列 | Blob | _(任意)_ 最大256バイトの任意のデータ。JSONでは、16進数の文字列としてエンコードされます。[`xrpl.convertStringToHex`](https://js.xrpl.org/modules.html#convertStringToHex)ユーティリティメソッドを使用してURIを16進数に変換できます。これは、NFTに関連するデータまたはメタデータを指すURIです。URIはHTTPまたはHTTPS URL、IPFS URI、マグネットリンク、[RFC 2379 "data" URL](https://datatracker.ietf.org/doc/html/rfc2397)としてエンコードされた即値データ、または発行者固有のエンコードをデコードできます。URIは検証されません。URIを指定しない場合、既存のURIは削除されます。 |
|
||||
|
||||
## エラーケース
|
||||
|
||||
@@ -67,7 +67,7 @@ OfferCreate型のトランザクションについては、[`Flags`フィール
|
||||
| `temBAD_CURRENCY` | トランザクションで通貨コードが"XRP"のトークンが指定された場合に発生します。 |
|
||||
| `temBAD_ISSUER` | トランザクションが無効な`issuer`値を持つトークンを指定した場合に発生します。 |
|
||||
| `tecNO_ISSUER` | トランザクションで、`issuer`の値が台帳の有効化されたアカウントでないトークンを指定した場合に発生します。|
|
||||
| `tecFROZEN` | [フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)されたトラストライン(ローカルおよびグローバルのフリーズを含む)上のトークンを含むトランザクションの場合に発生します。 |
|
||||
| `tecFROZEN` | [フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)されたトラストライン(ローカルおよびグローバルのフリーズを含む)上のトークンを含むトランザクションの場合に発生します。`TakerPays`(購入額)トークンが発行者によってディープフリーズされている場合に発生します。 |
|
||||
| `tecUNFUNDED_OFFER` | トランザクションの送信者が`TakerGets`の通貨を正の値で保有していない場合に発生する。(例外: `TakerGets`にトランザクションの送信者が発行するトークンを指定した場合、トランザクションは成功します)。 |
|
||||
| `tecNO_LINE` | 発行者が[Authorized Trust Lines](../../../../concepts/tokens/fungible-tokens/authorized-trust-lines.md)を使用しているトークンを含むトランザクションで、必要なトラストラインが存在しない場合に発生します。 |
|
||||
| `tecNO_AUTH` | 発行者が[Authorized Trust Lines](../../../../concepts/tokens/fungible-tokens/authorized-trust-lines.md)を使用しているトークンを含むトランザクションで、トークンを受け取るトラストラインが存在するが認証されていない場合に発生します。 |
|
||||
|
||||
@@ -46,7 +46,7 @@ Paymentは、[アカウントを作成](#アカウントの作成)する唯一
|
||||
| `DeliverMin` | [通貨額][] | Amount | _(省略可)_ このトランザクションで送金する、宛先通貨での最少金額。[Partial Payments](../../../../concepts/payment-types/partial-payments.md)の場合のみ有効になります。XRP以外の金額の場合、入れ子フィールドの名前では、アルファベットの小文字のみ使用してください。 |
|
||||
| `Destination` | 文字列 | AccountID | 支払いを受取るアカウントの一意アドレス。 |
|
||||
| `DestinationTag` | 数値 | UInt32 | _(省略可)_ 宛先(支払先となる、ホスティングされている受取人)への支払い理由を明確にするための任意のタグ。 |
|
||||
| `InvoiceID` | 文字列 | Hash256 | _(省略可)_ この支払いの具体的な理由または識別子を表現する任意の256ビットハッシュ。 |
|
||||
| `InvoiceID` | 文字列 | UInt256 | _(省略可)_ この支払いの具体的な理由または識別子を表現する任意の256ビットハッシュ。 |
|
||||
| `Paths` | パス配列の配列 | PathSet | (省略可。自動入力可能)このトランザクションに使用される[支払いパス](../../../../concepts/tokens/fungible-tokens/paths.md)の配列。XRP間のトランザクションでは省略する必要があります。 |
|
||||
| `SendMax` | [通貨額][] | Amount | _(省略可)_ [送金手数料](../../../../concepts/tokens/transfer-fees.md)、為替レート、[スリッページ](http://en.wikipedia.org/wiki/Slippage_%28finance%29)を含め、このトランザクションに関して支払い元通貨での負担を許容する上限額。[トランザクションの送信コストとしてバーンされるXRP](../../../../concepts/transactions/transaction-cost.md)は含めないでください。XRP以外の金額の場合、入れ子フィールドの名前では、アルファベットの小文字のみ使用してください。クロスカレンシー支払いまたは複数のトークンを伴う支払いについては、このフィールドを入力する必要があります。XRP間の支払いでは省略する必要があります。 |
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ Channelの**宛先アドレス**は以下の操作を実行できます。
|
||||
| :-------------- | :----------- | :----------- | :----- | ---- |
|
||||
| `Amount` | 文字列 | Amount | いいえ | `Signature`により承認された[XRP、drop単位][通貨額]の額。これは、署名済みメッセージの額に一致している必要があります。これは、Channelが利用できるXRPの累計額であり、以前に精算されたXRPを含みます。 |
|
||||
| `Balance` | 文字列 | Amount | いいえ | このクレームの処理後にこのChannelから送金される[XRP、drop単位][通貨額]。XRPを送金する場合に必須です。Channelからこれまでに送金された総額よりも大きく、署名済みクレームの`Amount`よりも少ない額である必要があります。Channelを閉鎖する場合を除き、指定する必要があります。 |
|
||||
| `Channel` | 文字列 | Hash256 | はい | Channelの一意のID(64文字の16進文字列) |
|
||||
| `Channel` | 文字列 | UInt256 | はい | Channelの一意のID(64文字の16進文字列) |
|
||||
| `CredentialIDs` | 文字列の配列 | Vector256 | いいえ | このトランザクションによる入金を承認するための資格情報のセット。配列の各要素は、レジャーのCredentialエントリのレジャエントリIDでなければなりません。詳細は、[Credential ID](./payment.md#credential-id)をご覧ください。 |
|
||||
| `PublicKey` | 文字列 | Blob | いいえ | 署名に使用する公開鍵(16進数)。公開鍵はレジャーに保管されているこのChannelの`PublicKey`と一致している必要があります。トランザクションの送信者がChannelの支払元アドレスでない場合には必須です。また`Signature`フィールドは省略されます。(`rippled`がトランザクションをレジャーに適用する前に署名の有効性をチェックできるように、トランザクションにPubKeyが指定されています。) |
|
||||
| `Signature` | 文字列 | Blob | いいえ | クレームの署名(16進数)。署名付きメッセージには、Channel IDとクレームの額が含まれています。トランザクションの送信者がChannelの支払元アドレスでない場合には必須です。 |
|
||||
|
||||
@@ -30,7 +30,7 @@ PaymentChannelFundの例:
|
||||
|
||||
| フィールド | JSONの型 | [内部の型][] | 説明 |
|
||||
|:-------------|:----------|:------------------|:------------------------------|
|
||||
| `Channel` | 文字列 | Hash256 | 資金供給するChannelの一意のID(64文字の16進文字列)。 |
|
||||
| `Channel` | 文字列 | UInt256 | 資金供給するChannelの一意のID(64文字の16進文字列)。 |
|
||||
| `Amount` | 文字列 | Amount | Channelに追加する[XRP、drop単位][通貨額]の正の額。 |
|
||||
| `Expiration` | 数値 | UInt32 | _(省略可)_ Channelに新たに設定する`Expiration`の時刻(Rippleエポック以降の経過秒数)。現行時刻にChannelの`SettleDelay`を加えた時刻よりも後であるか、またはChannelの既存の`Expiration`よりも後である必要があります。`Expiration`時刻の経過後には、トランザクションがそのChannelにアクセスするとChannelが閉鎖し、トランザクションの通常の処理は行われません。Channelの閉鎖時には未使用のXRPはすべて支払元アドレスに返金されます。(`Expiration`は、Channelの不変の`CancelAfter`時刻とは別のものです。)詳細は、[PayChannelレジャーオブジェクトタイプ](../../ledger-data/ledger-entry-types/paychannel.md)をご覧ください。 |
|
||||
|
||||
|
||||
@@ -55,6 +55,8 @@ TrustSetタイプのトランザクションについては、[`Flags`フィー
|
||||
| `tfClearNoRipple` | `0x00040000` | 262144 | No Rippleフラグを無効にし、このトラストラインで[リップリング](../../../../concepts/tokens/fungible-tokens/rippling.md)を許可します。 |
|
||||
| `tfSetFreeze` | `0x00100000` | 1048576 | トラストラインを[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)します。 |
|
||||
| `tfClearFreeze` | `0x00200000` | 2097152 | トラストラインを[フリーズ解除](../../../../concepts/tokens/fungible-tokens/freezes.md)します。 |
|
||||
| `tfSetDeepFreeze` | `0x00400000` | 4194304 | トラストラインを[ディープフリーズ](../../../../concepts/tokens/fungible-tokens/deep-freeze.md) します。 |
|
||||
| `tfClearDeepFreeze` | `0x00800000` | 8388608 | トラストラインの[ディープフリーズ](../../../../concepts/tokens/fungible-tokens/deep-freeze.md) を解除します。 |
|
||||
|
||||
トランザクションがNo Rippleを有効にしようとしたができない場合、結果コード `tecNO_PERMISSION` で失敗します。[fix1578 amendment][]が有効になる前は、このようなトランザクションは代わりに`tesSUCCESS`(可能な限りの他の変更を行う)という結果になりました。
|
||||
|
||||
|
||||
@@ -178,10 +178,10 @@ Automated Market Makers: 自動マーケットメイカー
|
||||
Smart contracts to provide liquidity and earn passive income from facilitating currency exchange, complementary with the order-book DEX already built into the XRPL.: XRPLに組み込み済みのオーダーブックDEXと相互に補完する、流動性を提供し、通貨交換を促進することで受動的な収入を得るためのスマートコントラクト。
|
||||
Enabled: 利用可能
|
||||
Non-Fungible Tokens: 非代替性トークン
|
||||
# Join the Community: XRPL.orgの
|
||||
# at XRPL.org: コミュニティに参加
|
||||
"Join the Community ": XRPL.orgの
|
||||
" at XRPL.org": コミュニティに参加
|
||||
'Connect at XRPL.org, a community by and for the developers ': XRPL.orgは、XRPLを利用する開発者と
|
||||
' and entrepeneurs who rely on the XRPL.': 起業家のためのコミュニティです。
|
||||
' and entrepreneurs who rely on the XRPL.': 起業家のためのコミュニティです。
|
||||
Get Involved: 参加する
|
||||
|
||||
# about/index.page.tsx
|
||||
@@ -571,7 +571,17 @@ Showcase your blockchain project, application, or product: あなたのブロッ
|
||||
Get featured on the Developer Reflections blog or Ecosystem page, and amplify your innovation within the blockchain community.: 開発者向けブログやエコシステムのページで紹介され、ブロックチェーンコミュニティ内でのイノベーションを広めましょう。
|
||||
Submit Your Projects: プロジェクトを登録
|
||||
# TODO: translate project-cards
|
||||
View Projects: プロジェクトを見る
|
||||
RippleX Bug Bounty Program: RippleXのバグ報奨金プログラム
|
||||
community.index.security.subtitle-1: XRP Ledgerのセキュリティへの
|
||||
community.index.security.subtitle-2: 貢献
|
||||
RippleX’s Bug Bounty, part of Ripple's 1 Billion XRP pledge, strengthens XRP Ledger security and supports its ecosystem.: RippleXのバグ報奨金は、Rippleの10億XRPの誓約の一環で、XRP Ledgerのセキュリティを強化し、そのエコシステムをサポートします。
|
||||
community.index.security.description-1: このプログラムを利用して RippleX/rippled のバグを報告してください。該当するバグの詳細なレポートを
|
||||
community.index.security.description-2: 宛に送信し、
|
||||
community.index.security.description-3: 公開鍵
|
||||
community.index.security.description-4: を使用してください。
|
||||
Report a Scam: 詐欺の報告
|
||||
Report Scams to Safeguard Our Community: コミュニティの安全のため、詐欺情報を報告してください
|
||||
In an evolving industry where trust and security are critical, scams continue to impede progress in crypto and blockchain. Help mitigate scammers by reporting scams.: 信頼とセキュリティが極めて重要な進化を続ける業界において、詐欺行為は暗号資産やブロックチェーン技術の発展を妨げ続けています。被害を軽減するため、詐欺行為の報告にご協力ください。
|
||||
Contribute to Consensus: コンセンサスへの貢献
|
||||
Run an XRP Ledger network node: XRP Ledgerのノードを実行する
|
||||
Thank you for your interest in contributing to XRP Ledger.: XRP Ledgerへの貢献に興味がありますか?
|
||||
|
||||
@@ -172,6 +172,13 @@ asn1.js@^4.10.1:
|
||||
inherits "^2.0.1"
|
||||
minimalistic-assert "^1.0.0"
|
||||
|
||||
available-typed-arrays@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
|
||||
integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==
|
||||
dependencies:
|
||||
possible-typed-array-names "^1.0.0"
|
||||
|
||||
bignumber.js@^9.0.0:
|
||||
version "9.1.2"
|
||||
resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c"
|
||||
@@ -258,6 +265,32 @@ builtin-status-codes@^3.0.0:
|
||||
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
|
||||
integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==
|
||||
|
||||
call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6"
|
||||
integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
|
||||
dependencies:
|
||||
es-errors "^1.3.0"
|
||||
function-bind "^1.1.2"
|
||||
|
||||
call-bind@^1.0.8:
|
||||
version "1.0.8"
|
||||
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
|
||||
integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
|
||||
dependencies:
|
||||
call-bind-apply-helpers "^1.0.0"
|
||||
es-define-property "^1.0.0"
|
||||
get-intrinsic "^1.2.4"
|
||||
set-function-length "^1.2.2"
|
||||
|
||||
call-bound@^1.0.3, call-bound@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a"
|
||||
integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==
|
||||
dependencies:
|
||||
call-bind-apply-helpers "^1.0.2"
|
||||
get-intrinsic "^1.3.0"
|
||||
|
||||
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.6.tgz#8fe672437d01cd6c4561af5334e0cc50ff1955f7"
|
||||
@@ -279,7 +312,7 @@ create-ecdh@^4.0.4:
|
||||
bn.js "^4.1.0"
|
||||
elliptic "^6.5.3"
|
||||
|
||||
create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
|
||||
create-hash@^1.1.0, create-hash@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
|
||||
integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
|
||||
@@ -290,7 +323,17 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
|
||||
ripemd160 "^2.0.1"
|
||||
sha.js "^2.4.0"
|
||||
|
||||
create-hmac@^1.1.4, create-hmac@^1.1.7:
|
||||
create-hash@~1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd"
|
||||
integrity sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA==
|
||||
dependencies:
|
||||
cipher-base "^1.0.1"
|
||||
inherits "^2.0.1"
|
||||
ripemd160 "^2.0.0"
|
||||
sha.js "^2.4.0"
|
||||
|
||||
create-hmac@^1.1.7:
|
||||
version "1.1.7"
|
||||
resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
|
||||
integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
|
||||
@@ -320,6 +363,15 @@ crypto-browserify@^3.12.0:
|
||||
randombytes "^2.1.0"
|
||||
randomfill "^1.0.4"
|
||||
|
||||
define-data-property@^1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
|
||||
integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
|
||||
dependencies:
|
||||
es-define-property "^1.0.0"
|
||||
es-errors "^1.3.0"
|
||||
gopd "^1.0.1"
|
||||
|
||||
des.js@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da"
|
||||
@@ -342,6 +394,15 @@ dotenv@^16.0.3:
|
||||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26"
|
||||
integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==
|
||||
|
||||
dunder-proto@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a"
|
||||
integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==
|
||||
dependencies:
|
||||
call-bind-apply-helpers "^1.0.1"
|
||||
es-errors "^1.3.0"
|
||||
gopd "^1.2.0"
|
||||
|
||||
elliptic@^6.5.3, elliptic@^6.5.5:
|
||||
version "6.6.1"
|
||||
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06"
|
||||
@@ -355,6 +416,23 @@ elliptic@^6.5.3, elliptic@^6.5.5:
|
||||
minimalistic-assert "^1.0.1"
|
||||
minimalistic-crypto-utils "^1.0.1"
|
||||
|
||||
es-define-property@^1.0.0, es-define-property@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa"
|
||||
integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
|
||||
|
||||
es-errors@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
|
||||
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
|
||||
|
||||
es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1"
|
||||
integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==
|
||||
dependencies:
|
||||
es-errors "^1.3.0"
|
||||
|
||||
esbuild@^0.18.10:
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6"
|
||||
@@ -401,11 +479,78 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
|
||||
md5.js "^1.3.4"
|
||||
safe-buffer "^5.1.1"
|
||||
|
||||
for-each@^0.3.5:
|
||||
version "0.3.5"
|
||||
resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47"
|
||||
integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==
|
||||
dependencies:
|
||||
is-callable "^1.2.7"
|
||||
|
||||
fsevents@~2.3.2:
|
||||
version "2.3.3"
|
||||
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
|
||||
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
|
||||
|
||||
function-bind@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
|
||||
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
|
||||
|
||||
get-intrinsic@^1.2.4, get-intrinsic@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01"
|
||||
integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
|
||||
dependencies:
|
||||
call-bind-apply-helpers "^1.0.2"
|
||||
es-define-property "^1.0.1"
|
||||
es-errors "^1.3.0"
|
||||
es-object-atoms "^1.1.1"
|
||||
function-bind "^1.1.2"
|
||||
get-proto "^1.0.1"
|
||||
gopd "^1.2.0"
|
||||
has-symbols "^1.1.0"
|
||||
hasown "^2.0.2"
|
||||
math-intrinsics "^1.1.0"
|
||||
|
||||
get-proto@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1"
|
||||
integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==
|
||||
dependencies:
|
||||
dunder-proto "^1.0.1"
|
||||
es-object-atoms "^1.0.0"
|
||||
|
||||
gopd@^1.0.1, gopd@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
|
||||
integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
|
||||
|
||||
has-property-descriptors@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
|
||||
integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
|
||||
dependencies:
|
||||
es-define-property "^1.0.0"
|
||||
|
||||
has-symbols@^1.0.3, has-symbols@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338"
|
||||
integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
|
||||
|
||||
has-tostringtag@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
|
||||
integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
|
||||
dependencies:
|
||||
has-symbols "^1.0.3"
|
||||
|
||||
hash-base@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1"
|
||||
integrity sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw==
|
||||
dependencies:
|
||||
inherits "^2.0.1"
|
||||
|
||||
hash-base@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
|
||||
@@ -431,6 +576,13 @@ hash.js@^1.0.0, hash.js@^1.0.3:
|
||||
inherits "^2.0.3"
|
||||
minimalistic-assert "^1.0.1"
|
||||
|
||||
hasown@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
|
||||
integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
|
||||
dependencies:
|
||||
function-bind "^1.1.2"
|
||||
|
||||
hmac-drbg@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
|
||||
@@ -450,11 +602,33 @@ inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||
|
||||
is-callable@^1.2.7:
|
||||
version "1.2.7"
|
||||
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
|
||||
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
|
||||
|
||||
is-typed-array@^1.1.14:
|
||||
version "1.1.15"
|
||||
resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b"
|
||||
integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==
|
||||
dependencies:
|
||||
which-typed-array "^1.1.16"
|
||||
|
||||
isarray@^2.0.5:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
|
||||
integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
|
||||
|
||||
isarray@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
||||
integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
|
||||
|
||||
math-intrinsics@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9"
|
||||
integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
|
||||
|
||||
md5.js@^1.3.4:
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
|
||||
@@ -500,21 +674,27 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.7:
|
||||
safe-buffer "^5.2.1"
|
||||
|
||||
pbkdf2@^3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075"
|
||||
integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.3.tgz#8be674d591d65658113424592a95d1517318dd4b"
|
||||
integrity sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==
|
||||
dependencies:
|
||||
create-hash "^1.1.2"
|
||||
create-hmac "^1.1.4"
|
||||
ripemd160 "^2.0.1"
|
||||
safe-buffer "^5.0.1"
|
||||
sha.js "^2.4.8"
|
||||
create-hash "~1.1.3"
|
||||
create-hmac "^1.1.7"
|
||||
ripemd160 "=2.0.1"
|
||||
safe-buffer "^5.2.1"
|
||||
sha.js "^2.4.11"
|
||||
to-buffer "^1.2.0"
|
||||
|
||||
picocolors@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
|
||||
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
|
||||
|
||||
possible-typed-array-names@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae"
|
||||
integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==
|
||||
|
||||
postcss@^8.4.27:
|
||||
version "8.5.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214"
|
||||
@@ -578,6 +758,14 @@ readable-stream@^3.5.0, readable-stream@^3.6.0:
|
||||
string_decoder "^1.1.1"
|
||||
util-deprecate "^1.0.1"
|
||||
|
||||
ripemd160@=2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7"
|
||||
integrity sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w==
|
||||
dependencies:
|
||||
hash-base "^2.0.0"
|
||||
inherits "^2.0.1"
|
||||
|
||||
ripemd160@^2.0.0, ripemd160@^2.0.1:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
|
||||
@@ -629,7 +817,19 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
||||
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
|
||||
|
||||
sha.js@^2.4.0, sha.js@^2.4.8:
|
||||
set-function-length@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
|
||||
integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
|
||||
dependencies:
|
||||
define-data-property "^1.1.4"
|
||||
es-errors "^1.3.0"
|
||||
function-bind "^1.1.2"
|
||||
get-intrinsic "^1.2.4"
|
||||
gopd "^1.0.1"
|
||||
has-property-descriptors "^1.0.2"
|
||||
|
||||
sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8:
|
||||
version "2.4.11"
|
||||
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
|
||||
integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
|
||||
@@ -674,6 +874,24 @@ string_decoder@~1.1.1:
|
||||
dependencies:
|
||||
safe-buffer "~5.1.0"
|
||||
|
||||
to-buffer@^1.2.0:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.1.tgz#2ce650cdb262e9112a18e65dc29dcb513c8155e0"
|
||||
integrity sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==
|
||||
dependencies:
|
||||
isarray "^2.0.5"
|
||||
safe-buffer "^5.2.1"
|
||||
typed-array-buffer "^1.0.3"
|
||||
|
||||
typed-array-buffer@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536"
|
||||
integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==
|
||||
dependencies:
|
||||
call-bound "^1.0.3"
|
||||
es-errors "^1.3.0"
|
||||
is-typed-array "^1.1.14"
|
||||
|
||||
util-deprecate@^1.0.1, util-deprecate@~1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
@@ -690,6 +908,19 @@ vite@^4.5.14:
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
which-typed-array@^1.1.16:
|
||||
version "1.1.19"
|
||||
resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956"
|
||||
integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==
|
||||
dependencies:
|
||||
available-typed-arrays "^1.0.7"
|
||||
call-bind "^1.0.8"
|
||||
call-bound "^1.0.4"
|
||||
for-each "^0.3.5"
|
||||
get-proto "^1.0.1"
|
||||
gopd "^1.2.0"
|
||||
has-tostringtag "^1.0.2"
|
||||
|
||||
ws@^8.13.0:
|
||||
version "8.18.0"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc"
|
||||
|
||||
@@ -56,7 +56,7 @@ const main = async () => {
|
||||
const accountData = prepareAccountData(accountInfoResponse.result.account_data)
|
||||
appWindow.webContents.send('update-account-data', accountData)
|
||||
|
||||
const transactions = prepareTxData([{tx: transaction.transaction}])
|
||||
const transactions = prepareTxData([transaction])
|
||||
appWindow.webContents.send('update-transaction-data', transactions)
|
||||
})
|
||||
|
||||
|
||||
@@ -8,12 +8,12 @@ const prepareTxData = (transactions) => {
|
||||
}
|
||||
|
||||
return {
|
||||
confirmed: transaction.tx.date,
|
||||
type: transaction.tx.TransactionType,
|
||||
from: transaction.tx.Account,
|
||||
to: transaction.tx.Destination ?? "-",
|
||||
confirmed: transaction.close_time_iso,
|
||||
type: transaction.tx_json.TransactionType,
|
||||
from: transaction.tx_json.Account,
|
||||
to: transaction.tx_json.Destination ?? "-",
|
||||
value: tx_value,
|
||||
hash: transaction.tx.hash
|
||||
hash: transaction.hash
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ const subscribe = async (client, wallet, appWindow) => {
|
||||
const accountData = prepareAccountData(accountInfoResponse.result.account_data)
|
||||
appWindow.webContents.send('update-account-data', accountData)
|
||||
|
||||
const transactions = prepareTxData([{tx: transaction.transaction}])
|
||||
const transactions = prepareTxData([transaction])
|
||||
appWindow.webContents.send('update-transaction-data', transactions)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -99,9 +99,9 @@ async function verify(accountAddress, client) {
|
||||
try {
|
||||
const response = await client.request(request)
|
||||
return await checkDestination(response.result.account_data)
|
||||
} catch {
|
||||
} catch (err) {
|
||||
return {
|
||||
domain: 'domain',
|
||||
domain: '',
|
||||
verified: false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"async": "^3.2.4",
|
||||
"fernet": "^0.4.0",
|
||||
"fernet": "=0.3.3",
|
||||
"node-fetch": "^2.6.9",
|
||||
"pbkdf2-hmac": "^1.1.0",
|
||||
"open": "^8.4.0",
|
||||
"toml": "^3.0.0",
|
||||
"xrpl": "^4.0.0"
|
||||
"xrpl": "^4.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"electron": "22.3.25"
|
||||
"electron": "28.3.2"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
xrpl-py>=3.0.0
|
||||
wxPython==4.2.1
|
||||
toml==0.10.2
|
||||
requests==2.32.0
|
||||
requests==2.32.4
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Create, claim and verify a Payment Channel.
|
||||
* Reference: https://xrpl.org/paychannel.html
|
||||
* Reference: https://xrpl.org/docs/references/protocol/ledger-data/ledger-entry-types/paychannel
|
||||
*/
|
||||
import {
|
||||
AccountObjectsRequest,
|
||||
@@ -12,13 +12,11 @@ import {
|
||||
|
||||
const client = new Client('wss://s.altnet.rippletest.net:51233')
|
||||
|
||||
void claimPayChannel()
|
||||
|
||||
// The snippet walks us through creating and claiming a Payment Channel.
|
||||
async function claimPayChannel(): Promise<void> {
|
||||
await client.connect()
|
||||
|
||||
// creating wallets as prerequisite
|
||||
// Creating wallets as prerequisite
|
||||
const { wallet: wallet1 } = await client.fundWallet()
|
||||
const { wallet: wallet2 } = await client.fundWallet()
|
||||
|
||||
@@ -26,13 +24,13 @@ async function claimPayChannel(): Promise<void> {
|
||||
console.log(`Balance of ${wallet1.address} is ${await client.getXrpBalance(wallet1.address)} XRP`)
|
||||
console.log(`Balance of ${wallet2.address} is ${await client.getXrpBalance(wallet2.address)} XRP`)
|
||||
|
||||
// create a Payment Channel and submit and wait for tx to be validated
|
||||
// Create a Payment Channel and submit and wait for tx to be validated
|
||||
const paymentChannelCreate: PaymentChannelCreate = {
|
||||
TransactionType: 'PaymentChannelCreate',
|
||||
Account: wallet1.classicAddress,
|
||||
Amount: '100',
|
||||
Amount: '100', // 10 XRP
|
||||
Destination: wallet2.classicAddress,
|
||||
SettleDelay: 86400,
|
||||
SettleDelay: 86400, // 1 day in seconds
|
||||
PublicKey: wallet1.publicKey,
|
||||
}
|
||||
|
||||
@@ -44,7 +42,7 @@ async function claimPayChannel(): Promise<void> {
|
||||
console.log("PaymentChannelCreate transaction response:")
|
||||
console.log(paymentChannelResponse)
|
||||
|
||||
// check that the object was actually created
|
||||
// Check that the object was actually created
|
||||
const accountObjectsRequest: AccountObjectsRequest = {
|
||||
command: 'account_objects',
|
||||
account: wallet1.classicAddress,
|
||||
@@ -52,25 +50,23 @@ async function claimPayChannel(): Promise<void> {
|
||||
|
||||
const accountObjects = (await client.request(accountObjectsRequest)).result
|
||||
.account_objects
|
||||
|
||||
console.log("Account Objects:", accountObjects)
|
||||
|
||||
// destination claims the Payment Channel and we see the balances to verify.
|
||||
// Destination claims the Payment Channel and we see the balances to verify.
|
||||
const paymentChannelClaim: PaymentChannelClaim = {
|
||||
Account: wallet2.classicAddress,
|
||||
TransactionType: 'PaymentChannelClaim',
|
||||
Channel: hashes.hashPaymentChannel(
|
||||
wallet1.classicAddress,
|
||||
wallet2.classicAddress,
|
||||
paymentChannelResponse.result.Sequence ?? 0,
|
||||
paymentChannelResponse.result.tx_json.Sequence ?? 0,
|
||||
),
|
||||
Amount: '100',
|
||||
}
|
||||
|
||||
console.log("Submitting a PaymentChannelClaim transaction...")
|
||||
|
||||
const channelClaimResponse = await client.submit(paymentChannelClaim, {
|
||||
wallet: wallet1,
|
||||
wallet: wallet2,
|
||||
})
|
||||
console.log("PaymentChannelClaim transaction response:")
|
||||
console.log(channelClaimResponse)
|
||||
@@ -81,3 +77,5 @@ async function claimPayChannel(): Promise<void> {
|
||||
|
||||
await client.disconnect()
|
||||
}
|
||||
|
||||
void claimPayChannel()
|
||||
|
||||
85
_code-samples/claim-payment-channel/py/claim_pay_channel.py
Normal file
85
_code-samples/claim-payment-channel/py/claim_pay_channel.py
Normal file
@@ -0,0 +1,85 @@
|
||||
"""
|
||||
Create, claim and verify a Payment Channel.
|
||||
Reference: https://xrpl.org/docs/references/protocol/ledger-data/ledger-entry-types/paychannel
|
||||
"""
|
||||
from xrpl.clients import JsonRpcClient
|
||||
from xrpl.models import (
|
||||
AccountObjects,
|
||||
PaymentChannelCreate,
|
||||
PaymentChannelClaim,
|
||||
)
|
||||
from xrpl.wallet import generate_faucet_wallet
|
||||
from xrpl.transaction import submit, submit_and_wait
|
||||
from xrpl.account import get_balance
|
||||
|
||||
|
||||
"""The snippet walks us through creating and claiming a Payment Channel."""
|
||||
|
||||
client = JsonRpcClient("https://s.altnet.rippletest.net:51234")
|
||||
|
||||
# Creating wallets as prerequisite
|
||||
print("Setting up wallets...")
|
||||
wallet1 = generate_faucet_wallet(client)
|
||||
wallet2 = generate_faucet_wallet(client)
|
||||
|
||||
print("Balances of wallets before Payment Channel is claimed:")
|
||||
print(f"Balance of {wallet1.address} is {get_balance(wallet1.address, client)} XRP")
|
||||
print(f"Balance of {wallet2.address} is {get_balance(wallet2.address, client)} XRP")
|
||||
|
||||
# Create a Payment Channel and submit and wait for tx to be validated
|
||||
payment_channel_create = PaymentChannelCreate(
|
||||
account=wallet1.address,
|
||||
amount="100", # 10 XRP
|
||||
destination=wallet2.address,
|
||||
settle_delay=86400, # 1 day in seconds
|
||||
public_key=wallet1.public_key,
|
||||
)
|
||||
|
||||
print("\nSubmitting a PaymentChannelCreate transaction...")
|
||||
payment_channel_response = submit_and_wait(
|
||||
payment_channel_create,
|
||||
client,
|
||||
wallet1
|
||||
)
|
||||
print("PaymentChannelCreate transaction response:")
|
||||
print(payment_channel_response.result)
|
||||
|
||||
# Check that the object was actually created
|
||||
account_objects_request = AccountObjects(
|
||||
account=wallet1.address,
|
||||
)
|
||||
account_objects_response = client.request(account_objects_request)
|
||||
account_objects = account_objects_response.result["account_objects"]
|
||||
|
||||
# Find the PayChannel object to get the correct channel ID
|
||||
channel_id = None
|
||||
if 'meta' in payment_channel_response.result and 'AffectedNodes' in payment_channel_response.result['meta']:
|
||||
for node in payment_channel_response.result["meta"]["AffectedNodes"]:
|
||||
if 'CreatedNode' in node and node["CreatedNode"]["LedgerEntryType"] == 'PayChannel':
|
||||
channel_id = node['CreatedNode']['LedgerIndex']
|
||||
break
|
||||
|
||||
if not channel_id:
|
||||
raise Exception("Payment Channel ID not found in the response.")
|
||||
|
||||
print(f"Payment Channel ID: {channel_id}")
|
||||
|
||||
# Destination claims the Payment Channel and we see the balances to verify.
|
||||
payment_channel_claim = PaymentChannelClaim(
|
||||
account=wallet2.address,
|
||||
channel=channel_id,
|
||||
amount="100",
|
||||
)
|
||||
|
||||
print("\nSubmitting a PaymentChannelClaim transaction...")
|
||||
channel_claim_response = submit_and_wait(
|
||||
payment_channel_claim,
|
||||
client,
|
||||
wallet2,
|
||||
)
|
||||
print("PaymentChannelClaim transaction response:")
|
||||
print(channel_claim_response.result)
|
||||
|
||||
print("Balances of wallets after Payment Channel is claimed:")
|
||||
print(f"Balance of {wallet1.address} is {get_balance(wallet1.address, client)} XRP")
|
||||
print(f"Balance of {wallet2.address} is {get_balance(wallet2.address, client)} XRP")
|
||||
@@ -14,15 +14,6 @@ const seed = "sEd7jfWyNG6J71dEojB3W9YdHp2KCjy";
|
||||
async function main() {
|
||||
try {
|
||||
|
||||
// Construct condition and fulfillment ------------------------------------
|
||||
const preimageData = crypto.randomBytes(32);
|
||||
const myFulfillment = new cc.PreimageSha256();
|
||||
myFulfillment.setPreimage(preimageData);
|
||||
const conditionHex = myFulfillment.getConditionBinary().toString('hex').toUpperCase();
|
||||
|
||||
console.log('Condition:', conditionHex);
|
||||
console.log('Fulfillment:', myFulfillment.serializeBinary().toString('hex').toUpperCase());
|
||||
|
||||
// Connect ----------------------------------------------------------------
|
||||
const client = new xrpl.Client('wss://s.altnet.rippletest.net:51233');
|
||||
await client.connect();
|
||||
@@ -37,13 +28,23 @@ async function main() {
|
||||
finishAfter = new Date(finishAfter * 1000);
|
||||
console.log("This escrow will finish after: ", finishAfter);
|
||||
|
||||
// Construct condition and fulfillment ------------------------------------
|
||||
const preimageData = crypto.randomBytes(32);
|
||||
const myFulfillment = new cc.PreimageSha256();
|
||||
myFulfillment.setPreimage(preimageData);
|
||||
const conditionHex = myFulfillment.getConditionBinary().toString('hex').toUpperCase();
|
||||
|
||||
console.log('Condition:', conditionHex);
|
||||
console.log('Fulfillment:', myFulfillment.serializeBinary().toString('hex').toUpperCase());
|
||||
|
||||
// Prepare EscrowCreate transaction ------------------------------------
|
||||
const escrowCreateTransaction = {
|
||||
"TransactionType": "EscrowCreate",
|
||||
"Account": wallet.address,
|
||||
"Destination": wallet.address,
|
||||
"Amount": "6000000", //drops XRP
|
||||
"DestinationTag": 2023,
|
||||
"Condition": conditionHex,
|
||||
"Condition": conditionHex, // Omit this for time-held escrows
|
||||
"Fee": "12",
|
||||
"FinishAfter": xrpl.isoTimeToRippleTime(finishAfter.toISOString()),
|
||||
};
|
||||
|
||||
@@ -28,15 +28,18 @@ const main = async () => {
|
||||
throw new Error("Please specify the sequence number, condition and fulfillment of the escrow you created");
|
||||
};
|
||||
|
||||
// Prepare EscrowFinish transaction ---------------------------------
|
||||
const escrowFinishTransaction = {
|
||||
"Account": wallet.address,
|
||||
"TransactionType": "EscrowFinish",
|
||||
"Owner": wallet.address,
|
||||
// This should equal the sequence number of the escrow transaction
|
||||
"OfferSequence": offerSequence,
|
||||
// Crypto condition that must be met before escrow can be completed, passed on escrow creation
|
||||
// Crypto condition that must be met before escrow can be completed, passed on escrow creation.
|
||||
// Omit this for time-held escrows.
|
||||
"Condition": condition,
|
||||
// Fulfillment of the condition, passed on escrow creation
|
||||
// Fulfillment of the condition, passed on escrow creation.
|
||||
// Omit this for time-held escrows.
|
||||
"Fulfillment": fulfillment,
|
||||
};
|
||||
|
||||
|
||||
@@ -14,7 +14,11 @@ escrow_sequence = 30215126
|
||||
sender_wallet = generate_faucet_wallet(client=client)
|
||||
|
||||
# Build escrow cancel transaction
|
||||
cancel_txn = EscrowCancel(account=sender_wallet.address, owner=sender_wallet.address, offer_sequence=escrow_sequence)
|
||||
cancel_txn = EscrowCancel(
|
||||
account=sender_wallet.address,
|
||||
owner=sender_wallet.address,
|
||||
offer_sequence=escrow_sequence
|
||||
)
|
||||
|
||||
# Autofill, sign, then submit transaction and wait for result
|
||||
stxn_response = submit_and_wait(cancel_txn, client, sender_wallet)
|
||||
|
||||
@@ -34,7 +34,8 @@ create_txn = EscrowCreate(
|
||||
destination=receiver_addr,
|
||||
finish_after=claim_date,
|
||||
cancel_after=expiry_date,
|
||||
condition=condition)
|
||||
condition=condition # Omit this for time-held escrows
|
||||
)
|
||||
|
||||
# Autofill, sign, then submit transaction and wait for result
|
||||
stxn_response = submit_and_wait(create_txn, client, sender_wallet)
|
||||
|
||||
@@ -25,7 +25,13 @@ fulfillment = "A0228020AED2C5FE4D147D310D3CFEBD9BFA81AD0F63CE1ADD92E00379DDDAF8E
|
||||
sender_wallet = generate_faucet_wallet(client=client)
|
||||
|
||||
# Build escrow finish transaction
|
||||
finish_txn = EscrowFinish(account=sender_wallet.address, owner=escrow_creator, offer_sequence=escrow_sequence, condition=condition, fulfillment=fulfillment)
|
||||
finish_txn = EscrowFinish(
|
||||
account=sender_wallet.address,
|
||||
owner=escrow_creator,
|
||||
offer_sequence=escrow_sequence, # The sequence number of the escrow transaction
|
||||
condition=condition, # Omit this for time-held escrows
|
||||
fulfillment=fulfillment # Omit this for time-held escrows
|
||||
)
|
||||
|
||||
# Autofill, sign, then submit transaction and wait for result
|
||||
stxn_response = submit_and_wait(finish_txn, client, sender_wallet)
|
||||
|
||||
@@ -22,6 +22,7 @@ async function multisigning(): Promise<void> {
|
||||
const { wallet: wallet1 } = await client.fundWallet()
|
||||
const { wallet: wallet2 } = await client.fundWallet()
|
||||
const { wallet: walletMaster } = await client.fundWallet()
|
||||
|
||||
const signerListSet: SignerListSet = {
|
||||
TransactionType: 'SignerListSet',
|
||||
Account: walletMaster.classicAddress,
|
||||
@@ -56,9 +57,14 @@ async function multisigning(): Promise<void> {
|
||||
const accountSetTx = await client.autofill(accountSet, 2)
|
||||
console.log('AccountSet transaction is ready to be multisigned:')
|
||||
console.log(accountSetTx)
|
||||
|
||||
const { tx_blob: tx_blob1 } = wallet1.sign(accountSetTx, true)
|
||||
const { tx_blob: tx_blob2 } = wallet2.sign(accountSetTx, true)
|
||||
const multisignedTx = multisign([tx_blob1, tx_blob2])
|
||||
|
||||
console.log("Successfully multisigned the transaction")
|
||||
console.log(multisignedTx)
|
||||
|
||||
const submitResponse = await client.submit(multisignedTx)
|
||||
|
||||
if (submitResponse.result.engine_result === 'tesSUCCESS') {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* Extract best paths from RipplePathFind to trade with and send a payment using paths.
|
||||
* Reference: https://xrpl.org/paths.html
|
||||
*/
|
||||
import { Client, Payment, RipplePathFindResponse } from 'xrpl'
|
||||
import { Client, Payment, RipplePathFindResponse, RipplePathFindRequest } from 'xrpl'
|
||||
|
||||
const client = new Client('wss://s.altnet.rippletest.net:51233')
|
||||
|
||||
@@ -17,7 +17,7 @@ async function createTxWithPaths(): Promise<void> {
|
||||
issuer: 'rVnYNK9yuxBz4uP8zC8LEFokM2nqH3poc',
|
||||
}
|
||||
|
||||
const request = {
|
||||
const request: RipplePathFindRequest = {
|
||||
command: 'ripple_path_find',
|
||||
source_account: wallet.classicAddress,
|
||||
source_currencies: [
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,9 +1,8 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Transaction Serialization Sample Code (Python3 version)
|
||||
# Transaction Serialization Sample Code (Python version)
|
||||
# Author: rome@ripple.com
|
||||
# Copyright Ripple 2018
|
||||
# Requires Python 3.5+ because of bytes.hex()
|
||||
# Copyright Ripple 2018-2025
|
||||
|
||||
import argparse
|
||||
import json
|
||||
@@ -134,10 +133,13 @@ def accountid_to_bytes(address):
|
||||
|
||||
def amount_to_bytes(a):
|
||||
"""
|
||||
Serializes an "Amount" type, which can be either XRP or an issued currency:
|
||||
- XRP: 64 bits; 0, followed by 1 ("is positive"), followed by 62 bit UInt amount
|
||||
- Issued Currency: 64 bits of amount, followed by 160 bit currency code and
|
||||
160 bit issuer AccountID.
|
||||
Serializes an "Amount" type, which can be XRP, an issued currency, or MPT:
|
||||
- XRP: total 64 bits: 0, followed by 1 ("is positive"), then 0, then 61 bit UInt amount
|
||||
- Issued Currency: total 384 bits: 64 bits of amount, followed by 160 bit
|
||||
currency code and 160 bit issuer AccountID.
|
||||
- MPT: total 264 bits: 8-bit header with the binary value 01100000 (0x60),
|
||||
then 64 bit amount, 32 bit Sequence number, and 160 bit issuer AccountID.
|
||||
The Sequence and issuer are adjoined as mpt_issuance_id.
|
||||
"""
|
||||
if type(a) == str:
|
||||
# is XRP
|
||||
@@ -152,16 +154,26 @@ def amount_to_bytes(a):
|
||||
xrp_amt = -xrp_amt
|
||||
return xrp_amt.to_bytes(8, byteorder="big", signed=False)
|
||||
elif type(a) == dict:
|
||||
if sorted(a.keys()) != ["currency", "issuer", "value"]:
|
||||
if sorted(a.keys()) == ["mpt_issuance_id", "value"]:
|
||||
# MPT Amount
|
||||
mpt_prefix = uint8_to_bytes(0x60)
|
||||
mpt_amt = int(a["value"])
|
||||
assert mpt_amt < 2**63 and mpt_amt >= 0
|
||||
mpt_amt_bytes = mpt_amt.to_bytes(8, byteorder="big", signed=False)
|
||||
mpt_issuance_id = uint192_to_bytes(a["mpt_issuance_id"])
|
||||
return mpt_prefix + mpt_amt_bytes + mpt_issuance_id
|
||||
|
||||
elif sorted(a.keys()) != ["currency", "issuer", "value"]:
|
||||
raise ValueError("amount must have currency, value, issuer only (actually had: %s)" %
|
||||
sorted(a.keys()))
|
||||
|
||||
# Fungible token amount (non-MPT)
|
||||
issued_amt = IssuedAmount(a["value"]).to_bytes()
|
||||
logger.debug("Issued amount: %s"%issued_amt.hex())
|
||||
currency_code = currency_code_to_bytes(a["currency"])
|
||||
return issued_amt + currency_code + decode_address(a["issuer"])
|
||||
else:
|
||||
raise ValueError("amount must be XRP string or {currency, value, issuer}")
|
||||
raise ValueError("amount must be XRP string, {currency, value, issuer}, or {mpt_issuance_id, value}")
|
||||
|
||||
def array_to_bytes(array):
|
||||
"""
|
||||
@@ -194,6 +206,13 @@ def blob_to_bytes(field_val):
|
||||
vl_contents = bytes.fromhex(field_val)
|
||||
return vl_encode(vl_contents)
|
||||
|
||||
def currency_to_bytes(currency):
|
||||
"""
|
||||
Serializes a Currency-type field, which can be either 3-character string or
|
||||
160-bit hexadecimal.
|
||||
"""
|
||||
return currency_code_to_bytes(currency, xrp_ok=True)
|
||||
|
||||
def currency_code_to_bytes(code_string, xrp_ok=False):
|
||||
if re.match(r"^[A-Za-z0-9?!@#$%^&*<>(){}\[\]|]{3}$", code_string):
|
||||
# ISO 4217-like code
|
||||
@@ -216,7 +235,7 @@ def currency_code_to_bytes(code_string, xrp_ok=False):
|
||||
return b''.join( ( bytes(12), code_ascii, bytes(5) ) )
|
||||
elif re.match(r"^[0-9a-fA-F]{40}$", code_string):
|
||||
# raw hex code
|
||||
return bytes.fromhex(code_string) # requires Python 3.5+
|
||||
return bytes.fromhex(code_string)
|
||||
else:
|
||||
raise ValueError("invalid currency code")
|
||||
|
||||
@@ -224,29 +243,53 @@ def hash128_to_bytes(contents):
|
||||
"""
|
||||
Serializes a hexadecimal string as binary and confirms that it's 128 bits
|
||||
"""
|
||||
b = hash_to_bytes(contents)
|
||||
b = hex_to_bytes(contents)
|
||||
if len(b) != 16: # 16 bytes = 128 bits
|
||||
raise ValueError("Hash128 is not 128 bits long")
|
||||
return b
|
||||
|
||||
def hash160_to_bytes(contents):
|
||||
b = hash_to_bytes(contents)
|
||||
b = hex_to_bytes(contents)
|
||||
if len(b) != 20: # 20 bytes = 160 bits
|
||||
raise ValueError("Hash160 is not 160 bits long")
|
||||
return b
|
||||
|
||||
def hash256_to_bytes(contents):
|
||||
b = hash_to_bytes(contents)
|
||||
b = hex_to_bytes(contents)
|
||||
if len(b) != 32: # 32 bytes = 256 bits
|
||||
raise ValueError("Hash256 is not 256 bits long")
|
||||
return b
|
||||
|
||||
def hash_to_bytes(contents):
|
||||
def hex_to_bytes(contents):
|
||||
"""
|
||||
Helper function; serializes a hash value from a hexadecimal string
|
||||
of any length.
|
||||
"""
|
||||
return bytes.fromhex(field_val)
|
||||
return bytes.fromhex(contents)
|
||||
|
||||
def issue_to_bytes(issue):
|
||||
"""
|
||||
Serialize an Issue-type field, which defines a fungible token or XRP
|
||||
without a quantity.
|
||||
"""
|
||||
if type(issue) != dict:
|
||||
raise ValueError("Issue field must be provided as dictionary")
|
||||
if len(issue.keys()) == 1 and issue.get("currency") != "XRP":
|
||||
raise ValueError("Issue field must provide currency and issuer unless currency is XRP")
|
||||
elif sorted(issue.keys()) != ["currency", "issuer"]:
|
||||
raise ValueError("Issue field must provide currency and issuer unless currency is XRP")
|
||||
|
||||
currency_code = currency_code_to_bytes(issue["currency"])
|
||||
address = decode_address(issue["issuer"])
|
||||
return currency_code + address
|
||||
|
||||
def number_to_bytes(str_num):
|
||||
"""
|
||||
Serialize a Number-type field, which is a stand-alone quantity in the same
|
||||
floating point format as a fungible token amount.
|
||||
"""
|
||||
amt = IssuedAmount(str_num)
|
||||
return amt.to_bytes()
|
||||
|
||||
def object_to_bytes(obj):
|
||||
"""
|
||||
@@ -349,6 +392,34 @@ def uint16_to_bytes(i):
|
||||
def uint32_to_bytes(i):
|
||||
return i.to_bytes(4, byteorder="big", signed=False)
|
||||
|
||||
def uint64_to_bytes(i):
|
||||
# Unlike smaller UInts, UInt64 is serialized as hex in JSON
|
||||
b = hex_to_bytes(i)
|
||||
if len(b) != 8: # 8 bytes = 64 bits
|
||||
raise ValueError("UInt64 is not 64 bits long")
|
||||
return b
|
||||
|
||||
def uint192_to_bytes(i):
|
||||
b = hex_to_bytes(i)
|
||||
if len(b) != 24: # 24 bytes = 192 bits
|
||||
raise ValueError("UInt192 is not 192 bits long")
|
||||
return b
|
||||
|
||||
def uint384_to_bytes(i):
|
||||
b = hex_to_bytes(i)
|
||||
if len(b) != 48: # 48 bytes = 384 bits
|
||||
raise ValueError("UInt384 is not 384 bits long")
|
||||
return b
|
||||
|
||||
def vector256_to_bytes(strlist):
|
||||
"""
|
||||
Serialize a Vector256 type which is a length-prefixed list of arbitrary
|
||||
256-bit values.
|
||||
"""
|
||||
binarylist = []
|
||||
for item in strlist:
|
||||
binarylist.append(hash256_to_bytes(item))
|
||||
return vl_encode(b''.join(binarylist))
|
||||
|
||||
# Core serialization logic -----------------------------------------------------
|
||||
|
||||
@@ -372,15 +443,22 @@ def field_to_bytes(field_name, field_val):
|
||||
"AccountID": accountid_to_bytes,
|
||||
"Amount": amount_to_bytes,
|
||||
"Blob": blob_to_bytes,
|
||||
"Hash128": hash128_to_bytes,
|
||||
"Currency": currency_to_bytes,
|
||||
"Hash128": hash128_to_bytes, # aka UInt128
|
||||
"Hash160": hash160_to_bytes,
|
||||
"Hash256": hash256_to_bytes,
|
||||
"Issue": issue_to_bytes,
|
||||
"Number": number_to_bytes,
|
||||
"PathSet": pathset_to_bytes,
|
||||
"STArray": array_to_bytes,
|
||||
"STObject": object_to_bytes,
|
||||
"UInt8" : uint8_to_bytes,
|
||||
"UInt16": uint16_to_bytes,
|
||||
"UInt32": uint32_to_bytes,
|
||||
"UInt64": uint64_to_bytes,
|
||||
"UInt192": uint192_to_bytes,
|
||||
"UInt384": uint384_to_bytes,
|
||||
"Vector256": vector256_to_bytes,
|
||||
}
|
||||
field_binary = dispatch[field_type](field_val)
|
||||
return b''.join( (id_prefix, field_binary) )
|
||||
@@ -416,6 +494,12 @@ def serialize_tx(tx, for_signing=False):
|
||||
"Sequence": 2
|
||||
}
|
||||
"""
|
||||
# Special case: DeliverMax is an API alias for Amount. De-alias it here.
|
||||
# See also: https://github.com/XRPLF/rippled/issues/5506
|
||||
if "DeliverMax" in tx.keys():
|
||||
tx["Amount"] = tx["DeliverMax"]
|
||||
del tx["DeliverMax"]
|
||||
|
||||
field_order = sorted(tx.keys(), key=field_sort_key)
|
||||
logger.debug("Canonical field order: %s" % field_order)
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
12000024003B498561600000000000002710003B49848403524C52FC5B7E804DFE38271A5B1B3E46A93B684000000000000064732102FC20ED4D4D43CFAF4E449A85F68CAEE35B59F19233773818CA05221643A09FBC74473045022100A6FFF3327662DCA0246EA196A2E56754341D614F2A04AF2378A0B273EEB1A87F02207C47C93E185083BEA57C5725947042C279DDEC36EBAE9BACF4880DCCE7D6845181148403524C52FC5B7E804DFE38271A5B1B3E46A93B831412F36D6C45FE5F0C37A6DFA21BE514C45D1E0655
|
||||
13
_code-samples/tx-serialization/py/test-cases/tx4.json
Normal file
13
_code-samples/tx-serialization/py/test-cases/tx4.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"Account": "rDspBaumB5u6YWRdw5BWoBP3rcExFrXxoY",
|
||||
"DeliverMax": {
|
||||
"mpt_issuance_id": "003B49848403524C52FC5B7E804DFE38271A5B1B3E46A93B",
|
||||
"value": "10000"
|
||||
},
|
||||
"Destination": "rpjU8anTxTQX97GKHsuv8TyQ659j6pPak4",
|
||||
"Fee": "100",
|
||||
"Sequence": 3885445,
|
||||
"SigningPubKey": "02FC20ED4D4D43CFAF4E449A85F68CAEE35B59F19233773818CA05221643A09FBC",
|
||||
"TransactionType": "Payment",
|
||||
"TxnSignature": "3045022100A6FFF3327662DCA0246EA196A2E56754341D614F2A04AF2378A0B273EEB1A87F02207C47C93E185083BEA57C5725947042C279DDEC36EBAE9BACF4880DCCE7D68451"
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
1200332FFFFFFFFF2033000004D2750B6469645F6578616D706C65701C0863757272656E6379701D0870726F7669646572811401476926B590BA3245F63C829116A0A3AF7F382DF018E020301700000000000001E2041003011A0000000000000000000000000000000000000000021A0000000000000000000000005553440000000000E1F1
|
||||
19
_code-samples/tx-serialization/py/test-cases/tx5.json
Normal file
19
_code-samples/tx-serialization/py/test-cases/tx5.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"TransactionType": "OracleSet",
|
||||
"Account": "rfmDuhDyLGgx94qiwf3YF8BUV5j6KSvE8",
|
||||
"OracleDocumentID": 1234,
|
||||
"LastUpdateTime": 4294967295,
|
||||
"PriceDataSeries": [
|
||||
{
|
||||
"PriceData": {
|
||||
"BaseAsset": "XRP",
|
||||
"QuoteAsset": "USD",
|
||||
"AssetPrice": "00000000000001E2",
|
||||
"Scale": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"Provider": "70726F7669646572",
|
||||
"URI": "6469645F6578616D706C65",
|
||||
"AssetClass": "63757272656E6379"
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
12001C230606B58324057999CC201B05C8EFD868400000000000000C732103A024842C84B81B95A7F4644AF2C4A51A51417984923C4F9B104992D4C52A882274473045022100FD4B62198CB9E13984D9D9DAC5AE978F326E444A4618AEABD1326826E5FEE0B802206B9D7FAAEEFF32BCDFC32F2C3C16196B92C848FC36BB32082F91FE5076EC930681143461BF0CAF5BFC043B56EF88A36FF4EBC510D652041320822342A1477A13D829EE9A7C4C8590910A297EFCAB0E20D7E5B1686A46C023CB
|
||||
13
_code-samples/tx-serialization/py/test-cases/tx6.json
Normal file
13
_code-samples/tx-serialization/py/test-cases/tx6.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"Account": "rnmyNW49mSzh4xKCRNMtvQ2sb69HKnrghA",
|
||||
"Fee": "12",
|
||||
"LastLedgerSequence": 97054680,
|
||||
"NFTokenOffers": [
|
||||
"822342A1477A13D829EE9A7C4C8590910A297EFCAB0E20D7E5B1686A46C023CB"
|
||||
],
|
||||
"Sequence": 91855308,
|
||||
"SigningPubKey": "03A024842C84B81B95A7F4644AF2C4A51A51417984923C4F9B104992D4C52A8822",
|
||||
"SourceTag": 101102979,
|
||||
"TransactionType": "NFTokenCancelOffer",
|
||||
"TxnSignature": "3045022100FD4B62198CB9E13984D9D9DAC5AE978F326E444A4618AEABD1326826E5FEE0B802206B9D7FAAEEFF32BCDFC32F2C3C16196B92C848FC36BB32082F91FE5076EC9306"
|
||||
}
|
||||
@@ -27,8 +27,9 @@ const softwallets = [
|
||||
alt: "Gatehub",
|
||||
imgclasses: "invertible-img",
|
||||
},
|
||||
{ href: "https://gemwallet.com/", id: "wallet-gem", alt: "Gem Wallet" },
|
||||
{ href: "https://gemwallet.app/", id: "wallet-gem", alt: "Gem Wallet" },
|
||||
{ href: "https://coin.space/", id: "wallet-coin", alt: "Coin Space" },
|
||||
{ href: "https://crossmark.io/", id: "wallet-crossmark", alt: "Crossmark Wallet" },
|
||||
];
|
||||
|
||||
const hardwallets = [
|
||||
|
||||
@@ -32,7 +32,6 @@ On supported platforms, see the [instructions on installing or updating `rippled
|
||||
|:--------|:--------|
|
||||
| [RPM for Red Hat / CentOS (x86-64)](https://repos.ripple.com/repos/rippled-rpm/stable/rippled-2.2.0-1.el7.x86_64.rpm) | `aeee54f2cafb651c42d12791ea62ebd20786b94165723ae5f405a089f7eec80a` |
|
||||
| [DEB for Ubuntu / Debian (x86-64)](https://repos.ripple.com/repos/rippled-deb/pool/stable/rippled_2.2.0-1_amd64.deb) | `1bd26cea8e289e40368542eb370cec95b42905855f9ada8ece361a43134834c9` |
|
||||
| [Portable Builds (Linux x86-64)](https://github.com/XRPLF/rippled-portable-builds) | (Use signature verification) |
|
||||
|
||||
For other platforms, please [build from source](https://github.com/XRPLF/rippled/blob/master/BUILD.md). The most recent commit in the git log should be the change setting the version:
|
||||
|
||||
|
||||
@@ -33,7 +33,6 @@ On supported platforms, see the [instructions on installing or updating `rippled
|
||||
|:--------|:--------|
|
||||
| [RPM for Red Hat / CentOS (x86-64)](https://repos.ripple.com/repos/rippled-rpm/stable/rippled-2.2.1-1.el7.x86_64.rpm) | `32312c90ac4c685f11b168c5b9ec75aee8f4b2d7bef5dc11b42232679d0cd1f4` |
|
||||
| [DEB for Ubuntu / Debian (x86-64)](https://repos.ripple.com/repos/rippled-deb/pool/stable/rippled_2.2.1-1_amd64.deb) | `f696e6898ad64e73d75bb9a1f50fb325b9675b168ffaeeacfce53fbd9e35bbee` |
|
||||
| [Portable Builds (Linux x86-64)](https://github.com/XRPLF/rippled-portable-builds) | (Use signature verification) |
|
||||
|
||||
For other platforms, please [build from source](https://github.com/XRPLF/rippled/blob/master/BUILD.md). The most recent commit in the git log should be the change setting the version:
|
||||
|
||||
|
||||
@@ -33,7 +33,6 @@ On supported platforms, see the [instructions on installing or updating `rippled
|
||||
|:--------|:--------|
|
||||
| [RPM for Red Hat / CentOS (x86-64)](https://repos.ripple.com/repos/rippled-rpm/stable/rippled-2.2.2-1.el7.x86_64.rpm) | `d17d2dfc52a776015ba71a93bdd70cca5d57e51ba2c27ab0bb01afe6b645d3f0` |
|
||||
| [DEB for Ubuntu / Debian (x86-64)](https://repos.ripple.com/repos/rippled-deb/pool/stable/rippled_2.2.2-1_amd64.deb) | `9e0734966089d9cfde40d1a3551ae1e219faaadfe9fdc69eb900c6cb5024d658` |
|
||||
| [Portable Builds (Linux x86-64)](https://github.com/XRPLF/rippled-portable-builds) | (Use signature verification) |
|
||||
|
||||
For other platforms, please [build from source](https://github.com/XRPLF/rippled/blob/master/BUILD.md). The most recent commit in the git log should be the change setting the version:
|
||||
|
||||
|
||||
@@ -74,7 +74,6 @@ On supported platforms, see the [instructions on installing or updating `rippled
|
||||
|:--------|:--------|
|
||||
| [RPM for Red Hat / CentOS (x86-64)](https://repos.ripple.com/repos/rippled-rpm/stable/rippled-2.2.3-1.el7.x86_64.rpm) | `fb90f8f78799c24dd1f6286e96aa31afd0586bf21d32bc711ccc3dc868977da5` |
|
||||
| [DEB for Ubuntu / Debian (x86-64)](https://repos.ripple.com/repos/rippled-deb/pool/stable/rippled_2.2.3-1_amd64.deb) | `e6a77cbe32228f9d68a8545c3b4e9a25d098ab30ea01852658ee5efe3371b9f1` |
|
||||
| [Portable Builds (Linux x86-64)](https://github.com/XRPLF/rippled-portable-builds) | (Use signature verification) |
|
||||
|
||||
For other platforms, please [build from source](https://github.com/XRPLF/rippled/blob/master/BUILD.md). The most recent commit in the git log should be the change setting the version:
|
||||
|
||||
|
||||
@@ -30,7 +30,6 @@ On supported platforms, see the [instructions on installing or updating `rippled
|
||||
|:--------|:--------|
|
||||
| [RPM for Red Hat / CentOS (x86-64)](https://repos.ripple.com/repos/rippled-rpm/stable/rippled-2.3.0-1.el7.x86_64.rpm) | `fb74f401e5ba121bbc37e6188aa064488ad78ffef549a1e19bc8b71316d08031` |
|
||||
| [DEB for Ubuntu / Debian (x86-64)](https://repos.ripple.com/repos/rippled-deb/pool/stable/rippled_2.3.0-1_amd64.deb) | `5d616d53218b47a2f0803c1d37d410f72d19b57cdb9cabdf77b1cf0134cce3ca` |
|
||||
| [Portable Builds (Linux x86-64)](https://github.com/XRPLF/rippled-portable-builds) | (Use signature verification) |
|
||||
|
||||
{% admonition type="info" name="Note" %}
|
||||
The packages in the stable repository were accidentally overwritten with a different build from the same source code as a result of version 2.3.0 being merged to both the `release` and `master` source code branches. This post has been updated with the new package hashes based on the packages currently available in the stable branch of each repository. The previous package hashes, below, are also acceptable, and represent the same release:
|
||||
|
||||
@@ -29,7 +29,6 @@ On supported platforms, see the [instructions on installing or updating `rippled
|
||||
|:--------|:--------|
|
||||
| [RPM for Red Hat / CentOS (x86-64)](https://repos.ripple.com/repos/rippled-rpm/stable/rippled-2.3.1-1.el7.x86_64.rpm) | `db3ad27d3b61675caad0e0f74e66b2e2004c7d7ee97b5decd297168d27e48a25` |
|
||||
| [DEB for Ubuntu / Debian (x86-64)](https://repos.ripple.com/repos/rippled-deb/pool/stable/rippled_2.3.1-1_amd64.deb) | `21931aa5fbf8cd2cf3fb4dc71a3b593bff754e4a804ba712891dea5ed48357e9` |
|
||||
| [Portable Builds (Linux x86-64)](https://github.com/XRPLF/rippled-portable-builds) | (Use signature verification) |
|
||||
|
||||
For other platforms, please [build from source](https://github.com/XRPLF/rippled/blob/master/BUILD.md). The most recent commit in the git log should be the change setting the version:
|
||||
|
||||
|
||||
@@ -52,7 +52,6 @@ On supported platforms, see the [instructions on installing or updating `rippled
|
||||
|:--------|:--------|
|
||||
| [RPM for Red Hat / CentOS (x86-64)](https://repos.ripple.com/repos/rippled-rpm/stable/rippled-2.4.0-1.el7.x86_64.rpm) | `f87f44005b84b35606413313f7414bfdf2bf09f01ce88bfe9fafc3ff75fd5199` |
|
||||
| [DEB for Ubuntu / Debian (x86-64)](https://repos.ripple.com/repos/rippled-deb/pool/stable/rippled_2.4.0-1_amd64.deb) | `a3df84ba3d21f7182a57c8ca11fb2fbd1707e5cf53112822e60aa89886d943ad` |
|
||||
| [Portable Builds (Linux x86-64)](https://github.com/XRPLF/rippled-portable-builds) | (Use signature verification) |
|
||||
|
||||
For other platforms, please [build from source](https://github.com/XRPLF/rippled/blob/master/BUILD.md). The most recent commit in the git log should be the change setting the version:
|
||||
|
||||
|
||||
177
blog/2025/rippled-2.5.0.md
Normal file
177
blog/2025/rippled-2.5.0.md
Normal file
@@ -0,0 +1,177 @@
|
||||
---
|
||||
category: 2025
|
||||
date: "2025-06-24"
|
||||
template: '../../@theme/templates/blogpost'
|
||||
seo:
|
||||
title: Introducing XRP Ledger version 2.5.0
|
||||
description: rippled version 2.5.0 is now available. This version introduces new features and bug fixes.
|
||||
labels:
|
||||
- rippled Release Notes
|
||||
markdown:
|
||||
editPage:
|
||||
hide: true
|
||||
---
|
||||
# Introducing XRP Ledger version 2.5.0
|
||||
|
||||
Version 2.5.0 of `rippled`, the reference server implementation of the XRP Ledger protocol, is now available. This release adds new features and bug fixes, and introduces these amendments:
|
||||
|
||||
- `TokenEscrow`
|
||||
- `Batch`
|
||||
- `PermissionedDEX`
|
||||
- `PermissionDelegation`
|
||||
- `AMMv1_3`
|
||||
- `EnforceNFTokenTrustlineV2`
|
||||
- `PayChanCancelAfter`
|
||||
|
||||
|
||||
## Action Required
|
||||
|
||||
If you run an XRP Ledger server, upgrade to version 2.5.0 as soon as possible to ensure service continuity.
|
||||
|
||||
Additionally, new amendments are now open for voting according to the XRP Ledger's [amendment process](../../docs/concepts/networks-and-servers/amendments.md), which enables protocol changes following two weeks of >80% support from trusted validators. The exact time that protocol changes take effect depends on the voting decisions of the decentralized network.
|
||||
|
||||
|
||||
## Install / Upgrade
|
||||
|
||||
On supported platforms, see the [instructions on installing or updating `rippled`](../../docs/infrastructure/installation/index.md).
|
||||
|
||||
| Package | SHA-256 |
|
||||
|:--------|:--------|
|
||||
| [RPM for Red Hat / CentOS (x86-64)](https://repos.ripple.com/repos/rippled-rpm/stable/rippled-2.5.0-1.el7.x86_64.rpm) | `7719be1889619a37a83795a9740d803bbc1c08b0bd8c755cbf266aeb68b875b6` |
|
||||
| [DEB for Ubuntu / Debian (x86-64)](https://repos.ripple.com/repos/rippled-deb/pool/stable/rippled_2.5.0-1_amd64.deb) | `d935f678624349e422dff1944a40acaf3e287b11244b4f5b5056cb343fc31e9d` |
|
||||
|
||||
For other platforms, please [build from source](https://github.com/XRPLF/rippled/blob/master/BUILD.md). The most recent commit in the git log should be the change setting the version:
|
||||
|
||||
```text
|
||||
commit 1e01cd34f7a216092ed779f291b43324c167167a
|
||||
Author: Michael Legleux <mlegleux@ripple.com>
|
||||
Date: Tue Jun 17 10:38:07 2025 -0700
|
||||
|
||||
Set version to 2.5.0
|
||||
```
|
||||
|
||||
{% admonition type="warning" name="Warning" %} After this release, we will no longer support GCC versions older than 12, Clang (including Apple Clang) versions older than 16, or Conan 1. {% /admonition %}
|
||||
|
||||
|
||||
## Full Changelog
|
||||
|
||||
### Amendments
|
||||
|
||||
The following amendments are open for voting with this release:
|
||||
|
||||
- **TokenEscrow (XLS-85)** - Enhances escrow functionality by enabling escrows to interact with trustline-based tokens (IOUs) and multi-purpose tokens (MPTs). ([#5185](https://github.com/XRPLF/rippled/pull/5185))
|
||||
- **Batch (XLS-56)** - Adds the ability to group multiple transactions and execute them atomically, improving efficiency and enabling complex multistep operations. ([#5060](https://github.com/XRPLF/rippled/pull/5060))
|
||||
- **PermissionedDEX (XLS-81)** - Adds permissioned decentralized exchanges that control who can participate, ensuring compliance with financial regulations. ([#5404](https://github.com/XRPLF/rippled/pull/5404))
|
||||
- **PermissionDelegation (XLS-75)** - Enables account holders to delegate specific permissions to other accounts for flexible account management and automation. ([#5354](https://github.com/XRPLF/rippled/pull/5354))
|
||||
- **AMMv1_3** - Adds invariant checking to AMM-related transactions. ([#5203](https://github.com/XRPLF/rippled/pull/5203))
|
||||
- **EnforceNFTokenTrustlineV2** - Fixes issues with NFT interactions bypassing the trustline authorization requirement. ([#5297](https://github.com/XRPLF/rippled/pull/5297))
|
||||
- **PayChanCancelAfter** - Fixes an issue that made it possible to create a payment channel when `CancelAfter` is in the past. ([#4717](https://github.com/XRPLF/rippled/pull/4717))
|
||||
|
||||
|
||||
### New Features
|
||||
|
||||
- Increased network I/O capacity to handle higher transaction loads. ([#5464](https://github.com/XRPLF/rippled/pull/5464))
|
||||
- Enhanced transaction relay logic. ([#4985](https://github.com/XRPLF/rippled/pull/4985))
|
||||
- Added XRPL Commons as a new Bootstrap Cluster in the `rippled` configuration. ([#5263](https://github.com/XRPLF/rippled/pull/5263))
|
||||
- Improved how the `simulate` method handles transactions submitted from a multi-signing account. Also fixed an issue that allowed transactions when both single-signed and multi-signed keys were provided. ([#5479](https://github.com/XRPLF/rippled/pull/5479))
|
||||
- Updated code reviewers for RPC changes. ([#5266](https://github.com/XRPLF/rippled/pull/5266))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fixed pseudo-account ID calculation to ensure correct account address generation. ([#5447](https://github.com/XRPLF/rippled/pull/5447))
|
||||
- Fixed a unity build error. ([#5459](https://github.com/XRPLF/rippled/pull/5459))
|
||||
- Fixed initializer list initialization issues for GCC-15 compatibility. ([#5443](https://github.com/XRPLF/rippled/pull/5443))
|
||||
- Resolved slow test performance issues on macOS pipeline. ([#5392](https://github.com/XRPLF/rippled/pull/5392))
|
||||
- Replaced the custom endpoint selection logic with sequential attempts to connect to available endpoints until one succeeds or all fail. ([#5365](https://github.com/XRPLF/rippled/pull/5365))
|
||||
- Fixed coverage file generation to ensure atomic generation. ([#5426](https://github.com/XRPLF/rippled/pull/5426))
|
||||
- Renamed _deadlock_ crash error to _stall_ in the event of severe CPU starvation. ([#5341](https://github.com/XRPLF/rippled/pull/5341))
|
||||
- Fixed an inaccurate error message in the `ledger_entry` RPC method when the account specified is not a string. ([#5344](https://github.com/XRPLF/rippled/pull/5344))
|
||||
- Fixed a crash that could occur when handling an invalid marker parameter in a gRPC call. ([#5317](https://github.com/XRPLF/rippled/pull/5317))
|
||||
- Fixed an issue with trust lines setting behavior around the `lsfDefaultRipple` flag. ([#5345](https://github.com/XRPLF/rippled/pull/5345))
|
||||
- Removed undefined behavior from `LogicError` to guarantee a stacktrace. ([#5338](https://github.com/XRPLF/rippled/pull/5338))
|
||||
- Updated links to the ripple binary codec definitions. ([#5355](https://github.com/XRPLF/rippled/pull/5355))
|
||||
- Fixed the consensus logic to prevent a consensus round taking too long to complete. ([#5277](https://github.com/XRPLF/rippled/pull/5277))
|
||||
- Fixed `undefined uint128_t` type on non-unity `Windows` builds. ([#5377](https://github.com/XRPLF/rippled/pull/5377))
|
||||
- Fixed a `uint128` issue that broke MacOS unity builds. ([#5386](https://github.com/XRPLF/rippled/pull/5386))
|
||||
- Fixed a memory ordering assertion failure. ([#5381](https://github.com/XRPLF/rippled/pull/5381))
|
||||
- Disabled `channel_authorize` when `signing_support` is disabled. ([#5385](https://github.com/XRPLF/rippled/pull/5385))
|
||||
- Fixed a webhook issue when using the `subscribe` admin RPC. ([#5163](https://github.com/XRPLF/rippled/pull/5163))
|
||||
- Fixed issues with CTID. ([#4738](https://github.com/XRPLF/rippled/pull/4738))
|
||||
- Temporarily disabled unit tests on macOS to investigate delays. ([#5397](https://github.com/XRPLF/rippled/pull/5397))
|
||||
- Fixed CTID to use the correct `ledger_index`. ([#5408](https://github.com/XRPLF/rippled/pull/5408))
|
||||
- Updated CODEOWNERS path configuration. ([#5440](https://github.com/XRPLF/rippled/pull/5440))
|
||||
- Removed unused code. ([#5475](https://github.com/XRPLF/rippled/pull/5475))
|
||||
|
||||
|
||||
### Other Improvements
|
||||
|
||||
- Enabled passive squelching for validators to accept squelch messages from untrusted validators, reducing duplicate traffic they generate. ([#5358](https://github.com/XRPLF/rippled/pull/5358))
|
||||
- Improved squelching configuration. ([#5438](https://github.com/XRPLF/rippled/pull/5438))
|
||||
- Updated CPP reference source. ([#5453](https://github.com/XRPLF/rippled/pull/5453))
|
||||
- Added codecov badge and raised coverage thresholds. ([#5428](https://github.com/XRPLF/rippled/pull/5428))
|
||||
- Refactored codebase to use east const convention for code consistency. ([#5409](https://github.com/XRPLF/rippled/pull/5409))
|
||||
- Updated build instructions for Ubuntu 22.04+. ([#5292](https://github.com/XRPLF/rippled/pull/5292))
|
||||
- Updated build instructions to improve build times. ([#5288](https://github.com/XRPLF/rippled/pull/5288))
|
||||
- Updated example keyserver host in `SECURITY.md`. ([#5460](https://github.com/XRPLF/rippled/pull/5460))
|
||||
- Implemented `transitive_headers` when building with Conan 2. ([#5462](https://github.com/XRPLF/rippled/pull/5462))
|
||||
- Renamed documentation CI job for clarity. ([#5398](https://github.com/XRPLF/rippled/pull/5398))
|
||||
- Clarified the `lsfDefaultRipple` comment for better code documentation. ([#5410](https://github.com/XRPLF/rippled/pull/5410))
|
||||
- Cleaned up missing and unused headers. ([#5293](https://github.com/XRPLF/rippled/pull/5293))
|
||||
- Refactored code to update `numFeatures` automatically. ([#5324](https://github.com/XRPLF/rippled/pull/5324))
|
||||
- Improved ordering of headers with clang format. ([#5343](https://github.com/XRPLF/rippled/pull/5343))
|
||||
- Updated Conan dependencies. ([#5335](https://github.com/XRPLF/rippled/pull/5335))
|
||||
- Added PR numbers to the payload of `libXRPL` compatibility check workflows. ([#5310](https://github.com/XRPLF/rippled/pull/5310))
|
||||
- Updated TxQ unit tests to work with variable reference fees. ([#5118](https://github.com/XRPLF/rippled/pull/5118), [#5145](https://github.com/XRPLF/rippled/pull/5145))
|
||||
- Optimized SHAMap smart pointers for efficient memory use and lock-free synchronization. ([#5152](https://github.com/XRPLF/rippled/pull/5152))
|
||||
- Moved integration tests to another folder to make their purpose clear. ([#5367](https://github.com/XRPLF/rippled/pull/5367))
|
||||
- Enabled compile time parameter to change the reference fee value. ([#5159](https://github.com/XRPLF/rippled/pull/5159))
|
||||
- Cleaned up test logging messages to make it easier to search. ([#5396](https://github.com/XRPLF/rippled/pull/5396))
|
||||
- Improved CI jobs to only run on PRs that have a `DraftRunCI` label. ([#5400](https://github.com/XRPLF/rippled/pull/5400))
|
||||
- Updated `validators-example.txt` to fix XRPLF example URL configuration. ([#5384](https://github.com/XRPLF/rippled/pull/5384))
|
||||
- Changed ledger close in `env.meta` to be conditionally on, making it easier to debug issues if you closed the ledger outside of the `meta` function. ([#5457](https://github.com/XRPLF/rippled/pull/5457))
|
||||
- Collapsed log messages for easier readability. ([#5347](https://github.com/XRPLF/rippled/pull/5347))
|
||||
|
||||
|
||||
## Credits
|
||||
|
||||
The following people contributed directly to this release:
|
||||
|
||||
- Alex Kremer <akremer@ripple.com>
|
||||
- Ayaz Salikhov <asalikhov@ripple.com>
|
||||
- Bart Thomee <bthomee@users.noreply.github.com>
|
||||
- Brett Mollin <brett@ripple.com>
|
||||
- Bronek Kozicki <brok@incorrekt.com>
|
||||
- Cindy Yan <120398799+cindyyan317@users.noreply.github.com>
|
||||
- Darius Tumas <Tokeiito@users.noreply.github.com>
|
||||
- David Fuelling <fuelling@ripple.com>
|
||||
- Denis Angell <dangell@transia.co>
|
||||
- Ed Hennis <ed@ripple.com>
|
||||
- Elliot Lee <github.public@intelliot.com>
|
||||
- Gregory Tsipenyuk <gtsipenyuk@ripple.com>
|
||||
- Jingchen Wu <jingchenw@ripple.com>
|
||||
- Luc des Trois Maisons <lmaisons@ripple.com>
|
||||
- Mani Mounika Kunasani <mkunasani@ripple.com>
|
||||
- Mark Travis <mtrippled@users.noreply.github.com>
|
||||
- Matt Mankins <mankins@gmail.com>
|
||||
- Mayukha Vadari <mvadari@gmail.com>
|
||||
- Michael Legleux <mlegleux@ripple.com>
|
||||
- Oleksandr Pidskopnyi <opidskopnyi@ripple.com>
|
||||
- Ramkumar SG <rgunasegharan@ripple.com>
|
||||
- Scott Determan <scott.determan@yahoo.com>
|
||||
- Sergey Kuznetsov <skuznetsov@ripple.com>
|
||||
- Sophia Xie <sxie@ripple.com>
|
||||
- Shawn Xie <shawnxie@ripple.com>
|
||||
- Valentin Balaschenko <vbalaschenko@ripple.com>
|
||||
- Vito Tumas <vtumas@ripple.com>
|
||||
- Vladislav Vysokikh <vvysokikh@gmail.com>
|
||||
- Wietse Wind <w.wind@ipublications.net>
|
||||
- Xun Zhao <xzhao@ripple.com>
|
||||
- Yinyi Qian <yqian@ripple.com>
|
||||
|
||||
|
||||
## Bug Bounties and Responsible Disclosures
|
||||
|
||||
We welcome reviews of the `rippled` code and urge researchers to responsibly disclose any issues they may find.
|
||||
|
||||
To report a bug, please send a detailed report to: <bugs@xrpl.org>
|
||||
@@ -7,6 +7,7 @@
|
||||
expanded: false
|
||||
items:
|
||||
- page: 2025/frii-pay-xrpl-case-study-crypto-payment-solution.md
|
||||
- page: 2025/rippled-2.5.0.md
|
||||
- page: 2025/fixes-enabled-dnfts-expected.md
|
||||
- page: 2025/clio-2.4.1.md
|
||||
- page: 2025/integrating-dia-oracles-on-xrpl.md
|
||||
|
||||
@@ -1184,6 +1184,17 @@ const events = [
|
||||
image: require("../static/img/events/commons-cannes.png"),
|
||||
end_date: "June 30, 2025",
|
||||
},
|
||||
{
|
||||
name: "Aquarium Demo Day #6",
|
||||
description:
|
||||
"The Aquarium Residency is a 12-week program for entrepreneurs & developers building on the XRP Ledger blockchain. Join us at our Paris HQ to connect with our 11 residents, discover their projects focused on AI & Blockchain, and engage with the XRPL community.",
|
||||
type: "meetup",
|
||||
link: "https://xrpl.at/AquariumDemoDay6",
|
||||
location: "Paris, France",
|
||||
date: "July 8, 2025",
|
||||
image: require("../static/img/events/demo-day-paris.png"),
|
||||
end_date: "July 8, 2025",
|
||||
},
|
||||
|
||||
];
|
||||
|
||||
|
||||
@@ -828,11 +828,9 @@ const CommunityPage: React.FC = () => {
|
||||
{translate("RippleX Bug Bounty Program")}
|
||||
</h6>
|
||||
<h6 className="card-subtitle">
|
||||
{translate(
|
||||
"Contribute to the XRP Ledger's"
|
||||
)}
|
||||
{translate("community.index.security.subtitle-1", "Contribute to the XRP Ledger's")}
|
||||
<br/>
|
||||
Security
|
||||
{translate("community.index.security.subtitle-2", "Security")}
|
||||
</h6>
|
||||
<p className="card-description">
|
||||
{translate(
|
||||
@@ -840,13 +838,16 @@ const CommunityPage: React.FC = () => {
|
||||
)}
|
||||
<p className="card-description">
|
||||
{
|
||||
translate("Use this program to report bugs in RippleX/rippled. Send a detailed report of a qualifying bug to ")
|
||||
translate("community.index.security.description-1", "Use this program to report bugs in RippleX/rippled. Send a detailed report of a qualifying bug to ")
|
||||
}
|
||||
<a href="mailto:bugs@ripple.com">bugs@ripple.com</a>
|
||||
{
|
||||
translate(" and use the ")
|
||||
translate("community.index.security.description-2", " and use the ")
|
||||
}
|
||||
<a href="https://ripple.com/files/bug-bounty.asc">{translate("community.index.security.description-3", "Public Key.")}</a>
|
||||
{
|
||||
translate("community.index.security.description-4", " ")
|
||||
}
|
||||
<a href="https://ripple.com/files/bug-bounty.asc">Public Key.</a>
|
||||
</p>
|
||||
</p>
|
||||
<div className="card-links">
|
||||
|
||||
22
docs/_snippets/accepted-credentials-objects.md
Normal file
22
docs/_snippets/accepted-credentials-objects.md
Normal file
@@ -0,0 +1,22 @@
|
||||
Each member of the `AcceptedCredentials` array is an inner object named `Credential` with the following nested fields:
|
||||
|
||||
| Field | JSON Type | [Internal Type][] | Required? | Description |
|
||||
|:-----------------|:---------------------|:------------------|:----------|--------------|
|
||||
| `Issuer` | String - [Address][] | AccountID | Yes | The issuer of the credential. |
|
||||
| `CredentialType` | String | Blob | Yes | The type of credential, as hexadecimal. This is an arbitrary value from 1 to 64 bytes that the issuer sets when they issue a credential. |
|
||||
|
||||
{% admonition type="info" name="Note" %}
|
||||
In the usual JSON format, inner objects are wrapped in an object with one field, whose name defines the inner object type. In this case, the wrapping field is named `Credential`. For example:
|
||||
|
||||
```json
|
||||
"AcceptedCredentials": [
|
||||
{
|
||||
"Credential": {
|
||||
"Issuer": "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX",
|
||||
"CredentialType": "6D795F63726564656E7469616C"
|
||||
}
|
||||
},
|
||||
// ... additional Credential inner objects ...
|
||||
]
|
||||
```
|
||||
{% /admonition %}
|
||||
@@ -49,6 +49,9 @@
|
||||
[Amendmentsエントリ]: /docs/concepts/networks-and-servers/amendments.md
|
||||
[Amendmentsオブジェクト]: /docs/concepts/networks-and-servers/amendments.md
|
||||
[Batch amendment]: /resources/known-amendments.md#batch
|
||||
[Batch]: /docs/references/protocol/transactions/types/batch.md
|
||||
[Batch transaction]: /docs/references/protocol/transactions/types/batch.md
|
||||
[Batch transactions]: /docs/references/protocol/transactions/types/batch.md
|
||||
[Check entry]: /docs/references/protocol/ledger-data/ledger-entry-types/check.md
|
||||
[Check object]: /docs/references/protocol/ledger-data/ledger-entry-types/check.md
|
||||
[Checkエントリ]: /docs/references/protocol/ledger-data/ledger-entry-types/check.md
|
||||
@@ -254,6 +257,11 @@
|
||||
[PermissionedDomains amendment]: /resources/known-amendments.md#permissioneddomains
|
||||
[permissioned domain]: /docs/concepts/tokens/decentralized-exchange/permissioned-domains.md
|
||||
[PriceOracle amendment]: /resources/known-amendments.md#priceoracle
|
||||
[MPToken entry]: /docs/references/protocol/ledger-data/ledger-entry-types/mptoken.md
|
||||
[MPTokenAuthorize transaction]: /docs/references/protocol/transactions/types/mptokenauthorize.md
|
||||
[MPTokenIssuanceCreate transaction]: /docs/references/protocol/transactions/types/mptokenissuancecreate.md
|
||||
[MPTokenIssuanceDestroy transaction]: /docs/references/protocol/transactions/types/mptokenissuancedestroy.md
|
||||
[MPTokenIssuanceSet transaction]: /docs/references/protocol/transactions/types/mptokenissuanceset.md
|
||||
[MPTokensV1_1 amendment]: /resources/known-amendments.md#priceoracle
|
||||
[RFC-1751]: https://tools.ietf.org/html/rfc1751
|
||||
[Reporting Mode]: /docs/concepts/networks-and-servers/rippled-server-modes.md#reporting-mode
|
||||
|
||||
@@ -80,7 +80,7 @@ All of the configuration flags can be helpful for specific use cases. The follow
|
||||
|
||||
## Using the Account Configurator
|
||||
|
||||
You can download a copy of the [Account Configurator](../../../_code-samples/account-configurator/account-configurator.zip) from the `_code_samples` directory.
|
||||
You can download a copy of the [Account Configurator](../../../_code-samples/account-configurator/js/account-configurator.zip) from the `_code_samples` directory.
|
||||
|
||||
Expand the archive and open `account_configurator.html` in a browser window.
|
||||
|
||||
|
||||
108
docs/concepts/accounts/permission-delegation.md
Normal file
108
docs/concepts/accounts/permission-delegation.md
Normal file
@@ -0,0 +1,108 @@
|
||||
---
|
||||
seo:
|
||||
description: XRPL accounts can delegate both transaction permissions and granular permissions to other accounts.
|
||||
labels:
|
||||
- Accounts
|
||||
- Permissions
|
||||
status: not_enabled
|
||||
---
|
||||
# Permission Delegation
|
||||
XRPL accounts can delegate both transaction permissions and granular permissions to other accounts, enhancing flexibility and enabling use cases such as implementing role-based access control. This delegation is managed using the [`DelegateSet`](../../references/protocol/transactions/types/delegateset.md) transaction.
|
||||
|
||||
_(Requires the [PermissionDelegation amendment][] {% not-enabled /%})_
|
||||
|
||||
## Assigning Permissions
|
||||
|
||||
You can assign permissions to another account by submitting a `DelegateSet` transaction.
|
||||
|
||||
```json
|
||||
tx_json = {
|
||||
"TransactionType": "DelegateSet",
|
||||
"Account": "rDelegatingAccount",
|
||||
"Authorize": "rDelegatedAccount",
|
||||
"Permissions": [
|
||||
{
|
||||
"Permission": {
|
||||
"PermissionValue": "Payment"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| `Account` | The address of the account that is delegating the permission(s). |
|
||||
| `Authorize` | The address of the account that is being granted the permission(s). |
|
||||
| `Permissions` | An array of permission objects, specifying the permissions to delegate. Each permission is defined within a `Permission` object, using the `PermissionValue` field. See [XLS-74d, Account Permissions] for a complete list of valid `PermissionValues`. |
|
||||
|
||||
## Revoking Permissions
|
||||
|
||||
Permissions can be revoked using the `DelegateSet` transaction. There are two ways to revoke permissions:
|
||||
|
||||
### Revoke All Permissions
|
||||
|
||||
To revoke all permissions previously granted to a delegated account, send a `DelegateSet` transaction with an empty `Permissions` array:
|
||||
|
||||
```json
|
||||
tx_json = {
|
||||
"TransactionType": "DelegateSet",
|
||||
"Account": "rDelegatingAccount",
|
||||
"Authorize": "rDelegatedAccount",
|
||||
"Permissions": []
|
||||
}
|
||||
```
|
||||
|
||||
### Revoke Specific Permissions
|
||||
|
||||
To revoke specific permissions, send a `DelegateSet` transaction that includes _only_ the permissions that should remain active. Any permissions previously granted to the `Authorize` account that aren't included in the `Permissions` array are revoked.
|
||||
|
||||
## Sending Transactions with Delegated Permissions
|
||||
|
||||
When an account has been granted permissions, it can send transactions on behalf of the delegating account using the `Delegate` field.
|
||||
|
||||
For example, if `rDelegatingAccount` has delegated the `TrustSet` permission to `rDelegatedAccount`, then `rDelegatedAccount` can submit a `TrustSet` transaction on behalf of `rDelegatingAccount` as follows:
|
||||
|
||||
```json
|
||||
transaction_json = {
|
||||
"TransactionType": "TrustSet",
|
||||
"Account": "rDelegatingAccount",
|
||||
"Delegate": "rDelegatedAccount",
|
||||
"LimitAmount": {
|
||||
"currency": "USD",
|
||||
"issuer": "rIssuerAccount",
|
||||
"value": "1000"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| `Account` | The address of the account that granted permission for the transaction (the _delegating_ account). |
|
||||
| `Delegate` | The address of the account submitting and signing the transaction. This must be the account that was granted permission (the _delegated_ account). |
|
||||
|
||||
The account that sends this transaction is _rDelegatedAccount_, although the Account field is the _rDelegatingAccount_. The secret for this transaction is the _rDelegatedAccount_ secret, which means _rDelegatedAccount_ signs the transaction.
|
||||
|
||||
## Error Cases
|
||||
|
||||
- If the `PermissionDelegation` feature is not enabled, return `temDISABLED`.
|
||||
|
||||
- If the _rDelegatedAccount_ is not authorized by the _rDelegatingAccount_ for the transaction type or satisfying the granular permissions given by _rDelegatingAccount_, the transaction returns `tecNO_DELEGATE_PERMISSION`.
|
||||
|
||||
- If the _rDelegatedAccount_ does not have enough balance to pay the transaction fee, the transaction returns `terINSUF_FEE_B` . (_rDelegatedAccount_ pays the fee, which is the sender in `Delegate` field, not the `Account` field).
|
||||
|
||||
- If the transaction creates a ledger object, but _rDelegatingAccount_ does not have enough balance to cover the reserve, the transaction returns `tecINSUFFICIENT_RESERVE`.
|
||||
|
||||
- If the key used to sign this account does not match with _rDelegatedAccount_, the transaction returns `rpcBAD_SECRET`.
|
||||
|
||||
- If the `TradingFee` is invalid (non-XRP currency or negative value), return `temBAD_FEE`.
|
||||
|
||||
Any other errors are the same as when the _rDelegatingAccount_ sends transaction for itself.
|
||||
|
||||
{% admonition type="warning" name="Important" %}
|
||||
* Delegating permissions grants significant control. Ensure you trust the delegated account.
|
||||
* The account specified in the `Delegate` field is responsible for paying the transaction fee.
|
||||
* A delegated account can only perform actions that have been explicitly permitted.
|
||||
{% /admonition %}
|
||||
|
||||
{% raw-partial file="/docs/_snippets/common-links.md" /%}
|
||||
@@ -129,7 +129,7 @@ _Figure 7: An XRP Ledger Server Calculates a Ledger Validation — Each server a
|
||||
|
||||
Validators each relay their results in the form of a signed message containing the hash of the ledger version they calculated. These messages, called _validations_, allow each server to compare the ledger it computed with those of its peers.
|
||||
|
||||
[{% inline-svg file="/docs/img/consensus-declare-validation.svg" /%}](/docs/img/consensus-declare-validation.svg "Figure 8: Ledger is Validated When Supermajority of Peers Calculate the Same Result Result")
|
||||
[{% inline-svg file="/docs/img/consensus-declare-validation.svg" /%}](/docs/img/consensus-declare-validation.svg "Figure 8: Ledger is Validated When Supermajority of Trusted Validators Calculate the Same Result Result")
|
||||
|
||||
_Figure 8: Ledger is Validated When Supermajority of Peers Calculate the Same Result — Each server compares its calculated ledger with the hashes received from its chosen validators. If not in agreement, the server must recalculate or retrieve the correct ledger._
|
||||
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
---
|
||||
html: clustering.html
|
||||
parent: networks-and-servers.html
|
||||
seo:
|
||||
description: Run rippled servers in a cluster to share the load of cryptography between them.
|
||||
labels:
|
||||
@@ -8,13 +6,13 @@ labels:
|
||||
---
|
||||
# Clustering
|
||||
|
||||
If you are running multiple `rippled` servers in a single datacenter, you can configure those servers into a cluster to maximize efficiency. Running your `rippled` servers in a cluster provides the following benefits:
|
||||
Clustering is a configuration operation for `rippled` servers that improves efficiency among mutually trusted servers. Clustering should only be used for servers that are located within the same datacenter and are operated by the same organization. Clustering provides the following benefits:
|
||||
|
||||
- Clustered `rippled` servers share the work of cryptography. If one server has verified the authenticity of a message, the other servers in the cluster trust it and do not re-verify.
|
||||
- Clustered servers share the work of cryptography. If one server has verified the authenticity of a message, the other servers in the cluster trust it and do not re-verify.
|
||||
- Clustered servers share information about peers and API clients that are misbehaving or abusing the network. This makes it harder to attack all servers of the cluster at once.
|
||||
- Clustered servers always propagate transactions throughout the cluster, even if the transaction does not meet the current load-based transaction fee on some of them.
|
||||
|
||||
If you are running a validator as a [private peer](peer-protocol.md#private-peers), Ripple recommends using a cluster of `rippled` servers as proxy servers.
|
||||
If you are running a validator as a [private peer](peer-protocol.md#private-peers), it's recommended to run a cluster of servers as proxies, since a cluster is more resilient to failure than individual servers.
|
||||
|
||||
## See Also
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ labels:
|
||||
|
||||
Traditionally, an escrow is a contract between two parties to facilitate financial transactions. An impartial third party receives and holds funds, and only releases them to the intended recipient when conditions specified by the contract are met. This method ensures both parties meet their obligations.
|
||||
|
||||
The XRP Ledger takes escrow a step further, replacing the third party with an automated system built into the ledger. An escrow locks up XRP, which can't be used or destroyed until conditions are met.
|
||||
The XRP Ledger takes escrow a step further, replacing the third party with an automated system built into the ledger. An escrow locks up XRP or fungible tokens, which can't be used or destroyed until conditions are met.
|
||||
|
||||
## Types of Escrow
|
||||
|
||||
@@ -24,15 +24,15 @@ The XRP Ledger supports three types of escrow:
|
||||
|
||||
1. The sender creates an escrow using the `EscrowCreate` transaction. This transaction defines:
|
||||
|
||||
- An amount of XRP to lock up.
|
||||
- The conditions to release the XRP.
|
||||
- The recipient of the XRP.
|
||||
- An number of XRP or fungible tokens to lock up.
|
||||
- The conditions to release the XRP or fungible tokens.
|
||||
- The recipient of the XRP or fungible tokens.
|
||||
|
||||
2. When the transaction is processed, the XRP Ledger creates an `Escrow` object that holds the escrowed XRP.
|
||||
2. When the transaction is processed, the XRP Ledger creates an `Escrow` object that holds the escrowed XRP or fungible token.
|
||||
|
||||
3. The recipient sends an `EscrowFinish` transaction to deliver the XRP. If the conditions have been met, this destroys the `Escrow` object and delivers the XRP to the recipient.
|
||||
3. The recipient sends an `EscrowFinish` transaction to deliver the XRP or fungible tokens. If the conditions have been met, this destroys the `Escrow` object and delivers the XRP or fungible tokens to the recipient.
|
||||
|
||||
{% admonition type="info" name="Note" %}If the escrow has an expiration time and isn't successfully finished before then, the escrow becomes expired. An expired escrow remains in the ledger until an `EscrowCancel` transaction cancels it, destroying the `Escrow` object and returning the XRP to the sender.{% /admonition %}
|
||||
{% admonition type="info" name="Note" %}If the escrow has an expiration time and isn't successfully finished before then, the escrow becomes expired. An expired escrow remains in the ledger until an `EscrowCancel` transaction cancels it, destroying the `Escrow` object and returning the escrowed XRP or fungible tokens to the sender.{% /admonition %}
|
||||
|
||||
## Escrow States
|
||||
|
||||
@@ -51,7 +51,6 @@ The diagram shows three different cases for three possible combinations of the e
|
||||
|
||||
## Limitations
|
||||
|
||||
- Escrow only works with XRP, not tokens.
|
||||
- The costs can make it infeasible for small amounts.
|
||||
- Escrow requires two transactions: one to create the escrow, and one to finish or cancel it. Crypto-Conditions incur a higher [transaction cost](../transactions/transaction-cost.md) than usual.
|
||||
- While the escrow is incomplete, the sender is responsible for the [reserve requirement](../accounts/reserves.md) of the `Escrow` object.
|
||||
@@ -66,7 +65,7 @@ When using crypto-conditions, the EscrowFinish transaction must pay a [higher tr
|
||||
|
||||
The additional transaction cost required is proportional to the size of the fulfillment. If the transaction is [multi-signed](../accounts/multi-signing.md), the cost of multi-signing is added to the cost of the fulfillment.
|
||||
|
||||
Currently, an EscrowFinish with a fulfillment requires a minimum transaction cost of **330 [drops of XRP](../../references/protocol/data-types/basic-data-types.md#specifying-currency-amounts) plus 10 drops per 16 bytes in the size of the fulfillment**.
|
||||
Currently, an EscrowFinish with a fulfillment requires a minimum transaction cost of **330 [drops of XRP](../../references/protocol/data-types/basic-data-types.md#specifying-currency-amounts)** plus 10 drops per 16 bytes in the size of the fulfillment**.
|
||||
|
||||
{% admonition type="info" name="Note" %}The above formula is based on the assumption that the reference cost of a transaction is 10 drops of XRP.{% /admonition %}
|
||||
|
||||
@@ -90,7 +89,4 @@ For more information about Escrow in the XRP Ledger, see the following:
|
||||
- [Ledger Reference](../../references/protocol/ledger-data/index.md)
|
||||
- [Escrow object](../../references/protocol/ledger-data/ledger-entry-types/escrow.md)
|
||||
|
||||
|
||||
For more information on Ripple's 55-billion XRP lock-up, see [Ripple's Insights Blog](https://ripple.com/insights/ripple-to-place-55-billion-xrp-in-escrow-to-ensure-certainty-into-total-xrp-supply/).
|
||||
|
||||
{% raw-partial file="/docs/_snippets/common-links.md" /%}
|
||||
|
||||
@@ -1,24 +1,22 @@
|
||||
---
|
||||
html: payment-channels.html
|
||||
parent: payment-types.html
|
||||
seo:
|
||||
description: Payment Channels enable fast, asynchronous XRP payments that can be divided into very small increments and settled later.
|
||||
description: Payment Channels enable fast, asynchronous payments that can be divided into very small increments and settled later.
|
||||
labels:
|
||||
- Payment Channels
|
||||
- Smart Contracts
|
||||
---
|
||||
# Payment Channels
|
||||
|
||||
Payment Channels are an advanced feature for sending "asynchronous" XRP payments that can be divided into very small increments and settled later.
|
||||
Payment Channels are an advanced feature for sending "asynchronous" payments that can be divided into very small increments and settled later.
|
||||
|
||||
The XRP for a payment channel is set aside temporarily. The sender creates _Claims_ against the channel, which the recipient verifies without sending an XRP Ledger transaction or waiting for a new ledger version to be approved by [consensus](../consensus-protocol/index.md). (This is an _asynchronous_ process because it happens separate from the usual pattern of getting transactions approved by consensus.) At any time, the recipient can _redeem_ a Claim to receive an amount of XRP authorized by that Claim. Settling a Claim like this uses a standard XRP Ledger transaction, as part of the usual consensus process. This single transaction can encompass any number of transactions guaranteed by smaller Claims.
|
||||
The XRP or fungible tokens for a payment channel are set aside temporarily. The sender creates _Claims_ against the channel, which the recipient verifies without sending an XRP Ledger transaction or waiting for a new ledger version to be approved by [consensus](../consensus-protocol/index.md). (This is an _asynchronous_ process because it happens separate from the usual pattern of getting transactions approved by consensus.) At any time, the recipient can _redeem_ a Claim to receive an amount of XRP or fungible tokens authorized by that Claim. Settling a Claim like this uses a standard XRP Ledger transaction, as part of the usual consensus process. This single transaction can encompass any number of transactions guaranteed by smaller Claims.
|
||||
|
||||
Because Claims can be verified individually but settled in bulk later, payment channels make it possible to conduct transactions at a rate only limited by the participants' ability to create and verify the digital signatures of those Claims. This limit is primarily based on the speed of the participants' hardware and the complexity of the signature algorithms. For maximum speed, use Ed25519 signatures, which are faster than the XRP Ledger's default secp256k1 ECDSA signatures. Research has [demonstrated the ability to create over Ed25519 100,000 signatures per second and to verify over 70,000 per second](https://ed25519.cr.yp.to/ed25519-20110926.pdf) on commodity hardware in 2011.
|
||||
|
||||
|
||||
## Why Use Payment Channels
|
||||
|
||||
The process of using a payment channel always involves two parties, a payer and a payee. The payer is an individual person or institution using the XRP Ledger who is a customer of the payee. The payee is a person or business who receives XRP as payment for goods or services.
|
||||
The process of using a payment channel always involves two parties, a payer and a payee. The payer is an individual person or institution using the XRP Ledger who is a customer of the payee. The payee is a person or business who receives XRP or fungible tokens as payment for goods or services.
|
||||
|
||||
Payment Channels do not intrinsically specify anything about what you can buy and sell with them. However, the types of goods and services that are a good fit for payment channels are:
|
||||
|
||||
@@ -26,18 +24,16 @@ Payment Channels do not intrinsically specify anything about what you can buy an
|
||||
- Inexpensive things, where the cost of processing a transaction is a non-trivial part of the price
|
||||
- Things normally bought in bulk, where the exact quantity desired is not known in advance
|
||||
|
||||
|
||||
## Payment Channel Lifecycle
|
||||
|
||||
The following diagram summarizes the lifecycle of a payment channel:
|
||||
|
||||
[{% inline-svg file="/docs/img/paychan-flow.svg" /%}](/docs/img/paychan-flow.svg "Payment Channel Flow Diagram")
|
||||
|
||||
|
||||
## See Also
|
||||
|
||||
- **Related Concepts:**
|
||||
- [Escrow](escrow.md), a similar feature for higher-value, lower-speed conditional XRP payments.
|
||||
- [Escrow](escrow.md), a similar feature for higher-value, lower-speed conditional payments.
|
||||
- **Tutorials and Use Cases:**
|
||||
- [Use Payment Channels](../../tutorials/how-tos/use-specialized-payment-types/use-payment-channels/index.md), a tutorial stepping through the process of using a payment channel.
|
||||
- [Open a Payment Channel to Enable an Inter-Exchange Network](../../tutorials/how-tos/use-specialized-payment-types/use-payment-channels/open-a-payment-channel-to-enable-an-inter-exchange-network.md)
|
||||
|
||||
@@ -0,0 +1,160 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN'
|
||||
'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
|
||||
<svg fill-opacity="1" xmlns:xlink="http://www.w3.org/1999/xlink" color-rendering="auto" color-interpolation="auto" text-rendering="auto" stroke="black" stroke-linecap="square" width="630" stroke-miterlimit="10" shape-rendering="auto" stroke-opacity="1" fill="black" stroke-dasharray="none" font-weight="normal" stroke-width="1" viewBox="0 0 630 460" height="460" xmlns="http://www.w3.org/2000/svg" font-family="'Dialog'" font-style="normal" stroke-linejoin="miter" font-size="12px" stroke-dashoffset="0" image-rendering="auto"
|
||||
><!--Generated by the Batik Graphics2D SVG Generator--><defs id="genericDefs"
|
||||
/><g
|
||||
><defs id="defs1"
|
||||
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath1"
|
||||
><path d="M0 0 L2147483647 0 L2147483647 2147483647 L0 2147483647 L0 0 Z"
|
||||
/></clipPath
|
||||
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath2"
|
||||
><path d="M0 0 L0 140 L160 140 L160 0 Z"
|
||||
/></clipPath
|
||||
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath3"
|
||||
><path d="M0 0 L0 140 L200 140 L200 0 Z"
|
||||
/></clipPath
|
||||
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath4"
|
||||
><path d="M0 0 L0 140 L190 140 L190 0 Z"
|
||||
/></clipPath
|
||||
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath5"
|
||||
><path d="M0 0 L0 80 L140 80 L140 0 Z"
|
||||
/></clipPath
|
||||
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath6"
|
||||
><path d="M0 0 L0 40 L110 40 L110 0 Z"
|
||||
/></clipPath
|
||||
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath7"
|
||||
><path d="M0 0 L0 30 L120 30 L120 0 Z"
|
||||
/></clipPath
|
||||
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath8"
|
||||
><path d="M0 0 L0 180 L270 180 L270 0 Z"
|
||||
/></clipPath
|
||||
></defs
|
||||
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(450,300)" stroke-opacity="0" stroke="rgb(255,255,255)"
|
||||
><circle r="7" clip-path="url(#clipPath2)" cx="80.5" cy="7.5" stroke="none"
|
||||
/></g
|
||||
><g transform="translate(450,300)"
|
||||
><circle fill="none" r="7" clip-path="url(#clipPath2)" cx="80.5" cy="7.5"
|
||||
/><path fill="none" d="M59.5 21.5 L101.5 21.5" clip-path="url(#clipPath2)"
|
||||
/><path fill="none" d="M80.5 14.5 L80.5 42.5" clip-path="url(#clipPath2)"
|
||||
/><path fill="none" d="M80.5 42.5 L66.5 70.5" clip-path="url(#clipPath2)"
|
||||
/><path fill="none" d="M80.5 42.5 L94.5 70.5" clip-path="url(#clipPath2)"
|
||||
/><text x="60" font-size="14px" y="93.1094" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>Tracy</text
|
||||
><text x="45" font-size="14px" y="109.2188" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>(Trader in</text
|
||||
><text x="13" font-size="14px" y="125.3281" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>permissioned DEX)</text
|
||||
></g
|
||||
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(20,20)" stroke-opacity="0" stroke="rgb(255,255,255)"
|
||||
><rect x="0.5" width="198.5" height="138.5" y="0.5" clip-path="url(#clipPath3)" stroke="none"
|
||||
/></g
|
||||
><g transform="translate(20,20)"
|
||||
><rect fill="none" x="0.5" width="198.5" height="138.5" y="0.5" clip-path="url(#clipPath3)"
|
||||
/><text x="60" font-size="14px" y="18.1094" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>Order Book</text
|
||||
><text x="11" font-size="14px" y="34.2188" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>USD.Acme:FOO.WayGate</text
|
||||
><path fill="none" d="M1 40.2188 L199 40.2188" clip-path="url(#clipPath3)"
|
||||
/><text x="5" font-size="14px" y="55.3281" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" font-weight="bold" xml:space="preserve"
|
||||
>DomainID: Domain A</text
|
||||
><path fill="none" d="M1 61.3281 L199 61.3281" clip-path="url(#clipPath3)"
|
||||
/><text x="5" font-size="14px" y="76.4375" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>10 FOO : 10 USD – Marko</text
|
||||
><path fill="none" d="M1 82.4375 L199 82.4375" clip-path="url(#clipPath3)"
|
||||
/><text x="5" font-size="14px" y="97.5469" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>9 FOO : 15 USD – Tracy</text
|
||||
><path fill="none" d="M1 103.5469 L199 103.5469" clip-path="url(#clipPath3)"
|
||||
/><text x="5" font-size="14px" y="118.6562" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>...</text
|
||||
></g
|
||||
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(290,60)" stroke-opacity="0" stroke="rgb(255,255,255)"
|
||||
><rect x="0.5" width="188.5" height="138.5" y="0.5" clip-path="url(#clipPath4)" stroke="none"
|
||||
/></g
|
||||
><g transform="translate(290,60)"
|
||||
><rect fill="none" x="0.5" width="188.5" height="138.5" y="0.5" clip-path="url(#clipPath4)"
|
||||
/><text x="60" font-size="14px" y="18.1094" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>Domain A</text
|
||||
><path fill="none" d="M1 24.1094 L189 24.1094" clip-path="url(#clipPath4)"
|
||||
/><text x="5" font-size="14px" y="39.2188" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>Owner: Owen</text
|
||||
><text x="5" font-size="14px" y="55.3281" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>Accepted Credentials:</text
|
||||
><text x="5" font-size="14px" y="71.4375" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>- "Accredited" issued </text
|
||||
><text x="5" font-size="14px" y="87.5469" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
> by Isabel</text
|
||||
><text x="5" font-size="14px" y="103.6562" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" font-weight="bold" xml:space="preserve"
|
||||
>- "Accredited" issued</text
|
||||
><text x="5" font-size="14px" y="119.7656" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" font-weight="bold" xml:space="preserve"
|
||||
> by Owen</text
|
||||
></g
|
||||
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(120,300)" stroke-opacity="0" stroke="rgb(255,255,255)"
|
||||
><circle r="7" clip-path="url(#clipPath2)" cx="80.5" cy="7.5" stroke="none"
|
||||
/></g
|
||||
><g transform="translate(120,300)"
|
||||
><circle fill="none" r="7" clip-path="url(#clipPath2)" cx="80.5" cy="7.5"
|
||||
/><path fill="none" d="M59.5 21.5 L101.5 21.5" clip-path="url(#clipPath2)"
|
||||
/><path fill="none" d="M80.5 14.5 L80.5 42.5" clip-path="url(#clipPath2)"
|
||||
/><path fill="none" d="M80.5 42.5 L66.5 70.5" clip-path="url(#clipPath2)"
|
||||
/><path fill="none" d="M80.5 42.5 L94.5 70.5" clip-path="url(#clipPath2)"
|
||||
/><text x="60" font-size="14px" y="93.1094" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>Owen</text
|
||||
><text x="19" font-size="14px" y="109.2188" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>(credential issuer </text
|
||||
><text x="11" font-size="14px" y="125.3281" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>and domain owner)</text
|
||||
></g
|
||||
><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(300,290)" stroke-opacity="0" stroke="rgb(255,255,255)"
|
||||
><path d="M0.5 0.5 L80.7725 0.5 L80.7725 21.6094 L139 21.6094 L139 79 L0.5 79 Z" stroke="none" clip-path="url(#clipPath5)"
|
||||
/></g
|
||||
><g transform="translate(300,290)"
|
||||
><path fill="none" d="M0.5 0.5 L80.7725 0.5 L80.7725 21.6094 L139 21.6094 L139 79 L0.5 79 Z" clip-path="url(#clipPath5)"
|
||||
/><path fill="none" d="M0.5 21.6094 L80.7725 21.6094" clip-path="url(#clipPath5)"
|
||||
/><text x="5" font-size="14px" y="16.1094" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>Credential</text
|
||||
><text x="5" font-size="14px" y="39.5" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>Type: "Accredited"</text
|
||||
><text x="5" font-size="14px" y="55.6094" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>Issuer: Owen</text
|
||||
><text x="5" font-size="14px" y="71.7188" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" xml:space="preserve"
|
||||
>Subject: Tracy</text
|
||||
></g
|
||||
><g stroke-dasharray="8,5" stroke-miterlimit="5" transform="translate(430,310)" stroke-linecap="butt"
|
||||
><path fill="none" d="M90.5 20.5 L11.5 20.5" clip-path="url(#clipPath6)"
|
||||
/><path fill="white" d="M22.2583 14 L11 20.5 L22.2583 27 Z" clip-path="url(#clipPath6)" stroke="none"
|
||||
/><path fill="none" stroke-miterlimit="10" stroke-dasharray="none" d="M22.2583 14 L11 20.5 L22.2583 27 Z" clip-path="url(#clipPath6)" stroke-linecap="square"
|
||||
/></g
|
||||
><g font-family="sans-serif" font-size="14px" transform="translate(430,310)"
|
||||
><text x="32.2207" xml:space="preserve" y="16" clip-path="url(#clipPath6)" stroke="none"
|
||||
>holds</text
|
||||
></g
|
||||
><g stroke-dasharray="8,5" stroke-miterlimit="5" transform="translate(190,60)" stroke-linecap="butt"
|
||||
><path fill="none" d="M99.5 10.5 L10.5 10.5" clip-path="url(#clipPath7)"
|
||||
/><path fill="white" d="M88.7417 4 L100 10.5 L88.7417 17 Z" clip-path="url(#clipPath7)" stroke="none"
|
||||
/><path fill="none" stroke-miterlimit="10" stroke-dasharray="none" d="M88.7417 4 L100 10.5 L88.7417 17 Z" clip-path="url(#clipPath7)" stroke-linecap="square"
|
||||
/></g
|
||||
><g stroke-dasharray="8,5" stroke-miterlimit="5" transform="translate(170,150)" stroke-linecap="butt"
|
||||
><path fill="none" d="M10.5 11.5 L10.5 40.5" clip-path="url(#clipPath8)"
|
||||
/><path fill="none" d="M10.5 40.5 L230.5 40.5" clip-path="url(#clipPath8)"
|
||||
/><path fill="none" d="M230.5 40.5 L230.5 150.5" clip-path="url(#clipPath8)"
|
||||
/><path fill="none" d="M230.5 150.5 L250.5 160.5" clip-path="url(#clipPath8)"
|
||||
/><path fill="white" d="M4 22.2583 L10.5 11 L17 22.2583 Z" clip-path="url(#clipPath8)" stroke="none"
|
||||
/><path fill="none" stroke-miterlimit="10" stroke-dasharray="none" d="M4 22.2583 L10.5 11 L17 22.2583 Z" clip-path="url(#clipPath8)" stroke-linecap="square"
|
||||
/></g
|
||||
><g font-family="sans-serif" font-size="14px" transform="translate(170,150)"
|
||||
><text x="14" xml:space="preserve" y="55.2188" clip-path="url(#clipPath8)" stroke="none"
|
||||
>grants access</text
|
||||
></g
|
||||
><g stroke-dasharray="8,5" stroke-miterlimit="5" transform="translate(210,310)" stroke-linecap="butt"
|
||||
><path fill="none" d="M89.5 20.5 L10.5 20.5" clip-path="url(#clipPath6)"
|
||||
/><path fill="white" d="M78.7417 14 L90 20.5 L78.7417 27 Z" clip-path="url(#clipPath6)" stroke="none"
|
||||
/><path fill="none" stroke-miterlimit="10" stroke-dasharray="none" d="M78.7417 14 L90 20.5 L78.7417 27 Z" clip-path="url(#clipPath6)" stroke-linecap="square"
|
||||
/></g
|
||||
><g font-family="sans-serif" font-size="14px" transform="translate(210,310)"
|
||||
><text x="29.3696" xml:space="preserve" y="16" clip-path="url(#clipPath6)" stroke="none"
|
||||
>issues</text
|
||||
></g
|
||||
></g
|
||||
></svg
|
||||
>
|
||||
|
After Width: | Height: | Size: 11 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user