NEMのモザイク送信についての誤解

NEM-sdkを使ってモザイクの送信を試していたのですが、自分の想像と違う動作だったので、実際の動きからその仕様を整理してみました。

といってもキチンと仕様書には書いてあったのでよく読めという話でしかないのですが。

この章の後半にちらっと書いてあるのですが、日本語訳のほうをみたらわかりやすいでしょう。

トランザクションのamountフィールドは、添付物によるトランザクションにより異なって解釈されます。

アタッチメントに記載された数量を掛ける数は金額を1,000,000で割ることによって与えられます(このバージョンでは、NISは分数転送をサポートしていません)。この例では3,000,000 / 1,000,000 = 3であり、アタッチメントが3回送信され、3つのsilverモザイクと300XEMが受信者に送信されます。

xemもネームスペースnem以下のモザイクであるため(nem:xem)、バージョン2でxemを転送する場合は、xemをモザイクとして添付することになります。

この際、バージョン1で指定していた送信するxemを表すamountは、添付したモザイクの組み合わせを何口送るかということに使用されます。

例えば、10xem、10mozを送信しようとしたときに、amountが1ならば、10xem、10mozが、amountが2ならば、20xem、20mozが送信されるということです。

なので、バージョン2のときのamountは送信されるxemの量ではないため、残高から引かれるものではありません。

NanoWalletでは「モザイクを送信」を選択すると、1xemが固定でセットされますが、この1xemは送信されるものではないということになりますね。

(画面だけ見ているとちょっとややこしいし、説明されないとわけがわかりませんよね…?私だけ?)

というわけで、モザイクを送信するときは、トランザクションにモザイクを添付し、amountは倍率として考えてセットする(通常は1、つまり1倍でいいかと)

ブラウザのデバッガなどで量のフィールドを2などに書き換えてその動作を確認することもできます。

NanoWalletでは「モザイクを送信」にチェックをいれると1をセットしてくれるので、この辺の仕様を気にせずモザイクを添付して、送りたい量を入力すればよいです。

ちなみにデフォルトで添付されているxemは、デフォルトなら0xemの送信なので送られてしまうことはないです。

ただし、0xem(のモザイク)を送ったというトランザクションになるので、それが気になるなら削除することもできます。

何にせよ、自分で理解していないまま、なにか操作をするというのは失敗の元ですし、不安しかないでしょう。

もし不慣れな操作をする場合は、テストネットで試してみるのが良いと思います。

拙作ですがテストネット用のxemが手に入るファウセットを運用しています。

NanoWalletにはテストネットのアカウントも登録できますし、何か試すときに一つくらいは用意しておくとお試しができて良いと思います。

(テストネットのxemが不要になったら TDWWYDGQNBKSAJBSHZX7QWVX7WNVAWWB7HGPWRB2 へ送り返してくださいね)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする