public virtual Task <decimal> UpdateBlockRewardBalancesAsync(IDbConnection con, IDbTransaction tx, Block block, PoolConfig pool) { var blockRewardRemaining = block.Reward; // Distribute funds to configured reward recipients foreach (var recipient in poolConfig.RewardRecipients.Where(x => x.Percentage > 0)) { var amount = block.Reward * (recipient.Percentage / 100.0m); var address = recipient.Address; blockRewardRemaining -= amount; // skip transfers from pool wallet to pool wallet if (address != poolConfig.Address) { logger.Info(() => $"Adding {FormatAmount(amount)} to balance of {address}"); balanceRepo.AddAmount(con, tx, poolConfig.Id, poolConfig.Coin.Type, address, amount, $"Reward for block {block.BlockHeight}"); } } return(Task.FromResult(blockRewardRemaining)); }
public Task CalculateBlockEffortAsync(Block block, ulong accumulatedBlockShareDiff) { block.Effort = (double)accumulatedBlockShareDiff / block.NetworkDifficulty; return(Task.FromResult(true)); }
public virtual Task CalculateBlockEffortAsync(Block block, double accumulatedBlockShareDiff) { block.Effort = accumulatedBlockShareDiff / block.NetworkDifficulty; return(Task.FromResult(true)); }
public Task <decimal> UpdateBlockRewardBalancesAsync(IDbConnection con, IDbTransaction tx, Block block, PoolConfig pool) { var blockRewardRemaining = block.Reward; // Distribute funds to configured reward recipients foreach (var recipient in poolConfig.RewardRecipients.Where(x => x.Percentage > 0)) { var amount = block.Reward * (recipient.Percentage / 100.0m); var address = recipient.Address; blockRewardRemaining -= amount; logger.Info(() => $"Adding {FormatAmount(amount)} to balance of {address}"); balanceRepo.AddAmount(con, tx, poolConfig.Id, poolConfig.Coin.Type, address, amount); } // Deduct static reserve for tx fees blockRewardRemaining -= EthereumConstants.StaticTransactionFeeReserve; return(Task.FromResult(blockRewardRemaining)); }