NEMモザイク送金手数料をOctaveで4次元グラフにしてみた

[mathjax]

NEMモザイクの送金手数料は、
・総供給量が多いほど手数料は安くなる
・総供給量が少ないほど手数料は安くなる
という、二つの相反する成分によって計算されます。

で、供給量1~9,000,000,000と、可分性0~6の値域で、どこでもっとも手数料が安くなるのか気になるので、GNU Octaveで4次元グラフにしてみました。

ごりごりの数値計算です。

何回か似たような記事を公開しましたが、おさらいしておきます。

XEMの送金手数料は、送金量を\(x \times {10}^6\)(単位はμXEM)とすると

$$ XemFee\left(x\right) = min \left( 0.05 ceiling \left( \frac{x}{10000} \right) , 1.25 \right) $$

です。これは今回関係ありません。

肝心のモザイクの送金手数料は、総供給量を\(s\)、可分性を\(d\)、送金量を\(x \times {10}^d \)(単位はブロックチェーン内部に保存される最小単位。XEMに対するμXEMのように、一般の表示における\({10}^{-d}\))とすると、

\(s < 10000\)かつ\(d=0\)のときは

\[
MosaicFee\left(x\right)=0.05
\]

それ以外の時は

\[
MosaicFee\left(x\right) = max \left( 0.05, XemFee( \frac{8999999999}{s} \times x) – 0.05 floor \left( 0.8 \times log \frac{9000000000 \times {10}^6}{s \times {10}^d} \right) \right)
\]

です。可分性ってなに?という方は、LCNEMの仕事ついでに、NEMモザイクの仕組みを解剖するをご覧ください。

Octaveのコードの一部を以下に載せます。


function ret = XemFee(x)
    ret = min(0.05 * ceil(x / 10000), 1.25);
endfunction

function ret = MosaicFee(s, d, x)
    xemEquivalent = (8999999999 ./ s) .* x;
    adjustment = floor( 0.8 * log( (9000000000 * (10 ^ 6)) ./ (s .* (10 .^ d)) ) );

    ret = max(0.05, XemFee(xemEquivalent) - (0.05 * adjustment));
endfunction

手数料を、供給量、可分性、送金量の3変数関数にしています。

以下、プロット結果です。
色が黄色に近いほど手数料が高いです。スモールビジネスモザイクは考慮していません。

結果として、供給量が多いほど手数料が安く、可分性が小さいほど手数料が安いですね。

モザイクを作る方は、供給量は多めにしておいたほうが良いかもしれないです。