MOSAIC送信について

nthong ()
こんにちは。

Takanobuさんが提供いただいたMOSAIC送信のサンプルについて、わからないところがあります。説明していただければ助かります。
https://github.com/mediaprogramer/mi...MosaicTransfer

MOSAICを送信してみたところ、結果がSUCCESSになったのですが、
・Senderのアカウントを確認すると、balanceが減ったのですが、対象のMOSAICのquantityが変わりません。
・Receiverのアカウントを確認すると、balanceが変わらなく、MOSAICも追加されません。

質問:
1)上記ではMOSAIC送信が成功でしょうか?
2)Receiverのアカウントに送信されてくるMOASICを加えられるために、同じMOSAIC種類をあらかじめに持たせる必要がありますでしょうか?

※ソース中のmosaic_transfer.jsのmosaicTransferRequest()関数で、以下のところに気になっておりました。

var custom = {
'recipient': RECIPIENT_ADDRESS,
'amount': amount,
'fee': totalFee,
'message': message,
'mosaics': [{'mosaicId':MOSAIC_INFO}]
}; 

⇒mosaicsのところで、quantityが指定されていません。これは、どいう設計意図でしょうか?

Takanobu ()
nthong さん、こんにちは。

サンプルプログラム使っていただいてありがとうございます。
このjs はmijinのミの字もまだ知らないころに作成したもので、多分バグだと思います。

改善したjsをすでに開発済みで、みなさんのリクエスト待ちだったこともあり、先ほど公開しました。
https://github.com/mediaprogramer/mijin-SimpleMosaicTransfer2

・複数のMOSAICを同時に送信できます。
・nthongさんご指摘の件が改善されていると思います。

ほったらかしですみません!
質問2) については、同じMOSAICを持たせておく必要はありません。です。受け取ったら即そのMOSAICの所有者となり、
成功していれば、API:/account/mosaic/owned で確認できます。

不明点などあれば、また質問してください。
よろしくお願いします。

nthong ()
Takanobuさん、
プログラムの改善、ありがとうございました。
ちょっと実行してみたところ、MOSAICの送信ができました、受信の方でもMOSAICが受信できました。
また、わからないところがあったら質問させて頂きますので、引き続きよろしくお願いいたします。

nthong ()
こんにちは。

mijinを使用するには、毎回取引を行うと、送料がかかります。特に、MOSAICを適用する場合、送料が普通より多いと思います(例えば、1XEMを送金すると、176.25XEMの送料ぐらいかかります)。
もし、社内のデータをMOSAICとして共有する目的でmijinを使用すれば、データをドンドン共有すると、各アカウントの持っているXEMが早く使い切った状態になると思います。そうなる場合、各アカウントの持っているXEMを改めて付与することは可能でしょうか?(mijinがプライベートブロックチェインのプラットフォームであるため、社内で構築すると、管理アプリがあり、それでアカウントにXEMを付与するイメージを想像しておりますが、できますでしょうか)

takao ()
ちなみに参考までですが、今回はインターネット上でPaaS提供のため、スパム防止のため内部XEMを用いていますが、リリース版では使わずとも使用する事ができるようになる予定です。
セキュリティ上は、膨大な数値でも良いですからXEMを割り振っておくことをお勧めします。盛っていないアカウントは、アクセスできてもトランザクションを発生させることができないからです。

Takanobu ()
こんにちは。

私も手数料を配布する用のマスタアカウントを準備しており、各アカウントのXEM所有数が一定の水準以下になると
自動的に補充する仕組みを構築しております。

takao ()
最悪もっと必要であれば、個別に送金いたしますのですみません。

nthong ()
Takaoさん
>>セキュリティ上は、膨大な数値でも良いですからXEMを割り振っておくことをお勧めします。盛っていないア カウントは、アクセスできてもトランザクションを発生させることができないからです。
セキュリティの件は了解いたしました。ありがとうございます。


Takanobuさん
XEMを配布する仕組み、ありがとうございます。ちなみですが、Multisigのtransfer用のサンプルはありますでしょうか?もし、あったら共有して頂けませんでしょうか?

hayasitd ()
はじめまして。

nem.coreを使ってJavaで開発をしています。

クラスの使い方の話なのか、内部仕様的な話なのか、環境の問題なのかわかりませんが、
モザイク送信時に、モザイクのquantity以外に、TransferTransactionのamountに1000000を指定しなければ、
送信が実行できません。
具体的には以下のようなソースです。

MosaicId mosaicId = new MosaicId(new NamespaceId(NAME_SPACE), MOSAIC_NAME);
TransferTransactionAttachment attachment = new TransferTransactionAttachment();
attachment.addMosaic(mosaicId, Quantity.fromValue(100));

TimeInstant timeInstant = Globals.TIME_PROVIDER.getCurrentTime();

TransferTransaction transaction = new TransferTransaction(
2,
timeInstant,
sender,
recipient,
Amount.fromMicroNem(1000000),
attachment);

モザイクの金額(quantity)自体は1でも100でもなんでもいいのですが、
Amount.fromMicroNem(1000000),
の部分のxem?は10000でもだめで、1000000を指定してようやく
送信が実行できました。

固定で指定するものなのか、
条件によっても変わるのであれば、なにを指定すればいいのかわかりません。

この件に関して、何かご存知の方はいらっしゃいますか。

Takanobu ()
hayasitd さんはじめまして。

こんな議論ができる日を待っておりました(感涙
で、結論ですが、これは仕様です。

Version 2 transfer transactionsを参照ください。
http://bob.nem.ninja/docs/#version-2-transfer-transactions

The amount field of the transaction is interpreted differently for the transaction due to the attachment. The number to multiply the quantities given in the attachment is given by dividing the amount by 1,000,000 (as of this version NIS does not support fractional transfers). So in this example 3,000,000 / 1,000,000 = 3 and thus 3 times the attachment is transferred resulting in 3 silver coin mosaics and 300 XEM being transferred to the recipient.

amount を 1000000 と設定することで アタッチしたmosaic が 1セット送金されます。
xemも一緒に送金したい場合は、amount ではなくて mosaicにアタッチしていきます。
ちなみに3000000と設定すれば、3セット送金されるはずです。(動作確認していません)

この仕様は私たちの開発チームのコアプログラマも見落としてた箇所で、けっこう多くの人がハマってるかもです。

不明な点があれば遠慮なくどうぞー。

Takanobu ()
動いたようで、よかったです。
数少ない実装メンバーとして、これからもよろしくお願いします。

Takanobu ()
Multisig transfer サンプル、ありまぁす!少々お待ちください。

hayasitd ()
Takanobuさん
早速のご返答ありがとうございます。

なるほど、そういう仕様なんですね。
ということは1セット単位なら固定値で問題なさそうですね。

>xemも一緒に送金したい場合は、amount ではなくて mosaicにアタッチしていきます。
これは試していませんでしたがありがとうございます。