Fixed hashrate calculation by adding share multiplier per algo

This commit is contained in:
Matt 2014-03-20 00:43:15 -06:00
parent 67a86e5a21
commit 80ec2e8bca
2 changed files with 11 additions and 4 deletions

View File

@ -20,7 +20,7 @@
"enabled": true, "enabled": true,
"siteTitle": "Cryppit", "siteTitle": "Cryppit",
"port": 80, "port": 80,
"statUpdateInterval": 5, "statUpdateInterval": 3,
"hashrateWindow": 600 "hashrateWindow": 600
}, },
"proxy": { "proxy": {

View File

@ -10,6 +10,11 @@ module.exports = function(logger, portalConfig, poolConfigs){
var redisClients = []; var redisClients = [];
var algoMultipliers = {
'scrypt': Math.pow(2, 16),
'sha256': Math.pow(2, 32)
};
Object.keys(poolConfigs).forEach(function(coin){ Object.keys(poolConfigs).forEach(function(coin){
var poolConfig = poolConfigs[coin]; var poolConfig = poolConfigs[coin];
var internalConfig = poolConfig.shareProcessing.internal; var internalConfig = poolConfig.shareProcessing.internal;
@ -37,13 +42,13 @@ module.exports = function(logger, portalConfig, poolConfigs){
var allCoinStats = []; var allCoinStats = [];
async.each(redisClients, function(client, callback){ async.each(redisClients, function(client, callback){
var windowTime = (Date.now() / 1000 | 0) - portalConfig.website.hashrateWindow; var windowTime = (((Date.now() / 1000) - portalConfig.website.hashrateWindow) | 0).toString();
var redisCommands = []; var redisCommands = [];
var commandsPerCoin = 4; var commandsPerCoin = 4;
//Clear out old hashrate stats for each coin from redis //Clear out old hashrate stats for each coin from redis
client.coins.forEach(function(coin){ client.coins.forEach(function(coin){
redisCommands.push(['zremrangebyscore', coin + '_hashrate', '-inf', windowTime]); redisCommands.push(['zremrangebyscore', coin + '_hashrate', '-inf', '(' + windowTime]);
redisCommands.push(['zrangebyscore', coin + '_hashrate', windowTime, '+inf']); redisCommands.push(['zrangebyscore', coin + '_hashrate', windowTime, '+inf']);
redisCommands.push(['hgetall', coin + '_stats']); redisCommands.push(['hgetall', coin + '_stats']);
redisCommands.push(['scard', coin + '_blocks']); redisCommands.push(['scard', coin + '_blocks']);
@ -97,7 +102,9 @@ module.exports = function(logger, portalConfig, poolConfigs){
else else
coinStats.workers[worker] = workerShares coinStats.workers[worker] = workerShares
}); });
coinStats.hashrate = (coinStats.shares * 4294967296 / portalConfig.website.hashrateWindow) / 100000000 | 0; var shareMultiplier = algoMultipliers[poolConfigs[coinStats.coinName].coin.algorithm];
var hashratePre = shareMultiplier * coinStats.shares / portalConfig.website.hashrateWindow;
coinStats.hashrate = hashratePre / 1e3 | 0;
delete coinStats.hashrates; delete coinStats.hashrates;
portalStats.global.hashrate += coinStats.hashrate; portalStats.global.hashrate += coinStats.hashrate;
portalStats.global.workers += Object.keys(coinStats.workers).length; portalStats.global.workers += Object.keys(coinStats.workers).length;