コンテンツにスキップ

転送トランザクション⚓︎

転送トランザクション
あるアカウントから別のアカウントへ 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-CBCAES-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{xem\_equivalent} = \frac{\text{8'999'999'999} \cdot \text{atomic\_quantity} \cdot \text{multiplier}}{\text{total\_atomic\_supply}} \]

ここで、

  • \(\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. 供給量割引

基本手数料から 供給量割引 を引きます。

\[ \text{discount} = \left\lfloor 0.8 \cdot \ln \! \left( \frac{9 \cdot 10^{15}}{\text{total\_atomic\_supply}} \right) \right\rfloor \cdot 0.05 \text{ XEM} \]

ここで \(9 \cdot 10^{15}\) は NEM が許可する最大モザイク数量です。

供給量が少ないほど \(\text{xem\_equivalent}\) は大きくなるため、割引がなければ供給量の少ないモザイクは小さな転送でも \(1.25\) XEM の上限に達します。 割引は同じ供給量の対数でこれを相殺するため、希少なモザイクほど大きな補正を受けます。 割引が基本手数料を超えても、最終手数料が 0.05 XEM 未満になることはありません

供給量 \(\text{1'000'000}\)、可分性 0 のモザイクで、乗数1で100単位を送る場合:

  1. XEM 換算値\(\frac{\text{8'999'999'999} \cdot 100 \cdot 1}{\text{1'000'000}} = \text{899'999.9999}\)
  2. 基本手数料:上記の 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です。
  3. 供給量割引\(\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

手数料は保存されるペイロードサイズで計算されます。そのため セキュアメッセージ はプレーンテキストではなく暗号化済みペイロードに対して課金されます。