Merge pull request #2925 from tequdev/ja-mpt

[JA] MPToken
This commit is contained in:
Rome Reginelli
2025-04-08 12:26:56 -07:00
committed by GitHub
26 changed files with 784 additions and 36 deletions

View File

@@ -0,0 +1,3 @@
{% admonition type="info" name="注意" %}
Multi-Purpose Token機能は、XRP LedgerプロトコルへのXLS-33d拡張機能の一部として提案されています。 現時点では、テストネットワーク上でこれらの機能を使用することができます。 安定版リリースでAmendment有効化されるまででは、これらのページに記載されている詳細内容は変更される可能性があります。
{% /admonition %}

View File

@@ -0,0 +1,54 @@
---
blurb: Multi-Purpose Tokenは、トラストラインよりもコンパクトで柔軟なトークンタイプです。
labels:
- トークン
- MPT
- Multi-Purpose Token
status: not_enabled
---
# Multi-Purpose Token
{% partial file="/@l10n/ja/docs/_snippets/mpts-disclaimer.md" /%}
Multi-Purpose Token(MPT)は、トラストラインよりもコンパクトで柔軟なトークンタイプです。
MPTを使用することで、数行のコードですぐに使えるトークン化機能を利用できます。1つのトークンプログラムから多くのトークンを作成することができます。以下のような特徴があります。
- MPTはメタデータをXRPLブロックチェーンに直接保存します。
- 1024バイトのURIフィールドがメタデータへのポインタを提供し、オンチェーンソースに加えてオフチェーンソースをメタデータに使用することができます。これにより、アプリケーションはチェーンから必要な情報に直接アクセスできるようになり、追加情報を追加する機能を失うことなく、トークンの相互運用性を高めることができます。
- MPT は、発行可能なトークン数の上限を設定することで、トークンの供給量を固定することができます。
- MPT を転送不可トークンと定義することもできます。この場合、トークンは発行者にのみ転送することができ、トークン保有者の間では転送できません。航空会社のクレジットを発行したり、ロイヤリティ報酬を発行したりする場合に便利です。
- 発行者は、トークン保有者間でトークンが取引されるたびにオンチェーン収益を得るために送金手数料を設定することができます。
- MPTには高度なコンプライアンス機能もあります。
- トークン保有者が保有するトークンをロックし、コンプライアンス要件をサポートする機能。
- すべてのトークン保有者のすべてのMPT残高に対してグローバルロックを設定する機能。
- 発行者は、トークン保有者のウォレットからMPTをクローバックできるように設定することができ、MPTを失効させたり、ウォレットキーを紛失した場合に再割り当てしたりすることができます。
- オプトイン機能として、発行者が許可したウォレットにのみ発行されたトークンを保持させることができます。
## MPTとトラストラインの比較
トラストラインと異なり、MPTは双方向の債務関係を表すものではありません。代わりに、MPTは一方向のトラストラインのように機能し、1つの残高のみを持ちます。これにより、オンラインゲームでの評価ポイントの追跡など、非金融的なユースケースを含む一般的なトークン化要件をサポートするためのオーバーヘッドが削減されます。
MPTはトラストラインよりも単純な概念モデルを提供します。
MPTはトラストラインよりも必要とするスペースは大幅に少なくなっています。トークン保有者が保有する各MPTに約52バイトが必要なのに対し、新しいトラストラインには少なくとも234バイトが必要です。
これにより、ノード運営者の長期的なインフラストラクチャとストレージの負担が軽減され、ネットワークの回復力が向上します。
また、MPTは大量のトランザクションを処理する際のードのパフォーマンスも向上させます。
MPTは一方向です。トラストラインが「残高相殺」を使用するのに対し、MPTは単一の残高のみを持ちます。
アカウントは最大32の固有のMPT発行が可能です。発行者がこれ以上のMPTをサポートしたい場合は、追加のアカウントを作成することで対応できます。
トークン保有者はレジャー外での信頼決定を最初に行わずにMPTを取得することはないため、MPTには信用の限度(trust limit)がありません。例えば、MPTの一般的なユースケースである法定通貨担保型ステーブルコインでは、トークン保有者は保有して安心できる量以上のステーブルコインを購入することはありません。
既存の機能の一部とは異なり、MPTはリップリング(Rippling)の対象ではなく、その機能に関連する設定も必要ありません。
## MPTとIOUの比較
技術的なレベルでは、MPTはレジャー上で代替可能トークンを表現する根本的に異なる方法を提供します。IOUがトラストラインで表現され、双方向の債務関係を持つのに対し、MPTはMPTokenオブジェクトで捕捉されるよりシンプルな一方向の関係を使用します。これにより、レジャー上のスペースの大幅な節約が実現されます。トラストラインではなくトークンオブジェクトとして代替可能トークンを表現することで、トークンレベルのメタデータ、固定供給量、固定小数点残高など、実世界の金融資産のための機能をオンチェーンで実現しやすくなります。
実際の利用レベルでは、MPTはトラストラインやリップリングと比較してより分かりやすい概念モデルを提供します。開発者はXLS-20 NFTの概念モデルと類似点を持つ`MPToken`および`MPTokenIssuance`オブジェクトを中心にWeb3アプリケーションを構築しやすくなります。また、一般ユーザにとっても、利用可能なトークン、発行したトークン、ウォレット内の保有トークンを理解しやすくなります。MPTの発行者と保有者の両方にとって、IOUトラストラインによる同等の表現と比較して、通常XRPの準備金が少なくて済みます。
MPTはIOUを補完することを意図しています。MPTまたはIOUのいずれかが適しているユースケースもありますが、長期的には両方が必要となる可能性が高いでしょう。貸借のための与信枠など、長期的にIOUでより適切に表現できる使用例もあるでしょう。MPT機能では、まず一般的なユースケースを実現し、その後追加の機能サポートを提供する形で段階的に進化すべきです。MPTの開発期間中、一部のケースではIOUでの表現が適している場合もありますが、後にMPTでより適切にサポートされる可能性があります。

View File

