我确信这对于数学上比我更好的人来说足够简单,但解决方案正在逃避我。
我需要一个数字,块链高度,每隔50万块,将奖励减少5%。
原始奖励是每块3。因此,块500001将是2.85,块1,000,001将是2.7075,块1,500,001将是2.572125等。
这种情况一直阻止30,000,000,所以使用案例或者如果不实际。
答案 0 :(得分:3)
我无法确定你是否需要持续减少,或者突然之间"在穿越下一个500,000之后减少(例如,499,999区块的奖励仍为3%?)。
假设你需要"突然"减少,你首先计算减少的数量。
var blocks = 10000000; // 10 million, just as an example
var reductions = Math.floor(blocks / 500000);
然后将减少额用于奖励
var reward = 0.03 * Math.pow(0.95, reductions);
这将取消5%(乘以0.95)正确的次数。结果将是十进制百分比(如0.0285表示2.85%等)。
如果您需要持续缩减,实际上只需从上面的缩减计算中删除Math.floor
。