[UPDATE] Proper implementation of target bits
* [ADDED] New Config Option: Algorithm * scrypt and sha256d supported right now * might add SHA coin support across MPOS * Compatible with previous implementation * [REMOVED] config option: pps_target * Replaced by config option: algorithm * Please update your config, defaults to srypt now! * [ADDED] Unpaid Shares in Dashboard * [MODIFIED] User estshares from DB query instead template math
This commit is contained in:
parent
3326ce0927
commit
a6f9c25b5b
@ -63,8 +63,7 @@ if ($config['pps']['reward']['type'] == 'blockavg' && $block->getBlockCount() >
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Per-share value to be paid out to users
|
// Per-share value to be paid out to users
|
||||||
$pps_value = round($pps_reward / (pow(2, $config['pps_target']) * $dDifficulty), 12);
|
$pps_value = round($pps_reward / (pow(2, $config['target_bits']) * $dDifficulty), 12);
|
||||||
echo (pow(2, $config['pps_target']) * $dDifficulty);
|
|
||||||
|
|
||||||
|
|
||||||
// Find our last share accounted and last inserted share for PPS calculations
|
// Find our last share accounted and last inserted share for PPS calculations
|
||||||
|
|||||||
@ -1,5 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
// SHA/Scrypt check
|
||||||
|
|
||||||
|
if (empty($config['algorithm']) || $config['algorithm'] == 'scrypt') {
|
||||||
|
$config['target_bits'] = 16;
|
||||||
|
} else {
|
||||||
|
$config['target_bits'] = 32;
|
||||||
|
}
|
||||||
// Default classes
|
// Default classes
|
||||||
require_once(CLASS_DIR . '/debug.class.php');
|
require_once(CLASS_DIR . '/debug.class.php');
|
||||||
require_once(INCLUDE_DIR . '/lib/KLogger.php');
|
require_once(INCLUDE_DIR . '/lib/KLogger.php');
|
||||||
|
|||||||
@ -65,7 +65,7 @@ class Statistics {
|
|||||||
b.*,
|
b.*,
|
||||||
a.username AS finder,
|
a.username AS finder,
|
||||||
a.is_anonymous AS is_anonymous,
|
a.is_anonymous AS is_anonymous,
|
||||||
ROUND((difficulty * 65535) / POW(2, (" . $this->config['difficulty'] . " -16)), 0) AS estshares
|
ROUND((difficulty * POW(2, 32 - " . $this->config['target_bits'] . ")) / POW(2, (" . $this->config['difficulty'] . " -16)), 0) AS estshares
|
||||||
FROM " . $this->block->getTableName() . " AS b
|
FROM " . $this->block->getTableName() . " AS b
|
||||||
LEFT JOIN " . $this->user->getTableName() . " AS a
|
LEFT JOIN " . $this->user->getTableName() . " AS a
|
||||||
ON b.account_id = a.id
|
ON b.account_id = a.id
|
||||||
@ -90,7 +90,7 @@ class Statistics {
|
|||||||
b.*,
|
b.*,
|
||||||
a.username AS finder,
|
a.username AS finder,
|
||||||
a.is_anonymous AS is_anonymous,
|
a.is_anonymous AS is_anonymous,
|
||||||
ROUND((difficulty * 65535) / POW(2, (" . $this->config['difficulty'] . " -16)), 0) AS estshares
|
ROUND((difficulty * POW(2, 32 - " . $this->config['target_bits'] . ")) / POW(2, (" . $this->config['difficulty'] . " -16)), 0) AS estshares
|
||||||
FROM " . $this->block->getTableName() . " AS b
|
FROM " . $this->block->getTableName() . " AS b
|
||||||
LEFT JOIN " . $this->user->getTableName() . " AS a
|
LEFT JOIN " . $this->user->getTableName() . " AS a
|
||||||
ON b.account_id = a.id
|
ON b.account_id = a.id
|
||||||
@ -170,11 +170,11 @@ class Statistics {
|
|||||||
SELECT
|
SELECT
|
||||||
(
|
(
|
||||||
(
|
(
|
||||||
SELECT IFNULL(ROUND(SUM(IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty)) * 65536 / ? / 1000), 0) AS hashrate
|
SELECT IFNULL(ROUND(SUM(IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty)) * POW(2, " . $this->config['target_bits'] . ") / ? / 1000), 0) AS hashrate
|
||||||
FROM " . $this->share->getTableName() . "
|
FROM " . $this->share->getTableName() . "
|
||||||
WHERE time > DATE_SUB(now(), INTERVAL ? SECOND)
|
WHERE time > DATE_SUB(now(), INTERVAL ? SECOND)
|
||||||
) + (
|
) + (
|
||||||
SELECT IFNULL(ROUND(SUM(IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty)) * 65536 / ? / 1000), 0) AS hashrate
|
SELECT IFNULL(ROUND(SUM(IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty)) * POW(2, " . $this->config['target_bits'] . ") / ? / 1000), 0) AS hashrate
|
||||||
FROM " . $this->share->getArchiveTableName() . "
|
FROM " . $this->share->getArchiveTableName() . "
|
||||||
WHERE time > DATE_SUB(now(), INTERVAL ? SECOND)
|
WHERE time > DATE_SUB(now(), INTERVAL ? SECOND)
|
||||||
)
|
)
|
||||||
@ -370,14 +370,14 @@ class Statistics {
|
|||||||
$stmt = $this->mysqli->prepare("
|
$stmt = $this->mysqli->prepare("
|
||||||
SELECT
|
SELECT
|
||||||
(
|
(
|
||||||
SELECT IFNULL(ROUND(SUM(IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty)) * 65536 / ? / 1000), 0) AS hashrate
|
SELECT IFNULL(ROUND(SUM(IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty)) * POW(2, " . $this->config['target_bits'] . ") / ? / 1000), 0) AS hashrate
|
||||||
FROM " . $this->share->getTableName() . " AS s,
|
FROM " . $this->share->getTableName() . " AS s,
|
||||||
" . $this->user->getTableName() . " AS u
|
" . $this->user->getTableName() . " AS u
|
||||||
WHERE u.username = SUBSTRING_INDEX( s.username, '.', 1 )
|
WHERE u.username = SUBSTRING_INDEX( s.username, '.', 1 )
|
||||||
AND s.time > DATE_SUB(now(), INTERVAL ? SECOND)
|
AND s.time > DATE_SUB(now(), INTERVAL ? SECOND)
|
||||||
AND u.id = ?
|
AND u.id = ?
|
||||||
) + (
|
) + (
|
||||||
SELECT IFNULL(ROUND(SUM(IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty)) * 65536 / ? / 1000), 0) AS hashrate
|
SELECT IFNULL(ROUND(SUM(IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty)) * POW(2, " . $this->config['target_bits'] . ") / ? / 1000), 0) AS hashrate
|
||||||
FROM " . $this->share->getArchiveTableName() . " AS s,
|
FROM " . $this->share->getArchiveTableName() . " AS s,
|
||||||
" . $this->user->getTableName() . " AS u
|
" . $this->user->getTableName() . " AS u
|
||||||
WHERE u.username = SUBSTRING_INDEX( s.username, '.', 1 )
|
WHERE u.username = SUBSTRING_INDEX( s.username, '.', 1 )
|
||||||
@ -392,7 +392,29 @@ class Statistics {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getUserUnpaidPPSShares($account_id, $last_paid_pps_id) {
|
||||||
|
$this->debug->append("STA " . __METHOD__, 4);
|
||||||
|
if ($this->getGetCache() && $data = $this->memcache->get(__FUNCTION__ . $account_id)) return $data;
|
||||||
|
$stmt = $this->mysqli->prepare("
|
||||||
|
SELECT
|
||||||
|
ROUND(IFNULL(SUM(IF(s.difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty)), 0) / POW(2, (" . $this->config['difficulty'] . " - 16)), 0) AS total
|
||||||
|
FROM " . $this->share->getTableName() . " AS s
|
||||||
|
JOIN " . $this->user->getTableName() . " AS a
|
||||||
|
ON a.username = SUBSTRING_INDEX( s.username, '.', 1 )
|
||||||
|
AND a.id = ?
|
||||||
|
AND s.id > ?");
|
||||||
|
if ($this->checkStmt($stmt) && $stmt->bind_param("ii", $account_id, $last_paid_pps_id) && $stmt->execute() && $result = $stmt->get_result() )
|
||||||
|
return $this->memcache->setCache(__FUNCTION__ . $account_id, $result->fetch_object()->total);
|
||||||
|
$this->debug->append("Failed fetching average share dificulty: " . $this->mysqli->error, 3);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get average share difficulty across all workers for user
|
||||||
|
* @param account_id int Account ID
|
||||||
|
* @param interval int Data interval in seconds
|
||||||
|
* @return double Share difficulty or 0
|
||||||
|
**/
|
||||||
public function getUserShareDifficulty($account_id, $interval=600) {
|
public function getUserShareDifficulty($account_id, $interval=600) {
|
||||||
$this->debug->append("STA " . __METHOD__, 4);
|
$this->debug->append("STA " . __METHOD__, 4);
|
||||||
if ($this->getGetCache() && $data = $this->memcache->get(__FUNCTION__ . $account_id)) return $data;
|
if ($this->getGetCache() && $data = $this->memcache->get(__FUNCTION__ . $account_id)) return $data;
|
||||||
@ -454,7 +476,7 @@ class Statistics {
|
|||||||
$this->debug->append("STA " . __METHOD__, 4);
|
$this->debug->append("STA " . __METHOD__, 4);
|
||||||
if ($data = $this->memcache->get(__FUNCTION__ . $worker_id)) return $data;
|
if ($data = $this->memcache->get(__FUNCTION__ . $worker_id)) return $data;
|
||||||
$stmt = $this->mysqli->prepare("
|
$stmt = $this->mysqli->prepare("
|
||||||
SELECT IFNULL(ROUND(SUM(IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty)) * 65536 / 600 / 1000), 0) AS hashrate
|
SELECT IFNULL(ROUND(SUM(IF(difficulty=0, POW(2, (" . $this->config['difficulty'] . " - 16)), difficulty)) * POW(2, " . $this->config['target_bits'] . ") / 600 / 1000), 0) AS hashrate
|
||||||
FROM " . $this->share->getTableName() . " AS s,
|
FROM " . $this->share->getTableName() . " AS s,
|
||||||
" . $this->user->getTableName() . " AS u
|
" . $this->user->getTableName() . " AS u
|
||||||
WHERE u.username = SUBSTRING_INDEX( s.username, '.', 1 )
|
WHERE u.username = SUBSTRING_INDEX( s.username, '.', 1 )
|
||||||
@ -524,7 +546,7 @@ class Statistics {
|
|||||||
a.username AS account,
|
a.username AS account,
|
||||||
a.donate_percent AS donate_percent,
|
a.donate_percent AS donate_percent,
|
||||||
a.is_anonymous AS is_anonymous,
|
a.is_anonymous AS is_anonymous,
|
||||||
IFNULL(ROUND(SUM(t1.difficulty) * 65536 / 600 / 1000, 2), 0) AS hashrate
|
IFNULL(ROUND(SUM(t1.difficulty) * POW(2, " . $this->config['target_bits'] . ") / 600 / 1000, 2), 0) AS hashrate
|
||||||
FROM
|
FROM
|
||||||
(
|
(
|
||||||
SELECT IFNULL(IF(difficulty=0, pow(2, (" . $this->config['difficulty'] . " - 16)), difficulty), 0) AS difficulty, username FROM " . $this->share->getTableName() . " WHERE time > DATE_SUB(now(), INTERVAL 10 MINUTE) AND our_result = 'Y'
|
SELECT IFNULL(IF(difficulty=0, pow(2, (" . $this->config['difficulty'] . " - 16)), difficulty), 0) AS difficulty, username FROM " . $this->share->getTableName() . " WHERE time > DATE_SUB(now(), INTERVAL 10 MINUTE) AND our_result = 'Y'
|
||||||
@ -553,7 +575,7 @@ class Statistics {
|
|||||||
if ($data = $this->memcache->get(__FUNCTION__ . $account_id)) return $data;
|
if ($data = $this->memcache->get(__FUNCTION__ . $account_id)) return $data;
|
||||||
$stmt = $this->mysqli->prepare("
|
$stmt = $this->mysqli->prepare("
|
||||||
SELECT
|
SELECT
|
||||||
IFNULL(ROUND(SUM(IF(s.difficulty=0, pow(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty)) * 65536/3600/1000), 0) AS hashrate,
|
IFNULL(ROUND(SUM(IF(s.difficulty=0, pow(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty)) * POW(2, " . $this->config['target_bits'] . ") / 3600 / 1000), 0) AS hashrate,
|
||||||
HOUR(s.time) AS hour
|
HOUR(s.time) AS hour
|
||||||
FROM " . $this->share->getTableName() . " AS s, accounts AS a
|
FROM " . $this->share->getTableName() . " AS s, accounts AS a
|
||||||
WHERE time < NOW() - INTERVAL 1 HOUR
|
WHERE time < NOW() - INTERVAL 1 HOUR
|
||||||
@ -563,7 +585,7 @@ class Statistics {
|
|||||||
GROUP BY HOUR(time)
|
GROUP BY HOUR(time)
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT
|
SELECT
|
||||||
IFNULL(ROUND(SUM(IF(s.difficulty=0, pow(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty)) * 65536/3600/1000), 0) AS hashrate,
|
IFNULL(ROUND(SUM(IF(s.difficulty=0, pow(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty)) * POW(2, " . $this->config['target_bits'] . ") / 3600 / 1000), 0) AS hashrate,
|
||||||
HOUR(s.time) AS hour
|
HOUR(s.time) AS hour
|
||||||
FROM " . $this->share->getArchiveTableName() . " AS s, accounts AS a
|
FROM " . $this->share->getArchiveTableName() . " AS s, accounts AS a
|
||||||
WHERE time < NOW() - INTERVAL 1 HOUR
|
WHERE time < NOW() - INTERVAL 1 HOUR
|
||||||
@ -594,7 +616,7 @@ class Statistics {
|
|||||||
if ($this->getGetCache() && $data = $this->memcache->get(__FUNCTION__)) return $data;
|
if ($this->getGetCache() && $data = $this->memcache->get(__FUNCTION__)) return $data;
|
||||||
$stmt = $this->mysqli->prepare("
|
$stmt = $this->mysqli->prepare("
|
||||||
SELECT
|
SELECT
|
||||||
IFNULL(ROUND(SUM(IF(s.difficulty=0, pow(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty)) * 65536/3600/1000), 0) AS hashrate,
|
IFNULL(ROUND(SUM(IF(s.difficulty=0, pow(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty)) * POW(2, " . $this->config['target_bits'] . ") / 3600 / 1000), 0) AS hashrate,
|
||||||
HOUR(s.time) AS hour
|
HOUR(s.time) AS hour
|
||||||
FROM " . $this->share->getTableName() . " AS s
|
FROM " . $this->share->getTableName() . " AS s
|
||||||
WHERE time < NOW() - INTERVAL 1 HOUR
|
WHERE time < NOW() - INTERVAL 1 HOUR
|
||||||
@ -602,7 +624,7 @@ class Statistics {
|
|||||||
GROUP BY HOUR(time)
|
GROUP BY HOUR(time)
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT
|
SELECT
|
||||||
IFNULL(ROUND(SUM(IF(s.difficulty=0, pow(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty)) * 65536/3600/1000), 0) AS hashrate,
|
IFNULL(ROUND(SUM(IF(s.difficulty=0, pow(2, (" . $this->config['difficulty'] . " - 16)), s.difficulty)) * POW(2, " . $this->config['target_bits'] . ") / 3600 / 1000), 0) AS hashrate,
|
||||||
HOUR(s.time) AS hour
|
HOUR(s.time) AS hour
|
||||||
FROM " . $this->share->getArchiveTableName() . " AS s
|
FROM " . $this->share->getArchiveTableName() . " AS s
|
||||||
WHERE time < NOW() - INTERVAL 1 HOUR
|
WHERE time < NOW() - INTERVAL 1 HOUR
|
||||||
|
|||||||
@ -20,6 +20,17 @@ define('DEBUG', 0);
|
|||||||
// SALT used to hash passwords
|
// SALT used to hash passwords
|
||||||
define('SALT', 'PLEASEMAKEMESOMETHINGRANDOM');
|
define('SALT', 'PLEASEMAKEMESOMETHINGRANDOM');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Underlying coin algorithm that you are mining on. Set this to whatever your coin needs:
|
||||||
|
*
|
||||||
|
* Options:
|
||||||
|
* sha256d : SHA coins like Bitcoin
|
||||||
|
* scrypt : Scrypt based coins like Litecoin
|
||||||
|
* Default:
|
||||||
|
* scrypt : Scrypt is default
|
||||||
|
**/
|
||||||
|
$config['algorithm'] = 'scrypt';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Database configuration
|
* Database configuration
|
||||||
*
|
*
|
||||||
@ -308,21 +319,6 @@ $config['pps']['reward']['default'] = 50;
|
|||||||
$config['pps']['reward']['type'] = 'blockavg';
|
$config['pps']['reward']['type'] = 'blockavg';
|
||||||
$config['pps']['blockavg']['blockcount'] = 10;
|
$config['pps']['blockavg']['blockcount'] = 10;
|
||||||
|
|
||||||
/**
|
|
||||||
* Please note: Do NOT touch this if you are running MPOS in scrypt coins!
|
|
||||||
* The VARDIFF / Stratum Settings / Target Bits system can be VERY confusing
|
|
||||||
* so unless you have spend over 2 hours talking with pooler, do not edit this.
|
|
||||||
*
|
|
||||||
* I have added this here to allow SHA256 coins in the future. For now, leave it
|
|
||||||
* at 16!
|
|
||||||
*
|
|
||||||
* Default:
|
|
||||||
* 16 = Scrypt
|
|
||||||
* Options:
|
|
||||||
* 32 = SHA256
|
|
||||||
**/
|
|
||||||
$config['pps_target'] = 16;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Memcache configuration
|
* Memcache configuration
|
||||||
*
|
*
|
||||||
|
|||||||
@ -42,6 +42,7 @@ $aRoundShares = $statistics->getRoundShares();
|
|||||||
if ($config['payout_system'] != 'pps') {
|
if ($config['payout_system'] != 'pps') {
|
||||||
$aEstimates = $statistics->getUserEstimates($aRoundShares, $aUserRoundShares, $user->getUserDonatePercent($user_id), $user->getUserNoFee($user_id));
|
$aEstimates = $statistics->getUserEstimates($aRoundShares, $aUserRoundShares, $user->getUserDonatePercent($user_id), $user->getUserNoFee($user_id));
|
||||||
} else {
|
} else {
|
||||||
|
$dUnpaidShares = $statistics->getUserUnpaidPPSShares($user_id, $setting->getValue('pps_last_share_id'));
|
||||||
if ($config['pps']['reward']['type'] == 'blockavg' && $block->getBlockCount() > 0) {
|
if ($config['pps']['reward']['type'] == 'blockavg' && $block->getBlockCount() > 0) {
|
||||||
$pps_reward = round($block->getAvgBlockReward($config['pps']['blockavg']['blockcount']));
|
$pps_reward = round($block->getAvgBlockReward($config['pps']['blockavg']['blockcount']));
|
||||||
} else {
|
} else {
|
||||||
@ -56,7 +57,7 @@ if ($config['payout_system'] != 'pps') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$ppsvalue = round($pps_reward / (pow(2,32) * $dDifficulty) * pow(2, $config['pps_target']), 12);
|
$ppsvalue = round($pps_reward / (pow(2,32) * $dDifficulty) * pow(2, $config['target_bits']), 12);
|
||||||
$aEstimates = $statistics->getUserEstimates($dPersonalSharerate, $dPersonalShareDifficulty, $user->getUserDonatePercent($user_id), $user->getUserNoFee($user_id), $ppsvalue);
|
$aEstimates = $statistics->getUserEstimates($dPersonalSharerate, $dPersonalShareDifficulty, $user->getUserDonatePercent($user_id), $user->getUserNoFee($user_id), $ppsvalue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,7 +90,7 @@ $data = array(
|
|||||||
'raw' => array( 'personal' => array( 'hashrate' => $dPersonalHashrate ), 'pool' => array( 'hashrate' => $dPoolHashrate ), 'network' => array( 'hashrate' => $dNetworkHashrate / 1000 ) ),
|
'raw' => array( 'personal' => array( 'hashrate' => $dPersonalHashrate ), 'pool' => array( 'hashrate' => $dPoolHashrate ), 'network' => array( 'hashrate' => $dNetworkHashrate / 1000 ) ),
|
||||||
'personal' => array (
|
'personal' => array (
|
||||||
'hashrate' => $dPersonalHashrateAdjusted, 'sharerate' => $dPersonalSharerate, 'sharedifficulty' => $dPersonalShareDifficulty,
|
'hashrate' => $dPersonalHashrateAdjusted, 'sharerate' => $dPersonalSharerate, 'sharedifficulty' => $dPersonalShareDifficulty,
|
||||||
'shares' => array('valid' => $aUserRoundShares['valid'], 'invalid' => $aUserRoundShares['invalid'], 'invalid_percent' => $dUserInvalidPercent),
|
'shares' => array('valid' => $aUserRoundShares['valid'], 'invalid' => $aUserRoundShares['invalid'], 'invalid_percent' => $dUserInvalidPercent, 'unpaid' => $dUnpaidShares ),
|
||||||
'balance' => $transaction->getBalance($user_id), 'estimates' => $aEstimates, 'workers' => $aWorkers ),
|
'balance' => $transaction->getBalance($user_id), 'estimates' => $aEstimates, 'workers' => $aWorkers ),
|
||||||
'pool' => array(
|
'pool' => array(
|
||||||
'workers' => $worker->getCountAllActiveWorkers(), 'hashrate' => $dPoolHashrateAdjusted,
|
'workers' => $worker->getCountAllActiveWorkers(), 'hashrate' => $dPoolHashrateAdjusted,
|
||||||
|
|||||||
@ -140,7 +140,8 @@ if (@$_SESSION['USERDATA']['id']) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$aGlobal['ppsvalue'] = number_format(round($pps_reward / (pow(2, $config['pps_target']) * $dDifficulty), 12) ,12);
|
$aGlobal['userdata']['pps']['unpaidshares'] = $statistics->getUserUnpaidPPSShares($_SESSION['USERDATA']['id'], $setting->getValue('pps_last_share_id'));
|
||||||
|
$aGlobal['ppsvalue'] = number_format(round($pps_reward / (pow(2, $config['target_bits']) * $dDifficulty), 12) ,12);
|
||||||
$aGlobal['userdata']['sharedifficulty'] = $statistics->getUserShareDifficulty($_SESSION['USERDATA']['id']);
|
$aGlobal['userdata']['sharedifficulty'] = $statistics->getUserShareDifficulty($_SESSION['USERDATA']['id']);
|
||||||
$aGlobal['userdata']['estimates'] = $statistics->getUserEstimates($aGlobal['userdata']['sharerate'], $aGlobal['userdata']['sharedifficulty'], $aGlobal['userdata']['donate_percent'], $aGlobal['userdata']['no_fees'], $aGlobal['ppsvalue']);
|
$aGlobal['userdata']['estimates'] = $statistics->getUserEstimates($aGlobal['userdata']['sharerate'], $aGlobal['userdata']['sharedifficulty'], $aGlobal['userdata']['donate_percent'], $aGlobal['userdata']['no_fees'], $aGlobal['ppsvalue']);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -156,6 +156,7 @@ $(document).ready(function(){
|
|||||||
$('#b-fee').html((parseFloat(data.getdashboarddata.data.personal.estimates.fee).toFixed(4)));
|
$('#b-fee').html((parseFloat(data.getdashboarddata.data.personal.estimates.fee).toFixed(4)));
|
||||||
$('#b-donation').html((parseFloat(data.getdashboarddata.data.personal.estimates.donation).toFixed(4)));
|
$('#b-donation').html((parseFloat(data.getdashboarddata.data.personal.estimates.donation).toFixed(4)));
|
||||||
{/literal}{else}{literal}
|
{/literal}{else}{literal}
|
||||||
|
$('#b-ppsunpaid').html((parseFloat(data.getdashboarddata.data.personal.shares.unpaid).toFixed(0)));
|
||||||
$('#b-ppsdiff').html((parseFloat(data.getdashboarddata.data.personal.sharedifficulty).toFixed(2)));
|
$('#b-ppsdiff').html((parseFloat(data.getdashboarddata.data.personal.sharedifficulty).toFixed(2)));
|
||||||
$('#b-est1').html((parseFloat(data.getdashboarddata.data.personal.estimates.hours1).toFixed(8)));
|
$('#b-est1').html((parseFloat(data.getdashboarddata.data.personal.estimates.hours1).toFixed(8)));
|
||||||
$('#b-est24hours').html((parseFloat(data.getdashboarddata.data.personal.estimates.hours24).toFixed(8)));
|
$('#b-est24hours').html((parseFloat(data.getdashboarddata.data.personal.estimates.hours24).toFixed(8)));
|
||||||
|
|||||||
@ -9,6 +9,10 @@
|
|||||||
<td id="b-pplns" class="right"></td>
|
<td id="b-pplns" class="right"></td>
|
||||||
</tr>
|
</tr>
|
||||||
{elseif $GLOBAL.config.payout_system == 'pps'}
|
{elseif $GLOBAL.config.payout_system == 'pps'}
|
||||||
|
<tr>
|
||||||
|
<td><b>Unpaid Shares</b></td>
|
||||||
|
<td id="b-ppsunpaid">{$GLOBAL.userdata.pps.unpaidshares}</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><b>PPS Value</b></td>
|
<td><b>PPS Value</b></td>
|
||||||
<td>{$GLOBAL.ppsvalue}</td>
|
<td>{$GLOBAL.ppsvalue}</td>
|
||||||
|
|||||||
@ -103,14 +103,13 @@
|
|||||||
<td align="right">{$BLOCKSFOUND[block].difficulty|number_format:"2"}</td>
|
<td align="right">{$BLOCKSFOUND[block].difficulty|number_format:"2"}</td>
|
||||||
<td align="right">{$BLOCKSFOUND[block].amount|number_format:"2"}</td>
|
<td align="right">{$BLOCKSFOUND[block].amount|number_format:"2"}</td>
|
||||||
<td align="right">
|
<td align="right">
|
||||||
{math assign="estshares" equation="(pow(2,32 - targetdiff) * blockdiff)" targetdiff=$GLOBAL.config.targetdiff blockdiff=$BLOCKSFOUND[block].difficulty}
|
{assign var="totalexpectedshares" value=$totalexpectedshares+$BLOCKSFOUND[block].estshares}
|
||||||
{assign var="totalexpectedshares" value=$totalexpectedshares+$estshares}
|
{$BLOCKSFOUND[block].estshares|number_format}
|
||||||
{$estshares|number_format}
|
|
||||||
</td>
|
</td>
|
||||||
{if $GLOBAL.config.payout_system == 'pplns'}<td align="right">{$BLOCKSFOUND[block].pplns_shares|number_format}</td>{/if}
|
{if $GLOBAL.config.payout_system == 'pplns'}<td align="right">{$BLOCKSFOUND[block].pplns_shares|number_format}</td>{/if}
|
||||||
<td align="right">{$BLOCKSFOUND[block].shares|number_format}</td>
|
<td align="right">{$BLOCKSFOUND[block].shares|number_format}</td>
|
||||||
<td align="right" style="padding-right: 25px;">
|
<td align="right" style="padding-right: 25px;">
|
||||||
{math assign="percentage" equation="shares / estshares * 100" shares=$BLOCKSFOUND[block].shares estshares=$estshares}
|
{math assign="percentage" equation="shares / estshares * 100" shares=$BLOCKSFOUND[block].shares estshares=$BLOCKSFOUND[block].estshares}
|
||||||
{assign var="totalpercentage" value=$totalpercentage+$percentage}
|
{assign var="totalpercentage" value=$totalpercentage+$percentage}
|
||||||
<font color="{if ($percentage <= 100)}green{else}red{/if}">{$percentage|number_format:"2"}</font>
|
<font color="{if ($percentage <= 100)}green{else}red{/if}">{$percentage|number_format:"2"}</font>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user