@@ -25,6 +25,7 @@ label:
| `binary` | ブール値 | _省略可_ `true`の場合、リクエストしたレジャーオブジェクトの内容がXRP Ledgerの[バイナリ形式](../../../protocol/binary-format.md)の16進数の文字列として返されます。それ以外の場合はデータがJSONフォーマットで返されます。デフォルトは`false`です。{% badge href="https://github.com/XRPLF/rippled/releases/tag/1.2.0" %}更新: rippled 1.2.0{% /badge %} |
| `ledger_hash` | 文字列 | _省略可_ 使用するレジャーバージョンの20バイトの16進数の文字列。[レジャーの指定][]をご覧ください。 |
| `ledger_index` | 文字列 または 符号なし整数 | _省略可_ 使用するレジャーの[レジャーインデックス][]、またはレジャーを自動的に選択するためのショートカット文字列("validated"や"closed"、"current"など)。([レジャーの指定][]をご覧ください。 |
| `include_deleted` | 真偽値 | _(省略可, Clioサーバのみ)_ クエリされたオブジェクトが削除されている場合、その完全なデータを削除前の状態で返します。`false`または提供されていない場合、クエリされたオブジェクトが削除されている場合は`objectNotFound`を返します。 |
`generator``ledger`パラメータは非推奨であり、予告なく削除される可能性があります。
@@ -39,6 +40,7 @@ label:
- [Bridgeオブジェクトを取得する](#bridgeオブジェクトを取得する)
- [Directorynodeオブジェクトを取得する](#directorynodeオブジェクトを取得する)
- [Offerオブジェクトを取得する](#offerオブジェクトを取得する)
- [Oracleオブジェクトを取得する](#oracleオブジェクトを取得する)
- [RippleStateオブジェクトを取得する](#ripplestateオブジェクトを取得する)
- [Checkオブジェクトを取得する](#checkオブジェクトを取得する)
- [Escrowオブジェクトを取得する](#escrowオブジェクトを取得する)
@@ -46,6 +48,8 @@ label:
- [DepositPreauthオブジェクトを取得する](#depositpreauthオブジェクトを取得する)
- [Ticketオブジェクトを取得する](#ticketオブジェクトを取得する)
- [Nft Pageを取得する](#nft-pageを取得する)
- [MPT Issuanceオブジェクトを取得する](#mpt-issuanceオブジェクトを取得する)
- [MPTokenオブジェクトを取得する](#mptokenオブジェクトを取得する)
- [レスポンスのフォーマット](#レスポンスのフォーマット)
- [考えられるエラー](#考えられるエラー)
@@ -400,6 +404,60 @@ rippled json ledger_entry '{ "offer": { "account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJY
{% try-it method="ledger_entry-offer" /%}
### Oracleオブジェクトを取得する
_([PriceOracle amendment][]が必要です)_
[Oracleエントリ](../../../protocol/ledger-data/ledger-entry-types/oracle.md)を取得します。これは、トークン価格を保存できる単一の価格オラクルを表します。
| フィールド | 型 | 必須? | 説明 |
|-----------------------------|----------------------|-------|------|
| `oracle` | Object | はい | オラクルの識別子。 |
| `oracle.account` | String - [Address][] | はい | `Oracle`オブジェクトを制御するアカウント。 |
| `oracle.oracle_document_id` | Number | はい | `Account`のオラクルの一意の識別子。 |
{% tabs %}
{% tab label="WebSocket" %}
```json
{
"id": "example_get_oracle",
"command": "ledger_entry",
"oracle" : {
"account": "rNZ9m6AP9K7z3EVg6GhPMx36V4QmZKeWds",
"oracle_document_id": 34
},
"ledger_index": "validated"
}
```
{% /tab %}
{% tab label="JSON-RPC" %}
```json
{
"method": "ledger_entry",
"params" : [
{
"oracle" : {
"account": "rNZ9m6AP9K7z3EVg6GhPMx36V4QmZKeWds",
"oracle_document_id": 34
},
"ledger_index": "validated"
}
]
}
```
{% /tab %}
{% tab label="Commandline" %}
```sh
rippled json ledger_entry '{ "oracle": { "account": "rNZ9m6AP9K7z3EVg6GhPMx36V4QmZKeWds", "oracle_document_id": 34 }, "ledger_index": "validated" }'
```
{% /tab %}
{% /tabs %}
[試してみる >](/resources/dev-tools/websocket-api-tool?server=wss%3A%2F%2Fs.devnet.rippletest.net%3A51233%2F#ledger_entry-oracle)
### RippleStateオブジェクトを取得する
@@ -750,18 +808,120 @@ rippled json ledger_entry '{ "nft_page": "255DD86DDF59D778081A06D02701E9B2C9F4F0
{% try-it method="ledger_entry-nft-page" /%}
## レスポンスのフォーマット
### MPT Issuanceオブジェクトを取得する
レスポンスは[標準フォーマット][]に従って、成功結果には以下のフィールドが含まれます。
_([MPTokensV1 amendment][]が必要です。 {% not-enabled /%})_
| フィールド | 型 | 説明 |
`MPTokenIssuance`オブジェクトを返します。
| フィールド | 型 | 説明 |
|:------------------------|:-------|:---------------|
| `mpt_issuance` | 文字列 | 192ビットの`MPTokenIssuanceID`を16進文字列で指定。 |
{% tabs %}
{% tab label="WebSocket" %}
```json
{
"id": "example_get_mpt_issuance",
"command": "ledger_entry",
"mpt_issuance": "000004C463C52827307480341125DA0577DEFC38405B0E3E",
"ledger_index": "validated"
}
```
{% /tab %}
{% tab label="JSON-RPC" %}
```json
{
"method": "ledger_entry",
"params": [{
"mpt_issuance": "000004C463C52827307480341125DA0577DEFC38405B0E3E",
"ledger_index": "validated"
}]
}
```
{% /tab %}
{% tab label="Commandline" %}
```sh
rippled json ledger_entry '{ "mpt_issuance": "000004C463C52827307480341125DA0577DEFC38405B0E3E", "ledger_index": "validated" }'
```
{% /tab %}
{% /tabs %}
<!-- TODO: add try-it for MPT issuance
[Try it! >](/resources/dev-tools/websocket-api-tool#ledger_entry-mpt_issuance)
-->
### MPTokenオブジェクトを取得する
_([MPTokensV1 amendment][]が必要です。 {% not-enabled /%})_
`MPToken`オブジェクトを返します。
| フィールド | 型 | 説明 |
|:------------------------|:-------------------------|:----------------------|
| `mptoken` | オブジェクトまたは文字列 | 文字列の場合、取得するMPTokenのレジャーエントリIDとして解釈します。オブジェクトの場合、`MPToken`を一意に識別するために、`account``mpt_issuance_id`のサブフィールドが必要です。 |
| mptoken.mpt_issuance_id | 文字列 | (`MPToken`がオブジェクトの場合必須) MPTokenIssuanceに紐づく192ビットのMPTokenIssuanceID。 |
| mptoken.account | 文字列 | (`MPToken`がオブジェクトの場合必須) MPTokenの所有者のアカウント。 |
{% tabs %}
{% tab label="WebSocket" %}
```json
{
"id": "example_get_mpt_issuance",
"command": "ledger_entry",
"mptoken": {
"mpt_issuance_id": "000002DFA4D893CFBC4DC6AE877EB585F90A3B47528B958D",
"account":"r33kves44ksufkHSGg3M6GPPAsoVHEN8C1"
}
}
```
{% /tab %}
{% tab label="JSON-RPC" %}
```json
{
"method": "ledger_entry",
"params": [
{
"mptoken":{
"mpt_issuance_id": "000002DFA4D893CFBC4DC6AE877EB585F90A3B47528B958D",
"account":"r33kves44ksufkHSGg3M6GPPAsoVHEN8C1"
}
}
]
}
```
{% /tab %}
{% tab label="Commandline" %}
```sh
rippled json ledger_entry '{ "mptoken": {"mpt_issuance_id": "000002DFA4D893CFBC4DC6AE877EB585F90A3B47528B958D", "account":"r33kves44ksufkHSGg3M6GPPAsoVHEN8C1"} }'
```
{% /tab %}
{% /tabs %}
<!-- TODO: make a try-it link for MPT object
[Try it! >](/resources/dev-tools/websocket-api-tool#ledger_entry-mptoken)
-->
## レスポンスフォーマット
レスポンスは[標準フォーマット][]に従い、成功した結果には次のフィールドが含まれます。
| フィールド | 型 | 説明 |
|:---------------|:-----------------|:-----------------------------------------|
| `index` | 文字列 | [レジャーオブジェクト](../../../protocol/ledger-data/ledger-entry-types/index.md)の一意のID。 |
| `ledger_index` | 符号なし整数 | このデータを取得するに使用たレジャーの [レジャーインデックス][]。 |
| `node` | オブジェクト | _(`"binary": true`が指定されている場合省略)_ [レジャーフォーマット][]に基づいた、この元帳オブジェクトのデータを含むオブジェクト。 |
| `node_binary` | 文字列 | _(`"binary": true`が指定されていない場合省略)_ レジャーオブジェクトの[バイナリ形式](../../../protocol/binary-format.md)を16進数で表したもの。 |
| `index` | 文字列 | [レジャーエントリ](../../../protocol/ledger-data/ledger-entry-types/index.md)の一意のID。 |
| `ledger_index` | 正の整数 | このデータを取得するために使用されたレジャーの[レジャーインデックス][]。 |
| `node` | オブジェクト | _(`"binary": true`場合省略)_ このレジャーエントリのデータ。[レジャーフォーマット][]に従っています。 |
| `node_binary` | 文字列 | _(`"binary": true`場合省略)_ レジャーオブジェクトの[バイナリフォーマット](../../../protocol/binary-format.md)。 |
| `deleted_ledger_index` | String | _(Clioサーバのみ, `include_deleted`パラメータが設定されている場合のみ)_ レジャーエントリオブジェクトが削除された[レジャーインデックス][]。 |
処理が成功したレスポンスの例:
成功したレスポンスの例:
{% tabs %}
@@ -831,7 +991,7 @@ rippled json ledger_entry '{ "nft_page": "255DD86DDF59D778081A06D02701E9B2C9F4F0
```
{% /tab %}
{% tab label="コマンドライン" %}
{% tab label="Commandline" %}
```json
{
"result": {

View File

@@ -0,0 +1,160 @@
---
blurb: 指定された`MPTokenIssuanceID`とledgerシーケンスに対する所有者の情報を取得します。
labels:
- アカウント
- XRP
---
# mpt_holders
{% partial file="/@l10n/ja/docs/_snippets/mpts-disclaimer.md" /%}
指定された`MPTokenIssuanceID`とレジャーシーケンスに対して、`mpt_holders`はそのMPTの全所有者とその残高を返します。このメソッドは非常に大きなデータセットを返す可能性があるため、`marker`フィールドを使用したページングの実装が必要になると考えられます。このAPIはClioでのみ利用可能で、rippledでは利用できません。
## リクエストのフォーマット
*Websocket*
```json
{
"command": "mpt_holders",
"mpt_issuance_id": "00070C4495F14B0E44F78A264E41713C64B5F89242540EE255534400000000000000",
"ledger_index": "validated"
}
```
*JSON-RPC*
```json
{
"method": "mpt_holders",
"params": [
{
"mpt_issuance_id": "00070C4495F14B0E44F78A264E41713C64B5F89242540EE255534400000000000000",
"ledger_index": "validated"
}
]
}
```
リクエストには以下のパラメータが含まれます。
| フィールド | 型 | 必須? | 説明 |
|:------------------|:----------------------|:----------|-------------|
| `mpt_issuance_id` | 文字列 | はい | クエリ対象の`MPTokenIssuance`。 |
| `ledger_index` | 文字列または数値(正の整数) | いいえ | 使用する最大のレジャーインデックス、または自動的にレジャーを選択するためのショートカット文字列。ledger_indexまたはledger_hashのいずれかを指定する必要があります。 |
| `ledger_hash` | 文字列 | いいえ | 使用する32バイトのレジャーハッシュ。ledger_indexまたはledger_hashのいずれかを指定する必要があります。 |
| `marker` | 文字列 | いいえ | ページングで中断したクエリを続けるために使用します。 |
| `limit` | 数値(正の整数) | いいえ | 返されるMPTの数の制限を指定します。 |
## レスポンスのフォーマット
```json
{
"mpt_issuance_id": "000004C463C52827307480341125DA0577DEFC38405B0E3E",
"limit":50,
"ledger_index": 2,
"mptokens": [{
"account": "rEiNkzogdHEzUxPfsri5XSMqtXUixf2Yx",
"flags": 0,
"mpt_amount": "20",
"mptoken_index": "36D91DEE5EFE4A93119A8B84C944A528F2B444329F3846E49FE921040DE17E65"
},
{
"account": "rrnAZCqMahreZrKMcZU3t2DZ6yUndT4ubN",
"flags": 0,
"mpt_amount": "1",
"mptoken_index": "D137F2E5A5767A06CB7A8F060ADE442A30CFF95028E1AF4B8767E3A56877205A"
}],
"validated": true
}
```
### レスポンスのフィールド
レスポンスは[標準フォーマット][]に従い、結果に以下のフィールドが含まれます。
| フィールド | 型 | 説明 |
|:--------------------|:--------|:----------------------------------------|
| `mpt_issuance_id` | 文字列 | クエリされた`MPTokenIssuance` |
| `mptokens` | 配列 | mptokenの配列。基礎となるMPTokenオブジェクトの全ての関連フィールドを含みます。 |
| `marker` | 文字列 | ページング時に次のクエリを続けるために使用します。この結果の後にエントリがない場合は省略されます。 |
| `limit` | 数値 | リクエストで指定された制限値 |
| `ledger_index` | 数値 | 使用されたレジャーインデックス。 |
`mptoken`オブジェクトには以下のパラメータがあります。
| フィールド | 型 | 説明 |
|:--------------------|:--------|:----------------------------------------|
| `account` | 文字列 | `MPToken`を所有するホルダーのアカウントアドレス。 |
| `flags` | 数値 | `MPToken`オブジェクトに割り当てられたフラグ。 |
| `mpt_amount` | 文字列 | ホルダーの残高を10進数でエンコードした量。 |
| `mptoken_index` | 文字列 | `MPToken`オブジェクトのキー。 |
##### 例
`tx`レスポンスの例:
```json
{
"result": {
"Account": "rBT9cUqK6UvpvZhPFNQ2qpUTin8rDokBeL",
"AssetScale": 2,
"Fee": "10",
"Flags": 64,
"Sequence": 303,
"SigningPubKey": "ED39955DEA2D083C6CBE459951A0A84DB337925389ACA057645EE6E6BA99D4B2AE",
"TransactionType": "MPTokenIssuanceCreate",
"TxnSignature": "80D7B7409980BE9854F7217BB8E836C8A2A191E766F24B5EF2EA7609E1420AABE6A1FDB3038468679081A45563B4D0B49C08F4F70F64E41B578F288A208E4206",
"ctid": "C000013100000000",
"date": 760643692,
"hash": "E563D7942E3E4A79AD73EC12E9E4C44B7C9950DF7BF5FDB75FAD0F5CE0554DB3",
"inLedger": 305,
"ledger_index": 305,
"meta": {
"AffectedNodes": [...],
"TransactionIndex": 0,
"TransactionResult": "tesSUCCESS",
"mpt_issuance_id": "0000012F72A341F09A988CDAEA4FF5BE31F25B402C550ABE"
},
"status": "success",
"validated": true
}
}
```
##### オブジェクト
`mpt_issuance_id`フィールドはJSON MPTokenIssuanceオブジェクトで提供されます(バイナリでは利用できません)。次ののAPIが影響を受けます、`ledger_data`および`account_objects`
##### 例
`account_objects`のレスポンス例
```json
{
"result": {
"account": "rBT9cUqK6UvpvZhPFNQ2qpUTin8rDokBeL",
"account_objects": [
{
"AssetScale": 2,
"Flags": 64,
"Issuer": "rBT9cUqK6UvpvZhPFNQ2qpUTin8rDokBeL",
"LedgerEntryType": "MPTokenIssuance",
"OutstandingAmount": "100",
"OwnerNode": "0",
"PreviousTxnID": "BDC5ECA6B115C74BF4DA83E36325A2F55DF9E2C968A5CC15EB4D009D87D5C7CA",
"PreviousTxnLgrSeq": 308,
"Sequence": 303,
"index": "75EC6F2939ED6C5798A5F369A0221BC4F6DDC50F8614ECF72E3B976351057A63",
"mpt_issuance_id": "0000012F72A341F09A988CDAEA4FF5BE31F25B402C550ABE"
}
],
"ledger_current_index": 309,
"status": "success",
"validated": false
}
}
```

View File

@@ -0,0 +1,60 @@
---
blurb: XRPLのMulti-Purpose Tokenのオブジェクトについて説明します。
labels:
- Multi-Purpose Token, MPT, トークン
---
# MPToken
{% partial file="/@l10n/ja/docs/_snippets/mpts-disclaimer.md" /%}
`MPTokenIssuanceID`.`MPToken`オブジェクトは、トークン発行者ではないアカウントが保有する複数のトークンを表します。MPTは通常の支払いやDEXトランザクションを通じて取得され、これらと同じタイプのトランザクションを使用してオプションで償還または交換することができます。MPTokenのオブジェクトキーは、スペースキー、保有者のアドレス、および`MPTokenIssuanceID`をハッシュ化することで生成されます。
_([MPTokensV1_1 amendment][]により追加されました。)_
## MPToken JSONの例
```json
{
"LedgerEntryType": "MPToken",
"Account": "rajgkBmMxmz161r8bWYH7CQAFZP5bA9oSG",
"MPTokenIssuanceID": "000004C463C52827307480341125DA0577DEFC38405B0E3E",
"Flags": 0,
"MPTAmount": "100000000",
"OwnerNode": "1"
}
```
## MPTokenID
`MPTokenID`は、以下の値を順番に連結してSHA512-Halfを実行した結果です。
- `MPToken`スペースキー(0x0074)
- トークンの`MPTokenIssuanceID`
- トークン保有者の`AccountID`
## MPTokenのフィールド
`MPToken`オブジェクトには以下のフィールドがあります。
| フィールド名 | JSONの型 | 内部の型 | 説明 |
|:--------------------|:----------|:----------|:------------|
| `LedgerEntryType` | 数値 | UInt16 | 値0x007Fは文字列`MPToken`にマッピングされ、このオブジェクトがMPTの個別アカウントの保有を表すことを示します。 |
| `Account` | 文字列 | AccountID | MPTの所有者。 |
| `MPTokenIssuanceID` | 文字列 | UInt192 | `MPTokenIssuance`の識別子。 |
| `MPTAmount` | 文字列 | UInt64 | この値は、所有者が現在保有しているトークンの正の数量を指定します。このフィールドの有効な値は0x0から0x7FFFFFFFFFFFFFFFの間です。 |
| `Flags` | 数値 | UInt32 | (デフォルト) [MPTokenのフラグ](#mptokenのフラグ)をご覧ください。 |
| `PreviousTxnID` | 文字列 | Hash256 | このオブジェクトを最後に変更したトランザクションのトランザクションID。 |
| `PreviousTxnLgrSeq` | 数値 | UInt32 | このオブジェクトを最後に変更したトランザクションを含むレジャーのシーケンス番号。 |
| `OwnerNode` | 文字列 | UInt64 | (デフォルト) 所有者のディレクトリでこのアイテムが参照されているページ。 |
### MPTokenのフラグ
Flagsは`MPToken`オブジェクトに紐付けられたプロパティまたはその他のオプションです。
| フラグ名 | フラグ値 | 説明 |
|:-------------------|:-------------|:--------------------------------------------|
| `lsfMPTLocked` | `0x00000001` | 有効な場合、このアカウントが所有するMPTが現在ロックされており、発行者への価値の送信以外のXRPトランザクションで使用できないことを示します |
| `lsfMPTAuthorized` | `0x00000002` | (ホワイトリストの場合のみ適用) 設定されている場合、発行者がそのMPTの保有者を承認したことを示します。このフラグは`MPTokenAuthorize`トランザクションを使用して設定できます。また、`tfMPTUnauthorize`フラグを指定した`MPTokenAuthorize`トランザクションを使用して「解除」することもできます。|
{% raw-partial file="/docs/_snippets/common-links.md" /%}

View File

@@ -0,0 +1,82 @@
---
blurb: Introduction to XRPL MPTs.
labels:
- Multi-Purpose Token, MPT, トークン
---
# MPTokenIssuance
{% partial file="/@l10n/ja/docs/_snippets/mpts-disclaimer.md" /%}
`MPTokenIssuance`オブジェクトは、単一のMPT Issuanceを表し、Issuance自体に関連するデータを保持します。このIssuanceは`MPTokenIssuanceCreate`トランザクションを使用して作成され、`MPTokenIssuanceDestroy`トランザクションによって破棄することができます。
_([MPTokensV1_1 amendment][]により追加されました。)_
## MPTokenIssuance JSONの例
```json
{
"name": "US Treasury Bill Token",
"symbol": "USTBT",
"issuer": "US Treasury",
"issueDate": "2024-03-25",
"maturityDate": "2025-03-25",
"faceValue": 1000,
"interestRate": 2.5,
"interestFrequency": "Quarterly",
"collateral": "US Government",
"jurisdiction": "United States",
"regulatoryCompliance": "SEC Regulations",
"securityType": "Treasury Bill",
"external_url": "https://example.com/t-bill-token-metadata.json"
}
```
## MPTokenIssuanceID
`MPTokenIssuance`オブジェクトのキーは、以下の値を順番に連結したものをSHA512-Halfした結果です。
- `MPTokenIssuance`スペースキー(0x007E)
- トランザクションシーケンス番号
- 発行者の`AccountID`
`MPTokenIssuanceID`は192ビットの整数で、以下の順に連結されます
- トランザクションシーケンス番号
- 発行者のAccountID
## MPTokenIssuanceのフィールド
`MPTokenIssuance`オブジェクトには以下のフィールドがあります。
| フィールド名 | JSON型 | 内部型 | 説明 |
| :------------------ | :----- | :-------- | ---- |
| `LedgerEntryType` | 数値 | UInt16 | 値0x007Eは文字列MPTokenIssuanceにマッピングされ、このオブジェクトがMulti-Purpose Token (MPT)を記述していることを示します。 |
| `Flags` | 数値 | UInt32 | [MPTokenIssuanceのフラグ](#mptokenissuanceのフラグ)をご覧ください。 |
| `Issuer` | 文字列 | AccountID | 特定の代替可能トークンの発行量とプロパティの両方を制御するアカウントのアドレス。 |
| `AssetScale` | 数値 | UInt8 | 標準単位と対応する分数単位との間の桁数の差です。より正確には、AssetScaleは自然数(0、1、2、...)で、1標準単位は対応する分数単位の10^(-scale)に等しくなります。分数単位が標準単位と等しい場合、AssetScaleは0です。 |
| `MaximumAmount` | 文字列 | UInt64 | この値は、非発行アカウントに配布できるMPTの最大数(つまり、発行可能な数)を指定する符号なし数値です。未指定の場合、この値は0x7FFFFFFFFFFFFFFFに設定されます。 |
| `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。 |
| `PreviousTxnLgrSeq` | 数値 | UInt32 | このオブジェクトを最後に変更したトランザクションを含むレジャーのシーケンス番号。 |
| `OwnerNode` | 文字列 | UInt64 | このアイテムが参照されている所有者のディレクトリのページ。 |
| `Sequence` | 数値 | UInt32 | 特定の送信者からの発行が、Issuanceが後で削除された場合でも一度しか存在できないことを保証するために使用される32ビットの符号なし整数。新しい発行が作成されるたびに、この値はアカウントの現在の`Sequence`番号と一致する必要があります。`Tickets`は通常の順序外でトランザクションを送信できるように、これらのルールから一部例外を設けています。`Tickets`は後で使用するために予約されたシーケンス番号を表します。トランザクションは通常のアカウントSequence番号の代わりに`Ticket`を使用できます。MPTを作成するトランザクションがレジャーに含まれるたびに、トランザクションが正常に実行されたか、tecクラスのエラーコードで失敗したかに関係なく、シーケンス番号(またはTicket)が使用されます。その他のトランザクションの失敗はレジャーに含まれないため、送信者のシーケンス番号は変更されません(また、他の影響もありません)。未確認のMPT作成トランザクションが同じIssuerとシーケンス番号を持つことは可能です。そのようなトランザクションは相互に排他的であり、検証済みレジャーに含まれるのは最大で1つだけです。(他のトランザクションは最終的に効果がありません。) |
### MPTokenIssuanceのフラグ
Flagsは`MPToken`オブジェクトに関連付けられたプロパティまたはその他のオプションです。`MPTokenIssuanceSet`トランザクションを介して変更可能な`lsfMPTLocked`を除き、これらのフラグは不変です。`MPTokenIssuanceCreate`トランザクション中にのみ設定でき、後で変更することはできません。
| フラグ名 | フラグ値 | 説明 |
| :------------------ | :----------- | ---- |
| `lsfMPTLocked` | `0x00000001` | 設定されている場合、すべての残高がロックされていることを示します。 |
| `lsfMPTCanLock` | `0x00000002` | 設定されている場合、発行者が個々の残高またはこのMPTのすべての残高をロックできることを示します。設定されていない場合、MPTはいかなる方法でもロックできません。 |
| `lsfMPTRequireAuth` | `0x00000004` | 設定されている場合、個々の保有者は承認を必要とすることを示します。これにより、発行者は自身の資産を保有できる人を制限できます。 |
| `lsfMPTCanEscrow` | `0x00000008` | 設定されている場合、個々の保有者が残高をエスクローに入れることができることを示します。 |
| `lsfMPTCanTrade` | `0x00000010` | 設定されている場合、個々の保有者がXRP Ledger DEXまたはAMMを使用して残高を取引できることを示します。 |
| `lsfMPTCanTransfer` | `0x00000020` | 設定されている場合、非発行者が保有するトークンを他のアカウントに転送できることを示します。設定されていない場合、非発行者が保有するトークンは発行者に返却する以外は転送できないことを示します。これにより、ストアクレジットなどのユースケースが可能になります。 |
| `lsfMPTCanClawback` | `0x00000040` | 設定されている場合、発行者が`Clawback`トランザクションを使用して個々の保有者から価値を回収できることを示します。 |
{% raw-partial file="/docs/_snippets/common-links.md" /%}

View File

@@ -254,6 +254,16 @@ NFTを含むトランザクション`tx`と`account_tx`)はメタデータ
| `nftoken_ids` | 配列 | トランザクションの結果、レジャー上で変更された`NFToken`のすべての`NFTokenID`を表示します。トランザクションが `NFTokenCancelOffer`の場合のみ表示されます。 |
| `offer_id` | 文字列 | `NFTokenCreateOffer`トランザクションからのレスポンスに、新しい`NFTokenOffer``OfferID`を表示します。 |
## MPTのフィールド
### 合成されたmpt_issuance_idフィールド
`MPTokenIssuanceID`は、RPCで`MPTokenIssuance`を指定するための識別子です。サーバはAPIレスポンスに合成された`mpt_issuance_id`フィールドを追加して、`MPTokenIssuanceID`のクライアントサイド解析の必要性を回避します。
### トランザクションのメタデータ
`MPTokenIssuanceCreate`トランザクションの成功したすべてのJSONトランザクションメタデータに合成された`mpt_issuance_id`フィールドが提供されます(バイナリでは利用できません)。次のAPIが影響を受けます。 `tx`,`account_tx`,`subscribe`,`ledger`
## delivered_amount
[Paymentトランザクション][]によって`Destination`に実際送金された金額を表します。トランザクションが成功すると、**[Partial Payments](../../../concepts/payment-types/partial-payments.md)であった場合を除いて、** 宛先は当該の金額を受取りますPartial Paymentsの場合、`Amount`を上限とする正の金額が受取られます)。`Amount`フィールドを信頼するかどうかを選択するのではなく、メタデータの`delivered_amount`フィールドを使用して、宛先に実際に到達する金額を確認してください。

View File

@@ -32,11 +32,14 @@ Clawback機能はデフォルトで無効になっています。使用するに
{% raw-partial file="/@l10n/ja/docs/_snippets/tx-fields-intro.md" /%}
| フィールド  | JSONの型 | [内部の型][] | 説明 |
|:-------------------|:----------|:------------|:----------|
| `Amount` | [通貨額][] | Amount | 回収する金額と、その金額を回収する相手を表します。`value`サブフィールドの回収する数量はゼロであってはなりません。これが現在の残高より多い場合、トランザクションは全残高を回収します。サブフィールド`Amount`内の`issuer`はトークン所有者のアカウントを表します。|
| フィールド | JSONの型 | [内部の型][] | 説明 |
|:-------------------|:-----------|:-------------|:----------|
| `Amount` | [通貨額][] | Amount | 回収する金額と、その金額を回収する相手を表します。`value`サブフィールドの回収する数量はゼロであってはなりません。これが現在の残高より多い場合、トランザクションは全残高を回収します。サブフィールド`Amount`内の`issuer`はトークン所有者のアカウントを表します。|
| `Holder` | 文字列 | AccountID | (任意) 回収する相手のアカウントアドレスを指定します。回収対象のアカウントの所有する`MPToken`オブジェクトの残高が非ゼロである必要があります。 |
このトランザクションを実行するアカウントは、回収する資産の発行者でなければなりません。XRP Ledgerでは、トラストラインは双方向あり、設定によっては双方が資産の*発行者*とみなされることに注意してください。この仕様において、*発行者*という用語は、未払い残高がある(つまり、発行された資産に"債務がある")トラストラインの側が、その資産を回収することを意味します。
{% admonition type="info" name="注記" %}XRP LedgerのIOU(トラストライン)では、トークンを発行した側を_発行者_と呼びますが、トラストラインは双方向性があり、設定によっては双方発行者とみなすことができます。このトランザクションでは、トークン発行者のアドレスは`Account`フィールドにあり、トークン保有者のアドレスは`Amount`フィールドの`issuer`サブフィールドにあります。{% /admonition %}
{% admonition type="info" name="注記" %}MPTの保有者から資金を回収するには、発行者は`MPTokenIssuanceCreate`トランザクションを使用してMPTを作成するときに`tfMPTCanClawback`フラグを設定して、MPTがClawbackを許可することを指定しなければなりません。このフラグが設定されたMPTが作成されたと仮定すると、`Clawback`トランザクションを使用して回収を行うことができます。{% /admonition %}
## エラーケース

View File

@@ -0,0 +1,39 @@
---
html: mptokenauthorize.html
parent: transaction-types.html
blurb: アカウントが特定のMPTの残高を保持することを許可します。
labels:
- Multi-Purpose Token, MPT
---
# MPTokenAuthorize
[[ソース]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/MPTokenAuthorize.cpp "ソース")
{% partial file="/@l10n/ja/docs/_snippets/mpts-disclaimer.md" /%}
このトランザクションは、アカウントが特定のMPT発行の残高を保持することを可能にします。トランザクションが成功すると、保有者アカウントが所有する初期残高がゼロの新しい`MPToken`オブジェクトが作成されます。
発行者が`MPTokenIssuance``lsfMPTRequireAuth`(ホワイトリスト形式)を設定している場合、発行者も保有者に許可を与えるために`MPTokenAuthorize`トランザクションを送信する必要があります。`lsfMPTRequireAuth`が設定されていない状態で発行者がこのトランザクションを送信しようとすると、失敗します。
<!-- ## MPTokenAuthorizeのフィールド -->
{% raw-partial file="/@l10n/ja/docs/_snippets/tx-fields-intro.md" /%}
| フィールド | JSON型 | [内部の型][] | 説明 |
|:--------------------|:--------------------|:------------------|:-------------------|
| `Account` | 文字列 | `AccountID` | このアドレスはMPTの発行者または潜在的な保有者のいずれかを示すことができます。 |
| `TransactionType` | オブジェクト | `UInt16` | 新しいトランザクションタイプMPTokenAuthorizeを示します。整数値は29です。 |
| `MPTokenIssuanceID` | 文字列 | `UIn192` | 対象となるMPTのIDを示します。 |
| `Holder` | 文字列 | `AccountID` | (任意) 発行者が承認したい保有者のアドレスを指定します。承認/ホワイトリストにのみ使用され、保有者が送信する場合は空である必要があります。 |
| `Flags` | 数値 | `UInt32` | [MPTokenAuthorizeのフラグ](#mptokenauthorizeのフラグ)をご覧ください。 |
### MPTokenAuthorizeのフラグ
MPTokenAuthorizeタイプのトランザクションは、Flagsフィールドにおいて以下の追加の値をサポートします。
| フラグ名 | 16進数値 | 10進数値 | 説明 |
|:-------------------|:-------------|:-------------|:----------------------------|
| `tfMPTUnauthorize` | `0x00000001` | 1 | 保有者が送信する場合に設定すると、保有者が`MPToken`の保持を望まなくなったことを示し、その結果`MPToken`は削除されます。保有者の`MPToken`の残高がゼロでない状態でこのフラグを設定しようとすると、トランザクションは失敗します。一方、発行者が送信する場合に設定すると、発行者が保有者の承認を取り消したい(アローリストにのみ適用)ことを意味し、`MPToken``lsfMPTAuthorized`フラグが解除されます。 |
{% raw-partial file="/docs/_snippets/common-links.md" /%}

View File

@@ -0,0 +1,64 @@
---
html: mptokenissuancecreate.html
parent: transaction-types.html
blurb: 新しいMulti-Purpose Tokenを発行します。
labels:
- Multi-Purpose Token, MPT
---
# MPTokenIssuanceCreate
[[ソース]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/MPTokenIssuanceCreate.cpp "ソース")
{% partial file="/@l10n/ja/docs/_snippets/mpts-disclaimer.md" /%}
`MPTokenIssuanceCreate`トランザクションは、[MPTokenIssuance](../../ledger-data/ledger-entry-types/mptokenissuance.md)オブジェクトを作成し、作成者アカウントの関連するディレクトリノードに追加します。このトランザクションは、変更不可として定義するトークンのフィールド(例MPT Flags)を指定できる唯一の機会です。
トランザクションが成功すると、新しく作成されたトークンはトランザクションを実行したアカウント(作成者アカウント)が所有することになります。
`MPTokenIssuance`トランザクションのレスポンスを取得すると、トランザクションメタデータには常に`mpt_issuance_id`フィールドが含まれます。
## MPTokenIssuanceCreateのJSON例
この例では、トークンの発行者がトランザクションの送信者であることを前提としています。
```json
{
"TransactionType": "MPTokenIssuanceCreate",
"Account": "rajgkBmMxmz161r8bWYH7CQAFZP5bA9oSG",
"AssetScale": 2,
"TransferFee": 314,
"MaximumAmount": "50000000",
"Flags": 83659,
"MPTokenMetadata": "FOO",
"Fee": "10"
}
```
<!-- ## MPTokenIssuanceCreateのフィールド -->
{% raw-partial file="/@l10n/ja/docs/_snippets/tx-fields-intro.md" /%}
| フィールド | JSON型 | [内部の型][] | 説明 |
| :---------------- | :----- | :----------- | ---- |
| `TransactionType` | 文字列 | UInt16 | 新しいトランザクションタイプMPTokenIssuanceCreateを示します。 |
| `AssetScale` | 数値 | UInt8 | (任意) 標準単位と対応する分数単位との間の桁数の差を表します。より正確には、AssetScaleは自然数(0, 1, 2, ...)で、1標準単位は対応する分数単位の10^(-scale)に等しくなります。分数単位が標準単位と等しい場合、AssetScaleは0となります。指定されない場合はデフォルトで0となります。 |
| `Flags` | 数値 | UInt16 | このトランザクションのフラグを指定します。[MPTokenIssuanceCreateのフラグ](#mptokenissuancecreateのフラグ)をご覧ください。 |
| `TransferFee` | 数値 | UInt16 | (任意) トークンの二次販売に対して発行者が請求する手数料を指定します(二次流通が許可されている場合)。このフィールドの有効な値は0から50,000までで、0.000%から50.000%までの転送レートを0.001刻みで設定できます。tfMPTCanTransferフラグが設定されていない場合、このフィールドは存在できません。存在する場合、トランザクションは失敗し、手数料が請求されます。 |
| `MaximumAmount` | 文字列 | UInt64 | (任意) このトークンが発行される最大アセット量を10進数エンコードの文字列で指定します。指定されない場合、9,223,372,036,854,775,807(2^63-1)に設定されます。 |
| `MPTokenMetadata` | 文字列 | Blob | この発行に関する任意のメタデータで、16進数形式で指定します。このフィールドの制限は1024バイトです。 |
## MPTokenIssuanceCreateのフラグ
MPTokenIssuanceCreateトランザクションでは、[`Flags`フィールド](../common-fields.md#Flagsフィールド)に以下の追加の値がサポートされています。
| フラグ名 | 16進数値 | 10進数値 | 説明 |
| :----------------- | :----------- | :------------ | ---- |
| `tfMPTCanLock` | `0x00000002` | `2` | 設定されている場合、MPTを個別およびグローバルにロックできることを示します。設定されていない場合、MPTはいかなる方法でもロックできません。 |
| `tfMPTRequireAuth` | `0x00000004` | `4` | 設定されている場合、個々の保有者は承認が必要であることを示します。これにより発行者は自身のアセットを保有できる者を制限できます。 |
| `tfMPTCanEscrow` | `0x00000008` | `8` | 設定されている場合、個々の保有者が残高をエスクローに入れることができることを示します。 |
| `tfMPTCanTrade` | `0x00000010` | `16` | 設定されている場合、個々の保有者がXRP Ledger DEXを使用して残高を取引できることを示します。 |
| `tfMPTCanTransfer` | `0x00000020` | `32` | 設定されている場合、トークンを発行者以外のアカウントに転送できることを示します。 |
| `tfMPTCanClawback` | `0x00000040` | `64` | 設定されている場合、発行者がClawbackトランザクションを使用して個々の保有者から価値を回収できることを示します。 |
{% raw-partial file="/docs/_snippets/common-links.md" /%}

View File

@@ -0,0 +1,36 @@
---
html: mptokenissuancedestroy.html
parent: transaction-types.html
blurb: レジャーからMulti-Purpose Tokenを削除します。
labels:
- Multi-Purpose Token, MPT
---
# MPTokenIssuanceDestroy
[[ソース]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/MPTokenIssuanceDestroy.cpp "ソース")
{% partial file="/@l10n/ja/docs/_snippets/mpts-disclaimer.md" /%}
`MPTokenIssuanceDestroy`トランザクションは、`MPTokenIssuance`オブジェクトをそれが保持されているディレクトリノードから削除するために使用され、実質的にレジャーからトークンを削除(「破棄」)します。
この操作が成功すると、対応する`MPTokenIssuance`が削除され、所有者の準備金要件が1つ減少します。対象のMPTの保有者が存在する場合、この操作は失敗しなければなりません。
## MPTokenIssuanceDestroyのJSONの例
```json
{
"TransactionType": "MPTokenIssuanceDestroy",
"Fee": "10",
"MPTokenIssuanceID": "00070C4495F14B0E44F78A264E41713C64B5F89242540EE255534400000000000000"
}
```
<!-- ## MPTokenIssuanceDestroyのフィールド -->
{% raw-partial file="/@l10n/ja/docs/_snippets/tx-fields-intro.md" /%}
| フィールド | JSONの型 | [内部の型][] | 説明 |
|:--------------------|:--------------------|:-------------|:------------------|
| `TransactionType` | 文字列 | UInt16 | 新しいトランザクションタイプMPTokenIssuanceDestroyを示します。 |
| `MPTokenIssuanceID` | 文字列 | UInt192 | トランザクションによって削除される`MPTokenIssuance`オブジェクトの識別子。 |
{% raw-partial file="/docs/_snippets/common-links.md" /%}

View File

@@ -0,0 +1,46 @@
---
html: mptokenissuanceset.html
parent: transaction-types.html
blurb: MPTの変更可能なプロパティを設定します。
labels:
- Multi-Purpose Token, MPT
---
# MPTokenIssuanceSet
[[ソース]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/MPTokenIssuanceSet.cpp "ソース")
{% partial file="/@l10n/ja/docs/_snippets/mpts-disclaimer.md" /%}
このトランザクションを使用して、Multi-Purpose Tokenの変更可能なプロパティを更新します。
## MPTokenIssuanceSetの例
```json
{
"TransactionType": "MPTokenIssuanceSet",
"Fee": "10",
"MPTokenIssuanceID": "00070C4495F14B0E44F78A264E41713C64B5F89242540EE255534400000000000000",
"Flags": 1
}
```
<!-- ## MPTokenIssuanceSetのフィールド -->
{% raw-partial file="/@l10n/ja/docs/_snippets/tx-fields-intro.md" /%}
| フィールド | JSON型 | [内部の型][] | 説明 |
|:-------------------|:-------------------|:-------------|:-------------------|
| `TransactionType` | 文字列 | UInt16 | 新しいトランザクションタイプ`MPTokenIssuanceSet`を示します。 |
| `MPTokenIssuanceID`| 文字列 | UInt192 | `MPTokenIssuance`の識別子。 |
| `Holder` | 文字列 | AccountID | (任意) ロック/アンロックする個別のトークン保有者残高のXRPLアドレス。省略した場合、このトランザクションはMPTを保有する全てのアカウントに適用されます。 |
| `Flag` | 数値 | UInt64 | このトランザクションのフラグを指定します。[MPTokenIssuanceSetのフラグ](#mptokenissuancesetのフラグ)をご覧ください。 |
### MPTokenIssuanceSetのフラグ
`MPTokenIssuanceSet`トランザクションでは、`Flags`フィールドで以下の追加の値がサポートされています。
| フラグ名 | 16進値 | 10進値 | 説明 |
|:-------------------|:-------------|:--------------|:------------------------------|
| `tfMPTLock` | `0x00000001` | 1 | 設定された場合、このアセットの全てのMPT残高をロックすることを示します。 |
| `tfMPTUnlock` | `0x00000002` | 2 | 設定された場合、このアセットの全てのMPT残高をアンロックすることを示します。 |
{% raw-partial file="/docs/_snippets/common-links.md" /%}

View File

@@ -56,13 +56,14 @@ Paymentは、[アカウントを作成](#アカウントの作成)する唯一
Paymentトランザクションタイプは、いくつかの異なるタイプの抽象的なアクションを表現することができる汎用ツールです。下の表で説明するように、トランザクションのフィールドに基づいてトランザクションタイプを識別することができます。
| Paymentの種類 | `Amount` | `SendMax` | `Paths` | `Address` = `Destination`? | 説明 |
| :--------------------------------- | :------------------------------ | :------------------------------ | :--------- | :------------------------- | ---- |
| [XRP同士の直接支払い][] | String (XRP) | 省略 | 省略 | いいえ | アカウント間でへ直接XRPを送金します。常に正確な金額を送信します。基本的な[取引コスト](../../../../concepts/transactions/transaction-cost.md)以外の手数料は適用されません。 |
| [発行通貨の作成・償還][] | Object | Object (任意) | 任意 | いいえ | XRP Ledgerに追跡されているXRP以外の通貨や資産の量を増減させます。[送金手数料](../../../../concepts/tokens/transfer-fees.md)と[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)は、直接送金・換金する際には適用されません。 |
| [クロスカレンシー(通貨間)決済][] | Object (non-XRP) / String (XRP) | Object (non-XRP) / String (XRP) | 通常は必須 | いいえ | 発行された通貨を保有者から別の保有者に送信します。`Amount``SendMax`の両方をXRPにすることはできません。これらの支払いは、発行者を介して[リップリング](../../../../concepts/tokens/fungible-tokens/rippling.md)し、トランザクションがパスセットを指定した場合、複数の仲介者を介してより長い[パス](../../../../concepts/tokens/fungible-tokens/paths.md)を取ることができます。トランザクション形式には、発行者が設定した[送金手数料](../../../../concepts/tokens/transfer-fees.md) が適用されます。これらのトランザクションは、異なる通貨間や、場合によっては同じ通貨コードで異なる発行者の通貨間を接続するために、[分散型取引所](../../../../concepts/tokens/decentralized-exchange/index.md)のオファーを利用します。 |
| [Partial payment][] | Object (non-XRP) / String (XRP) | Object (non-XRP) / String (XRP) | 通常は必須 | いいえ | 任意の通貨を特定の金額まで送ります。[`tfPartialPayment` フラグ](#paymentのフラグ)を使用します。トランザクションが成功するための最小値を指定する `DeliverMin` 値を含めることができます。トランザクションが `DeliverMin` を指定しない場合、_任意の正の値_ を指定して成功させることができる。 |
| 通貨変換 | Object (non-XRP) / String (XRP) | Object (non-XRP) / String (XRP) | 必須 | はい | [分散型取引所](../../../../concepts/tokens/decentralized-exchange/index.md)のオファーを消費して、ある通貨を別の通貨に交換し、[裁定取引](https://ja.wikipedia.org/wiki/%E8%A3%81%E5%AE%9A%E5%8F%96%E5%BC%95)の機会を得ることが出来ます。`Amount``SendMax` の両方を XRP にすることはできません。[Data API](../../../data-api.md) は、このタイプの取引を "payment" ではなく、"exchange" として追跡しています。 |
| Paymentの種類 | `Amount` | `SendMax` | `Paths` | `Address` = `Destination`? | 説明 |
| :--------------------------------- | :---------------------------------- | :---------------------------------- | :--------- | :------------------------- | ---- |
| [XRP同士の直接支払い][] | 文字列 (XRP) | 省略 | 省略 | いいえ | アカウント間でへ直接XRPを送金します。常に正確な金額を送信します。基本的な[取引コスト](../../../../concepts/transactions/transaction-cost.md)以外の手数料は適用されません。 |
| [発行通貨の作成・償還][] | オブジェクト | オブジェクト (任意) | 任意 | いいえ | XRP Ledgerに追跡されているXRP以外の通貨や資産の量を増減させます。[送金手数料](../../../../concepts/tokens/transfer-fees.md)と[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)は、直接送金・換金する際には適用されません。 |
| [クロスカレンシー(通貨間)決済][] | オブジェクト (非XRP) / 文字列 (XRP) | オブジェクト (非XRP) / 文字列 (XRP) | 通常は必須 | いいえ | 発行された通貨を保有者から別の保有者に送信します。`Amount``SendMax`の両方をXRPにすることはできません。これらの支払いは、発行者を介して[リップリング](../../../../concepts/tokens/fungible-tokens/rippling.md)し、トランザクションがパスセットを指定した場合、複数の仲介者を介してより長い[パス](../../../../concepts/tokens/fungible-tokens/paths.md)を取ることができます。トランザクション形式には、発行者が設定した[送金手数料](../../../../concepts/tokens/transfer-fees.md) が適用されます。これらのトランザクションは、異なる通貨間や、場合によっては同じ通貨コードで異なる発行者の通貨間を接続するために、[分散型取引所](../../../../concepts/tokens/decentralized-exchange/index.md)のオファーを利用します。 |
| [Partial payment][] | オブジェクト (非XRP) / 文字列 (XRP) | オブジェクト (非XRP) / 文字列 (XRP) | 通常は必須 | いいえ | 任意の通貨を特定の金額まで送ります。[`tfPartialPayment` フラグ](#paymentのフラグ)を使用します。トランザクションが成功するための最小値を指定する `DeliverMin` 値を含めることができます。トランザクションが `DeliverMin` を指定しない場合、_任意の正の値_ を指定して成功させることができる。 |
| 通貨変換 | オブジェクト (非XRP) / 文字列 (XRP) | オブジェクト (非XRP) / 文字列 (XRP) | 必須 | はい | [分散型取引所](../../../../concepts/tokens/decentralized-exchange/index.md)のオファーを消費して、ある通貨を別の通貨に交換し、[裁定取引](https://ja.wikipedia.org/wiki/%E8%A3%81%E5%AE%9A%E5%8F%96%E5%BC%95)の機会を得ることが出来ます。`Amount``SendMax` の両方を XRP にすることはできません。[Data API](../../../data-api.md) は、このタイプの取引を "payment" ではなく、"exchange" として追跡しています。 |
| MPTの支払い | オブジェクト | 省略 | 省略 | はい | MPTを保有者に送信します。[MPTの支払い](#mpt-payments)をご覧ください。 |
[XRP同士の直接支払い]: ../../../../concepts/payment-types/direct-xrp-payments.md
[発行通貨の作成・償還]: ../../../../concepts/tokens/index.md
@@ -138,4 +139,33 @@ tfLimitQualityフラグが最も有用となるのは、[Partial Payments](../..
95人民元/15米ドルのオファーと5人民元/2米ドルのオファーがある上の例で、トランザクションに関してtfPartialPaymentとtfLimitQualityの両方が有効になっている場合、状況は異なります。20米ドルの`SendMax`および100人民元の宛先`Amount`を維持する場合も、クオリティの制限は`5`です。ただし、実行しようとするのはPartial Paymentsであるため、宛先に対する送金の全額を一度で送金できない場合、トランザクションを失敗とするのではなく、送金可能な最大限の金額が送金されます。つまり、トランザクションでは、クオリティが約`6.3`である95人民元/15米ドルのオファーは受け入れますが、5人民元/2米ドルのオファーはクオリティが`2.5`であり、クオリティの制限の`5`より低いため、拒否します。最終的に、トランザクションで送金されるのは満額の100人民元ではなく95人民元になりますが、不利な為替レートで資金を浪費することを避けられます。
## MPTの支払い
MPTの支払いを行う場合、_Amount_ フィールドは`mpt_issuance_id``value`のみを必要とします。`MPTokenIssuanceID`は、トランザクションのためにMPTを一意に識別するために使用されます。
MPTokenのバージョン1では、アカウント間の直接支払いのみをサポートしています。DEXでは取引できません。
### MPTの支払いの例
```json
{
"Account": "rLWSJKbwYSzG32JuGissYd66MFTvfMk4Bt",
"Amount": {
"mpt_issuance_id": "006419063CEBEB49FC20032206CE0F203138BFC59F1AC578",
"value": "100"
},
"DeliverMax": {
"mpt_issuance_id": "006419063CEBEB49FC20032206CE0F203138BFC59F1AC578",
"value": "100"
},
"SendMax": {
"mpt_issuance_id": "006419063CEBEB49FC20032206CE0F203138BFC59F1AC578",
"value": "100"
},
"Destination": "raZ3wTTKiMHn3BiStvz4ET9rbCHfU1DMak",
"Fee": "120",
"Flags": 0,
}
```
{% raw-partial file="/docs/_snippets/common-links.md" /%}

View File

@@ -1334,7 +1334,7 @@ XRP Ledgerの分散型取引所において、オファーの掛け合わせの
| デフォルトの投票(最新の安定版) | いいえ |
| Amendment前の機能は廃止? | いいえ |
_多目的トークン(MPT)_ と呼ばれる新しいタイプの代替可能トークンを実装します。このトークンタイプは、ステーブルコインなどの一般的なトークンのユースケースに最適化されており、双方向のトラストラインに保存されるXRP Ledgerの既存の代替可能トークンに固有の複雑さを回避することを目的としています。このAmendmentは次のものを追加します。
_Multi-Purpose Token(MPT)_ と呼ばれる新しいタイプの代替可能トークンを実装します。このトークンタイプは、ステーブルコインなどの一般的なトークンのユースケースに最適化されており、双方向のトラストラインに保存されるXRP Ledgerの既存の代替可能トークンに固有の複雑さを回避することを目的としています。このAmendmentは次のものを追加します。
**新しいレジャーエントリタイプ:**

View File

@@ -158,7 +158,7 @@
[LedgerHashesエントリ]: /docs/references/protocol/ledger-data/ledger-entry-types/ledgerhashes.md
[LedgerHashesオブジェクト]: /docs/references/protocol/ledger-data/ledger-entry-types/ledgerhashes.md
[Marker]: /docs/references/http-websocket-apis/api-conventions/markers-and-pagination.md
[MPToken amendment]: /resources/known-amendments.md#mptokensv1
[MPTokensV1 amendment]: /resources/known-amendments.md#mptokensv1
[MultiSign amendment]: /resources/known-amendments.md#multisign
[MultiSignReserve amendment]: /resources/known-amendments.md#multisignreserve
[NFTokenAcceptOffer transaction]: /docs/references/protocol/transactions/types/nftokenacceptoffer.md
@@ -247,6 +247,7 @@
[PermissionedDomains amendment]: /resources/known-amendments.md#permissioneddomains
[permissioned domain]: /docs/concepts/tokens/decentralized-exchange/permissioned-domains.md
[PriceOracle amendment]: /resources/known-amendments.md#priceoracle
[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
[RequireFullyCanonicalSig amendment]: /resources/known-amendments.md#requirefullycanonicalsig

View File

@@ -8,7 +8,7 @@ status: not_enabled
---
# Multi-purpose Tokens
_(Requires the [MPToken amendment][] {% not-enabled /%})_
_(Requires the [MPTokensV1 amendment][] {% not-enabled /%})_
Multi-purpose tokens (MPTs) are a more compact and flexible type of fungible token.

View File

@@ -7,7 +7,7 @@ labels:
# mpt_holders
_(Requires the [MPToken amendment][] {% not-enabled /%})_
_(Requires the [MPTokensV1 amendment][] {% not-enabled /%})_
For a given `MPTokenIssuanceID` and ledger sequence, `mpt_holders` returns all holders of that MPT and their balance. This method likely returns very large data sets, so you should expect to implement paging via the `marker` field. This API is only available using Clio, not rippled.

View File

@@ -5,11 +5,11 @@ labels:
---
# MPToken
_(Requires the [MPToken amendment][] {% not-enabled /%})_
_(Requires the [MPTokensV1 amendment][] {% not-enabled /%})_
The `MPToken` object represents a number of tokens held by an account that is not the token issuer. MPTs are acquired via ordinary payment or DEX transactions, and can optionally be redeemed or exchanged using these same types of transactions. The object key of the MPToken is derived from hashing the space key, the holder's address, and the `MPTokenIssuanceID`.
<!-- _(Added by the [MPTokenV1_1 amendment][].)_ -->
<!-- _(Added by the [MPTokensV1_1 amendment][].)_ -->
## Example MPToken JSON

View File

@@ -5,11 +5,11 @@ labels:
---
# MPTokenIssuance
_(Requires the [MPToken amendment][] {% not-enabled /%})_
_(Requires the [MPTokensV1 amendment][] {% not-enabled /%})_
The `MPTokenIssuance` object represents a single MPT issuance and holds data associated with the issuance itself. Token issuances are created using the `MPTokenIssuanceCreate` transaction and can be destroyed by the `MPTokenIssuanceDestroy` transaction.
<!-- _(Added by the [MPTokenV1_1 amendment][].)_ -->
<!-- _(Added by the [MPTokensV1_1 amendment][].)_ -->
## Example MPTokenIssuance JSON

View File

@@ -256,7 +256,7 @@ Transactions (`tx` and `account_tx`) involving NFTs can contain the following fi
| `offer_id` | String | Shows the `OfferID`of a new `NFTokenOffer` in a response from a `NFTokenCreateOffer` transaction. |
## MPT Fields
_(Requires the [MPToken amendment][] {% not-enabled /%})_
_(Requires the [MPTokensV1 amendment][] {% not-enabled /%})_
### Synthetic mpt_issuance_id field
`MPTokenIssuanceID` is an identifier that allows you to specify an `MPTokenIssuance` in RPCs. The server adds a synthetically parsed `mpt_issuance_id` field to API responses to avoid the need for client-side parsing of the `MPTokenIssuanceID`.

View File

@@ -32,7 +32,7 @@ Clawback is disabled by default. To use clawback, you must send an [AccountSet t
| Field | JSON Type | [Internal Type][] | Description |
|:-------------------|:----------|:------------------|:------------------|
| `Amount` | [Currency Amount][] | Amount |Indicates the amount being clawed back, as well as the counterparty from which the amount is being clawed back. The quantity to claw back, in the `value` sub-field, must not be zero. If this is more than the current balance, the transaction claws back the entire balance. The sub-field `issuer` within `Amount` represents the token holder's account ID, rather than the issuer's.|
| `Holder` | string | AccountID | (Optional) Specifies the holder's address from which to claw back. The holder must already own an `MPToken` object with a non-zero balance. _(Requires the [MPToken amendment][] {% not-enabled /%})_ |
| `Holder` | string | AccountID | (Optional) Specifies the holder's address from which to claw back. The holder must already own an `MPToken` object with a non-zero balance. _(Requires the [MPTokensV1 amendment][] {% not-enabled /%})_ |
{% admonition type="info" name="Note" %}For an IOU (trust line) in the XRP Ledger, the party that created a token is called the _issuer_, but trust lines are bidirectional and, under some configurations, both sides can be seen as the issuer. In this transaction, the token issuer's address is in the `Account` field, and the token holder's address is in the `Amount` field's `issuer` sub-field.{% /admonition %}

View File

@@ -9,7 +9,7 @@ labels:
# MPTokenAuthorize
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/MPTokenAuthorize.cpp "Source")
_(Requires the [MPToken amendment][] {% not-enabled /%})_
_(Requires the [MPTokensV1 amendment][] {% not-enabled /%})_
This transaction enables an account to hold an amount of a particular MPT issuance. When applied successfully, it creates a new `MPToken` object with an initial zero balance, owned by the holder account.
@@ -34,4 +34,4 @@ Transactions of the MPTokenAuthorize type support additional values in the Flags
|:-------------------|:-------------|:--------------|:------------------------------|
| `tfMPTUnauthorize` | `0x00000001` | 1 | If set, and transaction is submitted by a holder, it indicates that the holder no longer wants to hold the `MPToken`, which will be deleted as a result. If the holder's `MPToken` has a non-zero balance while trying to set this flag, the transaction fails. On the other hand, if set, and transaction is submitted by an issuer, it would mean that the issuer wants to unauthorize the holder (only applicable for allow-listing), which would unset the `lsfMPTAuthorized` flag on the `MPToken`. |
{% raw-partial file="/docs/_snippets/common-links.md" /%}
{% raw-partial file="/docs/_snippets/common-links.md" /%}

View File

@@ -9,7 +9,7 @@ labels:
# MPTokenIssuanceCreate
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/MPTokenIssuanceCreate.cpp "Source")
_(Requires the [MPToken amendment][] {% not-enabled /%})_
_(Requires the [MPTokensV1 amendment][] {% not-enabled /%})_
The `MPTokenIssuanceCreate` transaction creates an [MPTokenIssuance](../../ledger-data/ledger-entry-types/mptokenissuance.md) object and adds it to the relevant directory node of the creator account. This transaction is the only opportunity an issuer has to specify any token fields that are defined as immutable (for example, MPT Flags).

View File

@@ -8,7 +8,7 @@ labels:
# MPTokenIssuanceDestroy
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/MPTokenIssuanceDestroy.cpp "Source")
_(Requires the [MPToken amendment][] {% not-enabled /%})_
_(Requires the [MPTokensV1 amendment][] {% not-enabled /%})_
The `MPTokenIssuanceDestroy` transaction is used to remove an `MPTokenIssuance` object from the directory node in which it is being held, effectively removing the token from the ledger ("destroying" it).

View File

@@ -8,7 +8,7 @@ labels:
# MPTokenIssuanceSet
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/MPTokenIssuanceSet.cpp "Source")
_(Requires the [MPToken amendment][] {% not-enabled /%})_
_(Requires the [MPTokensV1 amendment][] {% not-enabled /%})_
Use this transaction to update a mutable property for a Multi-purpose Token.

View File

@@ -143,7 +143,7 @@ In the above example with a ¥95/$15 offer and a ¥5/$2 offer, the situation is
## MPT Payments
_(Requires the [MPToken amendment][] {% not-enabled /%})_
_(Requires the [MPTokensV1 amendment][] {% not-enabled /%})_
When you send a payment using MPTs, the _Amount_ field requires only the `mpt_issuance_id` and the `value`. The `MPTokenIssuanceID` is used to uniquely identify the MPT for the transaction.