転送トランザクション⚓︎
- 転送トランザクション
- あるアカウントから別のアカウントへ XEM、モザイク、任意のメッセージを送る トランザクション です。
転送トランザクションは NEM で最も一般的なトランザクションで、資産の転送と簡単な通信の両方を可能にします。
主な特徴⚓︎
-
モザイクの転送
転送トランザクションには1つ以上のモザイクを付加できます。 転送トランザクション内のすべてのモザイクは、1人の送信者から1人の受信者へ送られます。 そのため、転送トランザクションは単純な直接の資産転送に適しています。
-
メッセージのサポート
任意でプレーンテキストまたは暗号化メッセージを含められます。 転送トランザクションにモザイクは必須ではないため、メッセージだけを送ることもできます。 これにより、モザイクの転送とともに簡単な通信ができます。
-
マルチシグ互換性
他のすべてのトランザクションと同様、転送トランザクションは マルチシグアカウント をサポートします。 これにより、複雑なガバナンス方式など、複数アカウントによる承認を必要にできます。
構造⚓︎
共通トランザクション構造 に加えて、転送トランザクションには次の属性が含まれます。
| 属性 | 説明 |
|---|---|
| 受取人のアドレス | 受取アカウントのアドレス。 |
| XEM 金額 | モザイク一覧が空の場合は受取人に送る XEM、一覧が空でない場合は付加された各モザイクに適用する乗数。 |
| 転送モザイク一覧 | 転送する0個以上のモザイク。 |
| 任意のメッセージ | 最大1024バイトのプレーンテキストまたは暗号化メッセージ。 |
受取人のアドレス⚓︎
受取人は アドレス で指定します。
所有者のいないアドレスへ送った資産は失われます
これまでチェーン上に現れたことがないアドレスを含め、任意の有効なアドレスに XEM またはモザイクを送れます。 そのアドレスに対応する 秘密鍵 を誰も持っていなければ、転送された資産を回収できません。
XEM 金額⚓︎
XEM 金額 はマイクロ XEM で表し、1 XEM = 1'000'000 micro-XEM です。
モザイク一覧 に応じて、次の2つの目的で使われます。
- 転送金額 モザイク一覧が空の場合、XEM 金額は受取人に送る XEM です。
-
モザイク乗数 モザイク一覧が空でない場合、XEM 金額自体は XEM を送りません。 代わりに、値を
1'000'000で割って、付加された各モザイクの数量を拡大する 乗数 を得ます。 同じ乗数が一覧のすべてのモザイクに適用されます。たとえば
2'000'000は乗数2になり、一覧内のすべてのモザイク数量を2倍にします。 一覧項目が500単位なら、受取人には1'000単位が届きます。
乗数のルール
XEM 金額が乗数として機能する場合は、次のルールがあります。
- 結果の乗数が整数になるよう、値は
1'000'000で割り切れる必要があります。小数の金額は拒否されます。 - ウォレットは慣例として
1'000'000に設定し、各モザイク数量を指定どおり転送します。 - 乗数
0は、モザイクを転送しない有効なトランザクションを生成します。
転送モザイク一覧⚓︎
転送トランザクションには最大 10個のモザイク を含められます。 一覧を空にすることもでき、その場合は資産を移動せずに送信者がメッセージを付加できます。
各項目にはモザイク ID と数量を指定します。 数量はモザイクの 原子単位 で数える整数です。
モザイクの作成時に設定する divisibility プロパティは 0 から 6 の範囲で、1全体単位を構成する原子単位の数を定義します。
たとえば XEM の可分性は 6 なので、1'000'000 原子単位が1 XEMです。
全体単位と原子単位の変換については、モザイク ページを参照してください。
一覧にあるどのモザイクについても、送信者が十分な単位を保有していなければネットワークはトランザクションを拒否します。
一覧にあるモザイクに 徴収手数料 が設定されている場合、ネットワークは転送量に加えて送信者から徴収手数料を徴収し、その徴収手数料の受取人に入金します。 徴収手数料の請求方法 の規則を確認してください。
他のモザイクと一緒に XEM を送る
他のモザイクと同じトランザクションで XEM を送るには、一覧に XEM を項目として含めます。 他のすべてのモザイクと同様に、XEM 金額の乗数によって数量が拡大されます。
任意のメッセージ⚓︎
転送トランザクションには、最大 1024バイト の任意のメッセージを含められます。
付加モザイクがなく、XEM 金額が 0 の場合、転送にはメッセージだけが含まれます。
すべてのメッセージには type フィールドがあり、ペイロードがプレーンテキスト(0x0001)かセキュア(0x0002)かを識別します。
ノードは type フィールドと1024バイトのサイズ制限を強制します。
ペイロードのバイト列は解釈しません。
プロトコルはプレーンテキストのエンコード方式を定義せず、セキュアペイロードの暗号化方式も標準化しません。
どちらも送信者と受信者が合意する規約です。
プレーンテキストの規約⚓︎
プレーンテキストのペイロードはそのまま保存されます。 送信者と受信者は UTF-8、JSON、16進数などの形式に合意します。
NEM のウォレットとアプリケーションは通常 UTF-8 を想定します。
セキュアメッセージの規約⚓︎
セキュアペイロードは、受信者だけが復号できるよう暗号化されます。 プロトコルは暗号化方式を標準化していません。
既存のウォレットと SDK では、共有鍵を楕円曲線ディフィー・ヘルマン(ECDH)で導出する AES-CBC と AES-GCM の2方式が広く使われています。 各方式は1024バイトのペイロードの一部を暗号学的メタデータ用に確保し、AES-CBC では最大 960バイト、AES-GCM では 996バイト のプレーンテキストを使用できます。
CBC と GCM は相互運用できません
ノードはペイロードを検査せず、同じ 0x0002 フラグの下で両方の方式を受け入れて保存します。
受信者がセキュアメッセージを復号できるのは、送信者と同じ方式をツールが実装している場合だけです。
GCM ツールで作成されたメッセージは CBC だけに対応するツールでは復号できず、その逆も同様です。
手数料⚓︎
転送トランザクションの手数料は送信内容によって異なります。 次の2つの要素の合計です。
- 転送手数料:XEM 金額または付加モザイクに基づきます。
- メッセージ手数料:付加メッセージの長さに基づきます。
転送手数料⚓︎
XEM だけを転送する場合、手数料は送信金額に応じて変わります。
| 送信金額 | コスト |
|---|---|
| 最大19'999 XEM | 0.05 XEM |
| 追加10'000 XEM ごと | +0.05 XEM |
| 250'000 XEM 以上 | 1.25 XEM |
モザイクを転送する場合、手数料は付加された各モザイクの個別手数料の合計です。 各モザイクは次のように価格付けされます。
- 少量で不可分なモザイク(供給量 ≤ 10'000、可分性 0)は一律 0.05 XEM です。
- その他すべてのモザイク は、転送数量とモザイク総供給量から導出した XEM 換算価値 で価格付けされます。 この価値は、XEM だけの転送に使う0.05〜1.25 XEMの手数料階層に、モザイク総供給量が少ないほど大きくなる 供給量割引 を適用して対応付けられます。
モザイクごとの最小手数料は 0.05 XEM です。
モザイク手数料の計算
少量でないモザイクの手数料計算は3段階です。転送数量の XEM 換算価値を計算し、その価値を手数料階層で調べて基本手数料を得てから、供給量割引を引きます。
1. XEM 換算価値
ここで、
- \(\text{8'999'999'999}\) は初期 XEM 供給量(全体単位)です。
- \(\text{atomic\_quantity}\) は転送するモザイク量(原子単位)です。
- \(\text{multiplier}\) は XEM 金額の乗数 です(通常は1)。
- \(\text{total\_atomic\_supply}\) はモザイクの総供給量(原子単位)です:\(\text{supply} \cdot 10^{\text{divisibility}}\)。
2. 基本手数料
得られた価値は、XEM だけの転送と同じ0.05〜1.25 XEMの手数料階層で価格付けされ、モザイクの 基本手数料 になります。
3. 供給量割引
基本手数料から 供給量割引 を引きます。
ここで \(9 \cdot 10^{15}\) は NEM が許可する最大モザイク数量です。
供給量が少ないほど \(\text{xem\_equivalent}\) は大きくなるため、割引がなければ供給量の少ないモザイクは小さな転送でも \(1.25\) XEM の上限に達します。 割引は同じ供給量の対数でこれを相殺するため、希少なモザイクほど大きな補正を受けます。 割引が基本手数料を超えても、最終手数料が 0.05 XEM 未満になることはありません。
例
供給量 \(\text{1'000'000}\)、可分性 0 のモザイクで、乗数1で100単位を送る場合:
- XEM 換算値:\(\frac{\text{8'999'999'999} \cdot 100 \cdot 1}{\text{1'000'000}} = \text{899'999.9999}\)。
- 基本手数料:上記の XEM だけのスケジュールでは、\(\text{10'000}\) XEM の価値ごとに0.05 XEMが加算され、\(\text{250'000}\) XEM以上では1.25 XEMが上限です。\(\text{899'999.9999}\) は \(\text{250'000}\) を超えるため、基本手数料は最大の1.25 XEMです。
- 供給量割引:\(\left\lfloor 0.8 \cdot \ln \! \left( \frac{9 \cdot 10^{15}}{\text{1'000'000}} \right) \right\rfloor \cdot 0.05 = 0.90\) XEM。
最終手数料:\(1.25 - 0.90 = 0.35\) XEM。
メッセージ手数料⚓︎
空でないメッセージには、基本0.05 XEMに加えて、1024バイトの最大値までペイロード32バイトごとに0.05 XEMがかかります。
| メッセージ長 | 追加コスト |
|---|---|
| メッセージなし | なし |
| 1〜31バイト | 0.05 XEM |
| 32〜63バイト | 0.10 XEM |
| 64〜95バイト | 0.15 XEM |
| … | … |
| 1024バイト(最大) | 1.65 XEM |
手数料は保存されるペイロードサイズで計算されます。そのため セキュアメッセージ はプレーンテキストではなく暗号化済みペイロードに対して課金されます。