From bc4f5eb7aee5666fd4292b289a5ddf6bc13f1238 Mon Sep 17 00:00:00 2001 From: XMR Miners Club <71138782+xmrminers@users.noreply.github.com> Date: Sun, 3 Jan 2021 21:37:16 -0500 Subject: [PATCH] Update blockUnlocker.js support for solofee and finders reward --- lib/blockUnlocker.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/blockUnlocker.js b/lib/blockUnlocker.js index 2355a98..e6673eb 100644 --- a/lib/blockUnlocker.js +++ b/lib/blockUnlocker.js @@ -223,7 +223,9 @@ function runInterval () { block.reward ].join(':')]) - let feePercent = config.blockUnlocker.poolFee / 100 + let feePercent = (config.blockUnlocker.poolFee > 0 ? config.blockUnlocker.poolFee : 0) / 100 + if (block.rewardType === 'solo') + feePercent = (config.blockUnlocker.soloFee >= 0 ? config.blockUnlocker.soloFee : (config.blockUnlocker.poolFee > 0 ? config.blockUnlocker.poolFee : 0)) / 100 if (Object.keys(donations) .length) { @@ -235,9 +237,18 @@ function runInterval () { } } - let reward = Math.round(block.reward - (block.reward * feePercent)) + let reward = 0 + let finderReward = 0 - log('info', logSystem, 'Unlocked %d block with reward %d and donation fee %d. Miners reward: %d', [block.height, block.reward, feePercent, reward]) + if (block.rewardType === 'solo') { + reward = Math.round(block.reward - (block.reward * feePercent)) + log('info', logSystem, 'Unlocked SOLO block %d with reward %d and donation fee %d. Miners reward: %d', [block.height, block.reward, feePercent, reward]) + } else { + let finderPercent = (config.blockUnlocker.finderReward > 0 ? config.blockUnlocker.finderReward : 0) / 100 + finderReward = Math.round(block.reward * finderPercent) + reward = Math.round(block.reward - (block.reward * (feePercent + finderPercent))) + log('info', logSystem, 'Unlocked PROP block %d with reward %d, finders fee %d, and donation fee %d. Miners reward: %d Finders Reward: %d', [block.height, block.reward, finderPercent, feePercent, reward, finderReward]) + } if (block.workerScores) { let totalScore = parseFloat(block.score) @@ -251,7 +262,7 @@ function runInterval () { .forEach(function (worker) { let percent = block.workerScores[worker] / totalScore let workerReward = Math.round(reward * percent) - payments[worker] = (payments[worker] || 0) + workerReward + payments[worker] = block.login === worker ? (payments[worker] || 0) + (workerReward + finderReward) : (payments[worker] || 0) + workerReward log('info', logSystem, 'PROP Block %d payment to %s for %d%% of total block score: %d', [block.height, worker, percent * 100, payments[worker]]) }) }