fomo 游戏的 key 价格计算关键代码解读( F3DKeysCalcLong.sol 中的 eth(uint256 keys)方法 )
return ((78125000).mul(_keys.sq()).add(((149999843750000).mul(_keys.mul(1000000000000000000))) / (2))) / ((1000000000000000000).sq());
上面最后 除以 的 1e18 ^ 2 就是 2个 18 位, 一个是 key 有18位小数, 一个是 eth 也是18位
然后2部分 加起来, 一部分是指数级增长, 一部分是等差的, 我认为后面的等差的是基础, 前面的是附加的, 当然这完全看谁比谁大
所以 这2个常量 78125000(控制附加部分增长速度, 指数级增长), 149999843750000(控制基础部分增长速度, 等比增长)
第一个常量越大, 增长速度越快, 第二个常量越大, key 的价格越高, 包括初始就很高, 然后
初始 key 价格为: 149999843750000/2/1e18 + 78125000/1e18 eth = 0.000075 eth
最后, 如果想修改这2个数, 通过上面精简出来计算初始 key 的公式, 算出想要的初始值 及 增长速度, 当然还需要修改 keys(uint256 eth) 里面的实现, 下面是我总结的对应规律, 根据2个常量计算出 keys 公式中对应常量的值
// (from keys)
// 156250000 = 78125000 * 2 ;
// 312500000000000000000000000 = 78125000 * 4e18
// 5624988281256103515625000000000000000000000000000000000000000000 = ((149999843750000/2)^2) * 1e36
// 74999921875000000000000000000000 = 149999843750000/2 * 1e18
我也不知道这么长的数字如何计算, 只能建议尽量都是整数吧, 好几个计算器都不好使, 自己写 java 代码都靠不住