Skip to content

Commit 3e66d67

Browse files
authored
Merge pull request #2925 from tequdev/ja-mpt
[JA] MPToken
2 parents 2d41357 + 45cb273 commit 3e66d67

File tree

26 files changed

+784
-36
lines changed

26 files changed

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

@l10n/ja/docs/references/http-websocket-apis/public-api-methods/ledger-methods/ledger_entry.md

Lines changed: 169 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ label:
2525
| `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 %} |
2626
| `ledger_hash` | 文字列 | _(省略可)_ 使用するレジャーバージョンの20バイトの16進数の文字列。([レジャーの指定][]をご覧ください。 |
2727
| `ledger_index` | 文字列 または 符号なし整数 | _(省略可)_ 使用するレジャーの[レジャーインデックス][]、またはレジャーを自動的に選択するためのショートカット文字列("validated"や"closed"、"current"など)。([レジャーの指定][]をご覧ください。 |
28+
| `include_deleted` | 真偽値 | _(省略可, Clioサーバのみ)_ クエリされたオブジェクトが削除されている場合、その完全なデータを削除前の状態で返します。`false`または提供されていない場合、クエリされたオブジェクトが削除されている場合は`objectNotFound`を返します。 |
2829

2930
`generator``ledger`パラメータは非推奨であり、予告なく削除される可能性があります。
3031

@@ -39,13 +40,16 @@ label:
3940
- [Bridgeオブジェクトを取得する](#bridgeオブジェクトを取得する)
4041
- [Directorynodeオブジェクトを取得する](#directorynodeオブジェクトを取得する)
4142
- [Offerオブジェクトを取得する](#offerオブジェクトを取得する)
43+
- [Oracleオブジェクトを取得する](#oracleオブジェクトを取得する)
4244
- [RippleStateオブジェクトを取得する](#ripplestateオブジェクトを取得する)
4345
- [Checkオブジェクトを取得する](#checkオブジェクトを取得する)
4446
- [Escrowオブジェクトを取得する](#escrowオブジェクトを取得する)
4547
- [Paychannelオブジェクトを取得する](#paychannelオブジェクトを取得する)
4648
- [DepositPreauthオブジェクトを取得する](#depositpreauthオブジェクトを取得する)
4749
- [Ticketオブジェクトを取得する](#ticketオブジェクトを取得する)
4850
- [Nft Pageを取得する](#nft-pageを取得する)
51+
- [MPT Issuanceオブジェクトを取得する](#mpt-issuanceオブジェクトを取得する)
52+
- [MPTokenオブジェクトを取得する](#mptokenオブジェクトを取得する)
4953
- [レスポンスのフォーマット](#レスポンスのフォーマット)
5054
- [考えられるエラー](#考えられるエラー)
5155

@@ -400,6 +404,60 @@ rippled json ledger_entry '{ "offer": { "account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJY
400404

401405
{% try-it method="ledger_entry-offer" /%}
402406

407+
### Oracleオブジェクトを取得する
408+
409+
_([PriceOracle amendment][]が必要です)_
410+
411+
[Oracleエントリ](../../../protocol/ledger-data/ledger-entry-types/oracle.md)を取得します。これは、トークン価格を保存できる単一の価格オラクルを表します。
412+
413+
| フィールド || 必須? | 説明 |
414+
|-----------------------------|----------------------|-------|------|
415+
| `oracle` | Object | はい | オラクルの識別子。 |
416+
| `oracle.account` | String - [Address][] | はい | `Oracle`オブジェクトを制御するアカウント。 |
417+
| `oracle.oracle_document_id` | Number | はい | `Account`のオラクルの一意の識別子。 |
418+
419+
{% tabs %}
420+
421+
{% tab label="WebSocket" %}
422+
```json
423+
{
424+
"id": "example_get_oracle",
425+
"command": "ledger_entry",
426+
"oracle" : {
427+
"account": "rNZ9m6AP9K7z3EVg6GhPMx36V4QmZKeWds",
428+
"oracle_document_id": 34
429+
},
430+
"ledger_index": "validated"
431+
}
432+
```
433+
{% /tab %}
434+
435+
{% tab label="JSON-RPC" %}
436+
```json
437+
{
438+
"method": "ledger_entry",
439+
"params" : [
440+
{
441+
"oracle" : {
442+
"account": "rNZ9m6AP9K7z3EVg6GhPMx36V4QmZKeWds",
443+
"oracle_document_id": 34
444+
},
445+
"ledger_index": "validated"
446+
}
447+
]
448+
}
449+
```
450+
{% /tab %}
451+
452+
{% tab label="Commandline" %}
453+
```sh
454+
rippled json ledger_entry '{ "oracle": { "account": "rNZ9m6AP9K7z3EVg6GhPMx36V4QmZKeWds", "oracle_document_id": 34 }, "ledger_index": "validated" }'
455+
```
456+
{% /tab %}
457+
458+
{% /tabs %}
459+
460+
[試してみる >](/resources/dev-tools/websocket-api-tool?server=wss%3A%2F%2Fs.devnet.rippletest.net%3A51233%2F#ledger_entry-oracle)
403461

404462

405463
### RippleStateオブジェクトを取得する
@@ -750,18 +808,120 @@ rippled json ledger_entry '{ "nft_page": "255DD86DDF59D778081A06D02701E9B2C9F4F0
750808

751809
{% try-it method="ledger_entry-nft-page" /%}
752810

753-
## レスポンスのフォーマット
811+
### MPT Issuanceオブジェクトを取得する
812+
813+
_([MPTokensV1 amendment][]が必要です。 {% not-enabled /%})_
814+
815+
`MPTokenIssuance`オブジェクトを返します。
816+
817+
| フィールド || 説明 |
818+
|:------------------------|:-------|:---------------|
819+
| `mpt_issuance` | 文字列 | 192ビットの`MPTokenIssuanceID`を16進文字列で指定。 |
820+
821+
{% tabs %}
822+
823+
{% tab label="WebSocket" %}
824+
```json
825+
{
826+
"id": "example_get_mpt_issuance",
827+
"command": "ledger_entry",
828+
"mpt_issuance": "000004C463C52827307480341125DA0577DEFC38405B0E3E",
829+
"ledger_index": "validated"
830+
}
831+
```
832+
{% /tab %}
833+
834+
{% tab label="JSON-RPC" %}
835+
```json
836+
{
837+
"method": "ledger_entry",
838+
"params": [{
839+
"mpt_issuance": "000004C463C52827307480341125DA0577DEFC38405B0E3E",
840+
"ledger_index": "validated"
841+
}]
842+
}
843+
```
844+
{% /tab %}
845+
846+
{% tab label="Commandline" %}
847+
```sh
848+
rippled json ledger_entry '{ "mpt_issuance": "000004C463C52827307480341125DA0577DEFC38405B0E3E", "ledger_index": "validated" }'
849+
```
850+
{% /tab %}
851+
{% /tabs %}
754852

755-
レスポンスは[標準フォーマット][]に従って、成功結果には以下のフィールドが含まれます。
853+
<!-- TODO: add try-it for MPT issuance
854+
[Try it! >](/resources/dev-tools/websocket-api-tool#ledger_entry-mpt_issuance)
855+
-->
756856

757-
| フィールド || 説明 |
857+
### MPTokenオブジェクトを取得する
858+
859+
_([MPTokensV1 amendment][]が必要です。 {% not-enabled /%})_
860+
861+
`MPToken`オブジェクトを返します。
862+
863+
| フィールド || 説明 |
864+
|:------------------------|:-------------------------|:----------------------|
865+
| `mptoken` | オブジェクトまたは文字列 | 文字列の場合、取得するMPTokenのレジャーエントリIDとして解釈します。オブジェクトの場合、`MPToken`を一意に識別するために、`account``mpt_issuance_id`のサブフィールドが必要です。 |
866+
| mptoken.mpt_issuance_id | 文字列 | (`MPToken`がオブジェクトの場合必須) MPTokenIssuanceに紐づく192ビットのMPTokenIssuanceID。 |
867+
| mptoken.account ️ | 文字列 | (`MPToken`がオブジェクトの場合必須) MPTokenの所有者のアカウント。 |
868+
869+
{% tabs %}
870+
871+
{% tab label="WebSocket" %}
872+
873+
```json
874+
{
875+
"id": "example_get_mpt_issuance",
876+
"command": "ledger_entry",
877+
"mptoken": {
878+
"mpt_issuance_id": "000002DFA4D893CFBC4DC6AE877EB585F90A3B47528B958D",
879+
"account":"r33kves44ksufkHSGg3M6GPPAsoVHEN8C1"
880+
}
881+
}
882+
```
883+
{% /tab %}
884+
885+
{% tab label="JSON-RPC" %}
886+
```json
887+
{
888+
"method": "ledger_entry",
889+
"params": [
890+
{
891+
"mptoken":{
892+
"mpt_issuance_id": "000002DFA4D893CFBC4DC6AE877EB585F90A3B47528B958D",
893+
"account":"r33kves44ksufkHSGg3M6GPPAsoVHEN8C1"
894+
}
895+
}
896+
]
897+
}
898+
```
899+
{% /tab %}
900+
901+
{% tab label="Commandline" %}
902+
```sh
903+
rippled json ledger_entry '{ "mptoken": {"mpt_issuance_id": "000002DFA4D893CFBC4DC6AE877EB585F90A3B47528B958D", "account":"r33kves44ksufkHSGg3M6GPPAsoVHEN8C1"} }'
904+
```
905+
{% /tab %}
906+
{% /tabs %}
907+
908+
<!-- TODO: make a try-it link for MPT object
909+
[Try it! >](/resources/dev-tools/websocket-api-tool#ledger_entry-mptoken)
910+
-->
911+
912+
## レスポンスフォーマット
913+
914+
レスポンスは[標準フォーマット][]に従い、成功した結果には次のフィールドが含まれます。
915+
916+
| フィールド || 説明 |
758917
|:---------------|:-----------------|:-----------------------------------------|
759-
| `index` | 文字列 | [レジャーオブジェクト](../../../protocol/ledger-data/ledger-entry-types/index.md)の一意のID。 |
760-
| `ledger_index` | 符号なし整数 | このデータを取得する際に使用したレジャーの [レジャーインデックス][]|
761-
| `node` | オブジェクト | _(`"binary": true`が指定されている場合、省略)_ [レジャーフォーマット][]に基づいた、この元帳オブジェクトのデータを含むオブジェクト。 |
762-
| `node_binary` | 文字列 | _(`"binary": true`が指定されていない場合、省略)_ レジャーオブジェクトの[バイナリ形式](../../../protocol/binary-format.md)を16進数で表したもの。 |
918+
| `index` | 文字列 | [レジャーエントリ](../../../protocol/ledger-data/ledger-entry-types/index.md)の一意のID。 |
919+
| `ledger_index` | 正の整数 | このデータを取得するために使用されたレジャーの[レジャーインデックス][]|
920+
| `node` | オブジェクト | _(`"binary": true`の場合省略)_ このレジャーエントリのデータ。[レジャーのフォーマット][]に従っています。 |
921+
| `node_binary` | 文字列 | _(`"binary": true`の場合省略)_ レジャーオブジェクトの[バイナリフォーマット](../../../protocol/binary-format.md)|
922+
| `deleted_ledger_index` | String | _(Clioサーバのみ, `include_deleted`パラメータが設定されている場合のみ)_ レジャーエントリオブジェクトが削除された[レジャーインデックス][]|
763923

764-
処理が成功したレスポンスの例:
924+
成功したレスポンスの例:
765925

766926
{% tabs %}
767927

@@ -831,7 +991,7 @@ rippled json ledger_entry '{ "nft_page": "255DD86DDF59D778081A06D02701E9B2C9F4F0
831991
```
832992
{% /tab %}
833993

834-
{% tab label="コマンドライン" %}
994+
{% tab label="Commandline" %}
835995
```json
836996
{
837997
"result": {

0 commit comments

Comments
 (0)