[FEATURE] Added Pool Bonus for Prop and PPLNS
This commit is contained in:
parent
af3f164daa
commit
45851ea654
@ -181,8 +181,8 @@ foreach ($aAllBlocks as $iIndex => $aBlock) {
|
||||
}
|
||||
|
||||
// Table header for account shares
|
||||
$strLogMask = "| %5.5s | %-15.15s | %15.15s | %15.15s | %12.12s | %20.20s | %20.20s | %20.20s |";
|
||||
$log->logInfo(sprintf($strLogMask, 'ID', 'Username', 'Valid', 'Invalid', 'Percentage', 'Payout', 'Donation', 'Fee'));
|
||||
$strLogMask = "| %5.5s | %-15.15s | %15.15s | %15.15s | %12.12s | %15.15s | %15.15s | %15.15s | %15.15s |";
|
||||
$log->logInfo(sprintf($strLogMask, 'ID', 'Username', 'Valid', 'Invalid', 'Percentage', 'Payout', 'Donation', 'Fee', 'Bonus'));
|
||||
|
||||
// Loop through all accounts that have found shares for this round
|
||||
foreach ($aTotalAccountShares as $key => $aData) {
|
||||
@ -202,15 +202,21 @@ foreach ($aAllBlocks as $iIndex => $aBlock) {
|
||||
$aData['fee' ] = 0;
|
||||
$aData['donation'] = 0;
|
||||
|
||||
// Calculate pool fees
|
||||
if ($config['fees'] > 0 && $aData['no_fees'] == 0)
|
||||
$aData['fee'] = round($config['fees'] / 100 * $aData['payout'], 8);
|
||||
|
||||
// Calculate pool bonus if it applies, will be paid from liquid assets!
|
||||
if ($config['pool_bonus'] > 0)
|
||||
$aData['pool_bonus'] = round(( $config['pool_bonus'] / 100 ) * $dReward, 8);
|
||||
|
||||
// Calculate donation amount, fees not included
|
||||
$aData['donation'] = round($user->getDonatePercent($user->getUserId($aData['username'])) / 100 * ( $aData['payout'] - $aData['fee']), 8);
|
||||
|
||||
// Verbose output of this users calculations
|
||||
$log->logInfo(
|
||||
sprintf($strLogMask, $aData['id'], $aData['username'], $aData['pplns_valid'], $aData['pplns_invalid'],
|
||||
number_format($aData['percentage'], 8), number_format($aData['payout'], 8), number_format($aData['donation'], 8), number_format($aData['fee'], 8)
|
||||
number_format($aData['percentage'], 8), number_format($aData['payout'], 8), number_format($aData['donation'], 8), number_format($aData['fee'], 8), number_format($aData['pool_bonus'], 8)
|
||||
)
|
||||
);
|
||||
|
||||
@ -225,6 +231,10 @@ foreach ($aAllBlocks as $iIndex => $aBlock) {
|
||||
if ($aData['donation'] > 0)
|
||||
if (!$transaction->addTransaction($aData['id'], $aData['donation'], 'Donation', $aBlock['id']))
|
||||
$log->logFatal('Failed to insert new Donation transaction to database for ' . $aData['username'] . ': ' . $transaction->getCronError() . 'on block ' . $aBlock['id']);
|
||||
// Add new bonus credit
|
||||
if ($aData['pool_bonus'] > 0)
|
||||
if (!$transaction->addTransaction($aData['id'], $aData['pool_bonus'], 'Bonus', $aBlock['id']))
|
||||
$log->logFatal('Failed to insert new Bonus transaction to database for ' . $aData['username'] . ': ' . $transaction->getCronError());
|
||||
}
|
||||
|
||||
// Add full round share statistics
|
||||
|
||||
@ -40,8 +40,8 @@ if (empty($aAllBlocks)) {
|
||||
|
||||
$count = 0;
|
||||
// Table header for account shares
|
||||
$strLogMask = "| %10.10s | %-5.5s | %15.15s | %15.15s | %12.12s | %20.20s | %20.20s | %20.20s |";
|
||||
$log->logInfo(sprintf($strLogMask, 'Block', 'ID', 'Username', 'Valid', 'Invalid', 'Percentage', 'Payout', 'Donation', 'Fee'));
|
||||
$strLogMask = "| %10.10s | %-5.5s | %15.15s | %15.15s | %12.12s | %15.15s | %15.15s | %15.15s | %15.15s | %15.15s |";
|
||||
$log->logInfo(sprintf($strLogMask, 'Block', 'ID', 'Username', 'Valid', 'Invalid', 'Percentage', 'Payout', 'Donation', 'Fee', 'Bonus'));
|
||||
foreach ($aAllBlocks as $iIndex => $aBlock) {
|
||||
// If we have unaccounted blocks without share_ids, they might not have been inserted yet
|
||||
if (!$aBlock['share_id']) {
|
||||
@ -86,18 +86,25 @@ foreach ($aAllBlocks as $iIndex => $aBlock) {
|
||||
// Defaults
|
||||
$aData['fee' ] = 0;
|
||||
$aData['donation'] = 0;
|
||||
$aData['pool_bonus'] = 0;
|
||||
$aData['percentage'] = round(( 100 / $iRoundShares ) * $aData['valid'], 8);
|
||||
$aData['payout'] = round(( $aData['percentage'] / 100 ) * $dReward, 8);
|
||||
|
||||
// Calculate pool fees if they apply
|
||||
if ($config['fees'] > 0 && $aData['no_fees'] == 0)
|
||||
$aData['fee'] = round($config['fees'] / 100 * $aData['payout'], 8);
|
||||
|
||||
// Calculate pool bonus if it applies, will be paid from liquid assets!
|
||||
if ($config['pool_bonus'] > 0)
|
||||
$aData['pool_bonus'] = round(( $config['pool_bonus'] / 100 ) * $dReward, 8);
|
||||
|
||||
// Calculate donation amount, fees not included
|
||||
$aData['donation'] = round($user->getDonatePercent($user->getUserId($aData['username'])) / 100 * ( $aData['payout'] - $aData['fee']), 8);
|
||||
|
||||
// Verbose output of this users calculations
|
||||
$log->logInfo(
|
||||
sprintf($strLogMask, $aBlock['height'], $aData['id'], $aData['username'], $aData['valid'], $aData['invalid'],
|
||||
number_format($aData['percentage'], 8), number_format($aData['payout'], 8), number_format($aData['donation'], 8), number_format($aData['fee'], 8))
|
||||
number_format($aData['percentage'], 8), number_format($aData['payout'], 8), number_format($aData['donation'], 8), number_format($aData['fee'], 8), number_format($aData['pool_bonus'], 8))
|
||||
);
|
||||
|
||||
// Update user share statistics
|
||||
@ -114,6 +121,10 @@ foreach ($aAllBlocks as $iIndex => $aBlock) {
|
||||
if ($aData['donation'] > 0)
|
||||
if (!$transaction->addTransaction($aData['id'], $aData['donation'], 'Donation', $aBlock['id']))
|
||||
$log->logFatal('Failed to insert new Donation transaction to database for ' . $aData['username'] . ': ' . $transaction->getCronError());
|
||||
// Add new bonus credit
|
||||
if ($aData['pool_bonus'] > 0)
|
||||
if (!$transaction->addTransaction($aData['id'], $aData['pool_bonus'], 'Bonus', $aBlock['id']))
|
||||
$log->logFatal('Failed to insert new Bonus transaction to database for ' . $aData['username'] . ': ' . $transaction->getCronError());
|
||||
}
|
||||
|
||||
// Add block as accounted for into settings table
|
||||
|
||||
@ -128,12 +128,13 @@ $config['txfee_auto'] = 0.1;
|
||||
$config['txfee_manual'] = 0.1;
|
||||
|
||||
/**
|
||||
* Block Bonus
|
||||
* Bonus in coins of block bonus
|
||||
* Block & Pool Bonus
|
||||
* Bonus coins for blockfinder or a pool bonus for everyone
|
||||
* https://github.com/MPOS/php-mpos/wiki/Config-Setup#wiki-block-bonus
|
||||
* https://github.com/MPOS/php-mpos/wiki/Config-Setup#wiki-pool-bonus
|
||||
*/
|
||||
$config['block_bonus'] = 0;
|
||||
|
||||
$config['pool_bonus'] = 0;
|
||||
|
||||
/**
|
||||
* Payout System
|
||||
|
||||
Loading…
Reference in New Issue
Block a user