From a56df7a50f8183d9920706d1429eb04b982b1346 Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Thu, 27 Feb 2014 12:13:56 +0100 Subject: [PATCH 1/3] [ADDED] Hashrate modifier name and value * [ADDED] Hashrate modifier value to getnavbardata * [ADDED] Hashrate modifier name to getnavbardata Fixes #1845 once merged. --- public/include/pages/api/getnavbardata.inc.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/public/include/pages/api/getnavbardata.inc.php b/public/include/pages/api/getnavbardata.inc.php index f043a7c1..aa83986e 100644 --- a/public/include/pages/api/getnavbardata.inc.php +++ b/public/include/pages/api/getnavbardata.inc.php @@ -37,6 +37,9 @@ $dPoolHashrate = $statistics->getCurrentHashrate($interval); if ($dPoolHashrate > $dNetworkHashrate) $dNetworkHashrate = $dPoolHashrate; $statistics->setGetCache(true); +// Small helper +$aHashunits = array( '1' => 'KH/s', '0.001' => 'MH/s', '0.000001' => 'GH/s', '0.000000001' => 'TH/s' ); + // Apply pool modifiers $dPoolHashrateAdjusted = $dPoolHashrate * $dPoolHashrateModifier; $dNetworkHashrateAdjusted = $dNetworkHashrate / 1000 * $dNetworkHashrateModifier; @@ -63,8 +66,8 @@ if ($iEstShares > 0 && $aRoundShares['valid'] > 0) { // Output JSON format $data = array( 'raw' => array( 'workers' => $worker->getCountAllActiveWorkers(), 'pool' => array( 'hashrate' => $dPoolHashrate ) ), - 'pool' => array( 'workers' => $worker->getCountAllActiveWorkers(), 'hashrate' => $dPoolHashrateAdjusted, 'estimated' => $iEstShares, 'progress' => $dEstPercent ), - 'network' => array( 'hashrate' => $dNetworkHashrateAdjusted, 'difficulty' => $dDifficulty, 'block' => $iBlock ), + 'pool' => array( 'hashratemodifiername' => $aHashunits[$dPoolHashrateModifier], 'hashratemodifier' => $dPoolHashrateModifier, 'workers' => $worker->getCountAllActiveWorkers(), 'hashrate' => $dPoolHashrateAdjusted, 'estimated' => $iEstShares, 'progress' => $dEstPercent ), + 'network' => array( 'hashratemodifiername' => $aHashunits[$dNetworkHashrateModifier], 'hashratemodifier' => $dNetworkHashrateModifier, 'hashrate' => $dNetworkHashrateAdjusted, 'difficulty' => $dDifficulty, 'block' => $iBlock ), ); echo $api->get_json($data); From 0d297309ced1a7b3008f96461ea0bd65cd78d1a3 Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Thu, 27 Feb 2014 15:06:17 +0100 Subject: [PATCH 2/3] [FIX] Apply proper fee on auto-payouts Thanks IRC blonkel for the heads up. --- cronjobs/payouts.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cronjobs/payouts.php b/cronjobs/payouts.php index 87c6bb6e..e38754a9 100755 --- a/cronjobs/payouts.php +++ b/cronjobs/payouts.php @@ -168,13 +168,13 @@ if ($setting->getValue('disable_auto_payouts') != 1 && $aAutoPayouts) { $rpc_txid = NULL; $log->logInfo(sprintf($mask, $aUserData['id'], $aUserData['username'], $aUserData['confirmed'], $aUserData['coin_address'], $aUserData['ap_threshold'])); if ($bitcoin->validateaddress($aUserData['coin_address'])) { - if (!$transaction_id = $transaction->createDebitAPRecord($aUserData['id'], $aUserData['coin_address'], $aUserData['confirmed'] - $config['txfee_manual'])) { + if (!$transaction_id = $transaction->createDebitAPRecord($aUserData['id'], $aUserData['coin_address'], $aUserData['confirmed'] - $config['txfee_auto'])) { $log->logFatal(' failed to fully debit user ' . $aUserData['username'] . ': ' . $transaction->getCronError()); $monitoring->endCronjob($cron_name, 'E0064', 1, true); } else if (!$config['sendmany']['enabled'] || !$sendmanyAvailable) { // Run the payouts from RPC now that the user is fully debited try { - $rpc_txid = $bitcoin->sendtoaddress($aUserData['coin_address'], $aUserData['confirmed'] - $config['txfee_manual']); + $rpc_txid = $bitcoin->sendtoaddress($aUserData['coin_address'], $aUserData['confirmed'] - $config['txfee_auto']); } catch (Exception $e) { $log->logError('E0078: RPC method did not return 200 OK: Address: ' . $aUserData['coin_address'] . ' ERROR: ' . $e->getMessage()); // Remove this line below if RPC calls are failing but transactions are still added to it From 576f1910657ea6bb1e1186ee5ca8d2f793db0542 Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Thu, 27 Feb 2014 15:16:28 +0100 Subject: [PATCH 3/3] [IMPROVED] Deduct TXFEE in Transaction CreateDebit No need to deduct the fees on our cronjob, do it automatically in our transaction class when creating a Debit record. --- cronjobs/payouts.php | 4 ++-- public/include/classes/transaction.class.php | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/cronjobs/payouts.php b/cronjobs/payouts.php index e38754a9..23730052 100755 --- a/cronjobs/payouts.php +++ b/cronjobs/payouts.php @@ -85,7 +85,7 @@ if ($setting->getValue('disable_manual_payouts') != 1 && $aManualPayouts) { $monitoring->endCronjob($cron_name, 'E0010', 1, true); } if ($bitcoin->validateaddress($aUserData['coin_address'])) { - if (!$transaction_id = $transaction->createDebitMPRecord($aUserData['id'], $aUserData['coin_address'], $aUserData['confirmed'] - $config['txfee_manual'])) { + if (!$transaction_id = $transaction->createDebitMPRecord($aUserData['id'], $aUserData['coin_address'], $aUserData['confirmed'])) { $log->logFatal(' failed to fullt debit user ' . $aUserData['username'] . ': ' . $transaction->getCronError()); $monitoring->endCronjob($cron_name, 'E0064', 1, true); } else if (!$config['sendmany']['enabled'] || !$sendmanyAvailable) { @@ -168,7 +168,7 @@ if ($setting->getValue('disable_auto_payouts') != 1 && $aAutoPayouts) { $rpc_txid = NULL; $log->logInfo(sprintf($mask, $aUserData['id'], $aUserData['username'], $aUserData['confirmed'], $aUserData['coin_address'], $aUserData['ap_threshold'])); if ($bitcoin->validateaddress($aUserData['coin_address'])) { - if (!$transaction_id = $transaction->createDebitAPRecord($aUserData['id'], $aUserData['coin_address'], $aUserData['confirmed'] - $config['txfee_auto'])) { + if (!$transaction_id = $transaction->createDebitAPRecord($aUserData['id'], $aUserData['coin_address'], $aUserData['confirmed'])) { $log->logFatal(' failed to fully debit user ' . $aUserData['username'] . ': ' . $transaction->getCronError()); $monitoring->endCronjob($cron_name, 'E0064', 1, true); } else if (!$config['sendmany']['enabled'] || !$sendmanyAvailable) { diff --git a/public/include/classes/transaction.class.php b/public/include/classes/transaction.class.php index a7f48be2..fab7cf57 100644 --- a/public/include/classes/transaction.class.php +++ b/public/include/classes/transaction.class.php @@ -334,7 +334,9 @@ class Transaction extends Base { return $this->createDebitRecord($account_id, $coin_address, $amount, 'Debit_AP'); } private function createDebitRecord($account_id, $coin_address, $amount, $type) { + // Calculate and deduct txfee from amount $type == 'Debit_MP' ? $txfee = $this->config['txfee_manual'] : $txfee = $this->config['txfee_auto']; + $amount = $amount - $txfee; // Add Debit record if (!$this->addTransaction($account_id, $amount, $type, NULL, $coin_address, NULL)) { $this->setErrorMessage('Failed to create ' . $type . ' transaction record in database'); @@ -366,7 +368,7 @@ class Transaction extends Base { // Notify user via mail $aMailData['email'] = $this->user->getUserEmailById($account_id); $aMailData['subject'] = $type . ' Completed'; - $aMailData['amount'] = $amount - $txfee; + $aMailData['amount'] = $amount; if (!$this->notification->sendNotification($account_id, 'payout', $aMailData)) { $this->setErrorMessage('Failed to send notification email to users address: ' . $aMailData['email'] . 'ERROR: ' . $this->notification->getCronError()); }