はじめに
カタパルトのCowが出ました。どうやら、手数料の設定ができるようになったみたいです。
手数料設定
minFeeMultiplier = 0
やってみる
設定
最低手数料積?は100にしてみます。
minFeeMultiplier = 100
まず、使用するアカウントの残高を見てみます。
初期の残高は、[2811359534,963522852]
が[1004000100,0]
あります。
では、トランザクションを送信していこうと思います。
手数料なし
はじめは、手数料なし。送金金額は1000000
。
送れませんでした。
ノードのコンソールには、このようなログが記録されていました。
api-node-0_1 | 2019-02-22 00:47:01.007738 0x00007ff396fed700: <info> (chain::UtUpdater.cpp@144) dropping transaction 4BD3CC536CCECC8FCA9C2275844C136F454B9FD75464D5C12711DE04060F0409 with max fee 0 because min fee is 16500
peer-node-1_1 | 2019-02-22 00:47:01.218005 0x00007fc6dcff1700: <info> (chain::UtUpdater.cpp@144) dropping transaction 4BD3CC536CCECC8FCA9C2275844C136F454B9FD75464D5C12711DE04060F0409 with max fee 0 because min fee is 16500
peer-node-0_1 | 2019-02-22 00:47:01.370277 0x00007f8fe3ff7700: <info> (chain::UtUpdater.cpp@144) dropping transaction 4BD3CC536CCECC8FCA9C2275844C136F454B9FD75464D5C12711DE04060F0409 with max fee 0 because min fee is 16500
手数料は最低16500
でないとだめそうです。
手数料付き
次は、手数料1000000
で送ってみます。
送れました。
"maxFee": "1000000"
と書いてあります。
残高はどうなったでしょうか
[1004000100,0]
から、[1002000200,0]
になりました。
1999900
少なくなりました。
送金金額を差し引くと、999900
引かれたことになります。指定した手数料より少し小さいですね。
手数料の計算
以上の出来事から手数料の計算について推測します(ソースを見ればわかると思うけど、見かたがわからない)。
- 設定した手数料を超えない最大のトランザクションサイズ倍数が引かれる。
- 最低手数料は、トランザクションサイズと
minFeeMultiplier
の積である。
まず、今回送信したトランスファートランザクションの先頭4バイトは、A5000000
となっており、これはサイズが165バイトであることを意味します。
なので、手数料0で送ると16500
以上出せと怒られたのだと思います。
また、999900
は、165 * 6060
なので、たぶん、トランザクションサイズに関係しているのだと思いました。
ハーベスト
手数料として引かれた金額は、ブロック作成者にいっているのでしょうか。見てみます。
まえ
あと
[2811359534,963522852]
が、[3969189972,95248]
から[3970189872,95248]
に増えました。
差分はしっかりと999900
になってます。
おわりに
この仕様はこれからまた変わっていくと思います。