public static double AverageShareOfBlockRewardPerSpanFast(AverageShareOfBlockRewardDT data, TimeBlock timeBlock) { // normalize into minerHashRateAsAPercentOfTotal the MinerHashRate / NetworkHashRate using the TimeBlock of the Miner HashRate minerHashRateAsAPercentOfTotal = default;// ToDo: Fix this calculation data.MinerHashRate / data.NetworkHashRate; // normalize the BlockRewardPerSpan to the same span the Miner HashRate span //ToDo Fix this calculation // normalize the BlockRewardPerSpan to the same span the network HashRate span double normalizedBlockCreationSpan = data.AverageBlockCreationSpan.Duration.Ticks / data.NetworkHashRate.HashRateTimeSpan.Duration().Ticks; double normalizedBlockRewardPerSpan = data.BlockRewardPerBlock / (data.AverageBlockCreationSpan.Duration.Ticks * normalizedBlockCreationSpan); // The number of block rewards found, on average, within a given TimeBlock, is number of blocks in the span, times the fraction of the NetworkHashRate contributed by the miner return(normalizedBlockRewardPerSpan * (minerHashRateAsAPercentOfTotal.HashRatePerTimeSpan / data.NetworkHashRate.HashRatePerTimeSpan)); }
public static double AverageShareOfBlockRewardPerSpanSafe(AverageShareOfBlockRewardDT data, TimeBlock timeSpan) { // ToDo: Add parameter checking return(AverageShareOfBlockRewardPerSpanFast(data, timeSpan)); }