はじめに
前回に引き続き、Nemkitの既得バランス系の記事第2弾です。
今回は 送金後の既得バランスを事前に計算する機能 を作ります。
目次
- Vested Schedule: 日ごとに既得バランスがいくら増えていくか
- After Vested Balance: XEM送金後に残る既得バランスを調べる←今回これ
- Keep10k: 10,000XEMの既得バランスを残して送れる上限を計算する
送金後の既得バランス計算とは?
送金を実行する前に「送金後の既得バランスがいくらになるか」を瞬時に計算してくれる機能です。
NEM では、残高に対する既得バランスの割合が重要で、送金すると残高だけでなく既得バランスも同じ割合で減少します。この仕組みを理解していないと、うっかり大きな額を送金してハーベスト要件(既得バランス10,000 XEM)を下回ってしまう…なんてことも。
必要な情報
| 項目 | 説明 | セル位置(例) |
|---|---|---|
| 残高 | 現在の残高(1 XEM 以上) | B2 |
| 既得残高 | 現在の既得残高(0 以上) | B3 |
| 送金額 | 送金したい金額(0 以上) | B4 |
| 手数料 | 手数料(通常 0.05 XEM) | B5 |
計算ロジック
計算式はシンプルです:
既得割合 = 既得残高 ÷ 残高
送金後既得残高 = 既得残高 - (送金額 + 手数料) × 既得割合
結果 = 小数第6位で切り捨て
例えば、残高が 100,000 XEM、既得残高が 50,000 XEM(既得割合 50%)の状態で 10,000 XEM を送金すると:
既得割合 = 50,000 ÷ 100,000 = 0.5
送金後既得残高 = 50,000 - (10,000 + 0.05) × 0.5 = 44,997.475 XEM
Google Spreadsheet 実装
セル配置
| A | B | C | |
|---|---|---|---|
| 1 | 項目 | 値 | |
| 2 | 残高 | 100000 | |
| 3 | 既得残高 | 50000 | |
| 4 | 送金額 | 10000 | |
| 5 | 手数料 | 0.05 | |
| 6 | |||
| 7 | 送金後既得残高 | =FLOOR((B3-(B4+B5)*(B3/B2))*100000)/100000 |
数式の解説
B7セルに入力する数式:
=FLOOR((B3-(B4+B5)*(B3/B2))*100000)/100000
数式の内訳:
-
B3/B2: 既得割合を計算 -
(B4+B5): 送金額と手数料の合計 -
(B4+B5)*(B3/B2): 減少する既得残高 -
B3-(B4+B5)*(B3/B2): 送金後の既得残高 -
FLOOR(...*100000)/100000: 小数第6位で切り捨て
たったこれだけです!
より読みやすい数式(中間計算を表示)
計算過程を可視化したい場合は、以下のように分割できます:
| A | B | |
|---|---|---|
| 2 | 残高 | 100000 |
| 3 | 既得残高 | 50000 |
| 4 | 送金額 | 10000 |
| 5 | 手数料 | 0.05 |
| 6 | ||
| 7 | 既得割合 | =B3/B2 |
| 8 | 送金合計 | =B4+B5 |
| 9 | 減少する既得残高 | =B8*B7 |
| 10 | 送金後既得残高 | =FLOOR((B3-(B4+B5)*(B3/B2))*1000000)/1000000 |
こうすると、各ステップの計算結果が確認できて分かりやすいですね。
実際の計算例
送金前:
- 残高:58,390.30xem
- 既得残高:58,353.77xem
- 送金額: 10,000xem
- 手数料: 0.1xem
想定された送金後既得バランス:
NemKit
SpreadSheet
いずれも 48,359.92876XEM
実際の既得バランス
48,359.928764xem
小数点を丸める桁数が違うので若干差異はありますが問題ないかと。
(悲しい哉、XEMがやっすいので万単位の送金の弾数が多いw)
まとめ
これで事前計算することができ、想定より既得バランスが減ってしまってハーベーストが止まる!といったことも回避できると思います。
ただし、皆さんこの機能を使うときって、ハーベスティングしたまま安全にXEMを送りたい時出はないでしょうか?
次回は、シリーズ最終回として10,000 XEM の既得残高を維持しながら送金できる最大額を自動計算する方法を紹介します。
これは私が知る限り類似サービスが存在しなかった独自機能だったかなと思っています。お楽しみに!



