From e44729092e0864665baecfd663d03fbc4002d312 Mon Sep 17 00:00:00 2001 From: Hans Moog <hm@mkjc.net> Date: Sun, 28 Jul 2019 23:02:55 +0200 Subject: [PATCH] Feat: moving file to main computer --- packages/mana/mana.go | 28 ++++++++++++++++++++++++++++ packages/mana/mana_test.go | 14 ++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 packages/mana/mana.go create mode 100644 packages/mana/mana_test.go diff --git a/packages/mana/mana.go b/packages/mana/mana.go new file mode 100644 index 00000000..a2706c74 --- /dev/null +++ b/packages/mana/mana.go @@ -0,0 +1,28 @@ +package mana + +import "math" + +func CoinTimeDestroyed(transferredValue uint64, parkedTime uint64) uint64 { + return transferredValue * parkedTime +} + +func ErodedGains(gainsPerInterval uint64, elapsedIntervals uint64) uint64 { + return uint64(float64(gainsPerInterval) * DECAY_FACTOR * (1 - math.Pow(DECAY_FACTOR, float64(elapsedIntervals))) / (1 - DECAY_FACTOR)) +} + +func ManaOfTransfer(value uint64, parkedTime uint64) uint64 { + fullErosionIntervals := parkedTime / DECAY_INTERVAL + + if fullErosionIntervals >= 1 { + gainsPerInterval := CoinTimeDestroyed(value, DECAY_INTERVAL) + + return ErodedGains(gainsPerInterval, fullErosionIntervals) + CoinTimeDestroyed(value, (parkedTime-fullErosionIntervals*DECAY_INTERVAL)) + } else { + return CoinTimeDestroyed(value, parkedTime) + } +} + +const ( + DECAY_INTERVAL = 100 + DECAY_FACTOR = 0.9 +) diff --git a/packages/mana/mana_test.go b/packages/mana/mana_test.go new file mode 100644 index 00000000..018bbea7 --- /dev/null +++ b/packages/mana/mana_test.go @@ -0,0 +1,14 @@ +package mana + +import ( + "fmt" + "testing" +) + +func TestManaOfTransfer(t *testing.T) { + fmt.Println(ManaOfTransfer(50, 99)) + fmt.Println(ManaOfTransfer(50, 100)) + fmt.Println(ManaOfTransfer(50, 200)) + fmt.Println(ManaOfTransfer(50, 290)) + fmt.Println(ManaOfTransfer(50, 300)) +} -- GitLab