送金可能な最少の金額について

nthong ()
こんにちは

送金で最少の金額や手数料はいくらでしょうか?

以下で参照しておりましたが、最小値は記載されていないようです。
http://neweconomymovement.github.io/#transaction-fees

上記の仕様によりますと、メッセージがない場合で1XEMを送金すると、9XEMの手数料がかかるとなりますが、実際に送金してみると、"FAILURE_INSUFFICIENT_FEE"エラーが返ってきます。

Takanobuさんが提供していただいたプログラムで試しました。
https://github.com/mediaprogramer/mijin-SimpleTransfer

amount, fee, total feeがそのままで実行すると、常に、10,000,000XEMを送金し、 2,000,000XEMの手数料が発生します。
amount, fee, total feeの計算で、剰率の1,000,000を外しますと、1 XEM送金と9XEM手数料となりますが、"FAILURE_INSUFFICIENT_FEE"エラーが返ってきます。


よろしくお願いいたします。

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

まずXEMについてですが、小数桁が6桁存在します。つまり1XEM=1.000000XEMのことであり、これには9.000000XEMの手数料が必要です。
では0.000001XEM の送金にはいくら手数料が必要かというと
LightWallet の計算式で計算すると10.000000XEMが必要となります。

あまりにも手数料値を下げようとすると (10 - 手数料) の計算式が適用され、最大10XEMが取られることになります。
また、その式を用いても手数料値が2よりは下がらないようにリミッターがかけられています。

ちなみにnem.coreに手数料を計算させると12XEMとなりました。
これはちょっと意外でした。手数料を計算するアルゴリズムと手数料をチェックするアルゴリズムは少し違うようです。

少し、勉強になりました。



nthong ()
Takanobuさん、
もう少し説明していただけませんでしょうか?

>>1XEM=1.000000XEMのことであり 、これには9.000000XEMの手数料が必要です

これだと、私が試した送金のデータ(1XEM金額 +9XEM手数料)が正しくと認識して良いでしょうか。 であれば、どうして1XEMで送金すると、"FAILURE_INSUFFICIENT_FEE"エラーが返ってきますか?

※試すために、transfer.jsのsendAjaxRequest()関数の3つの箇所を以下のように修正してみました。

// var amount = parseInt(10 * 1000000, 10);
var amount = 1;

// var fee = mosaics ? mosaicsFee : CALC_MIN_FEE(amount / 1000000);
var fee = mosaics ? mosaicsFee : CALC_MIN_FEE(amount);

// var totalFee = (msgFee + fee) * 1000000;
var totalFee = msgFee + fee;

Takanobu ()
外出先から失礼します。
amount = 1 だと、1xemではなく
0.000001xemになってしまいます。
私のサンプルプログラムは10xemを送金するデモとなっています。

コンピューターは小数で金額計算ができないため、整数値で計算する必要があり、このようなことをしているのだと思います。

取り急ぎ。

nthong ()
Takanobuさん、
なるほど。了解しました。 

NEM API の仕様でも以下が記載されましたね。気にしませんでした。
Each account has a balance which is an integer greater or equal to zero and denotes the number ofmicro NEMs which the account owns. Thus a balance of 123456789 means the account owns 123.456789 NEM.

ありがとうございます。


LHJさん、
そのPOSTが難しいですね。徐々に勉強しておきます。情報の共有、ありがとうございます。


Takanobu ()
解決できてよかったです。
この手数料計算が手間で、しかも実証実験が終わると手数料を設定しなくてもよくなる、という話もあり
結構なハードルだとは思います。