Documentation ¶
Index ¶
Examples ¶
Constants ¶
View Source
const PercentDenominator = 1_000_000
PercentDenominator is the denominator used to calculate percentages
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Calculator ¶
type Calculator interface {
Calculate(stakedDuration time.Duration, stakedAmount, currentSupply uint64) uint64
}
func NewCalculator ¶
func NewCalculator(c Config) Calculator
Example ¶
const ( day = 24 * time.Hour week = 7 * day stakingDuration = 4 * week stakeAmount = 100_000 * units.Lux // 100k LUX // The current supply can be fetched with the platform.getCurrentSupply API currentSupply = 447_903_489_576_595_361 * units.NanoLux // ~448m LUX ) var ( mainnetRewardConfig = Config{ MaxConsumptionRate: .12 * PercentDenominator, MinConsumptionRate: .10 * PercentDenominator, MintingPeriod: 365 * 24 * time.Hour, SupplyCap: 720 * units.MegaLux, } mainnetCalculator = NewCalculator(mainnetRewardConfig) ) potentialReward := mainnetCalculator.Calculate(stakingDuration, stakeAmount, currentSupply) fmt.Printf("Staking %d nLUX for %s with the current supply of %d nLUX would have a potential reward of %d nLUX", stakeAmount, stakingDuration, currentSupply, potentialReward, )
Output: Staking 100000000000000 nLUX for 672h0m0s with the current supply of 447903489576595361 nLUX would have a potential reward of 473168956104 nLUX
type Config ¶
type Config struct { // MaxConsumptionRate is the rate to allocate funds if the validator's stake // duration is equal to [MintingPeriod] MaxConsumptionRate uint64 `json:"maxConsumptionRate"` // MinConsumptionRate is the rate to allocate funds if the validator's stake // duration is 0. MinConsumptionRate uint64 `json:"minConsumptionRate"` // MintingPeriod is period that the staking calculator runs on. It is // not valid for a validator's stake duration to be larger than this. MintingPeriod time.Duration `json:"mintingPeriod"` // SupplyCap is the target value that the reward calculation should be // asymptotic to. SupplyCap uint64 `json:"supplyCap"` }
Click to show internal directories.
Click to hide internal directories.