added support for difficulty and blockreward

This commit is contained in:
Jerry Brady 2014-04-13 23:17:40 +00:00
parent 550b09767e
commit 93274f907b

View File

@ -1,6 +1,7 @@
var async = require('async'); var async = require('async');
var Poloniex = require('./apiPoloniex.js'); var Poloniex = require('./apiPoloniex.js');
var Stratum = require('stratum-pool');
module.exports = function(logger){ module.exports = function(logger){
@ -29,9 +30,6 @@ module.exports = function(logger){
symbol: poolConfig.coin.symbol, symbol: poolConfig.coin.symbol,
difficulty: 0, difficulty: 0,
reward: 0, reward: 0,
avgPrice: { BTC: 0, LTC: 0 },
avgDepth: { BTC: 0, LTC: 0 },
avgVolume: { BTC: 0, LTC: 0 },
prices: {}, prices: {},
depths: {}, depths: {},
volumes: {}, volumes: {},
@ -158,7 +156,7 @@ module.exports = function(logger){
} }
async.parallel(depthTasks, function(err){ async.parallel(depthTasks, function(err){
if (err){ if (err){
logger.error(logSystem, 'Check', 'Error while checking profitability: ' + err); taskCallback(err);
return; return;
} }
taskCallback(); taskCallback();
@ -207,13 +205,67 @@ module.exports = function(logger){
callback(null); callback(null);
}; };
this.getCoindDaemonInfo = function(callback){
var daemonTasks = [];
Object.keys(profitStatus).forEach(function(algo){
Object.keys(profitStatus[algo]).forEach(function(symbol){
var coinName = profitStatus[algo][symbol].name;
var poolConfig = poolConfigs[coinName];
var daemonConfig = poolConfig.shareProcessing.internal.daemon;
daemonTasks.push(function(callback){
_this.getDaemonInfoForCoin(symbol, daemonConfig, callback)
});
});
});
if (daemonTasks.length == 0){
callback();
return;
}
async.parallel(daemonTasks, function(err){
if (err){
callback(err);
return;
}
callback(null);
});
};
this.getDaemonInfoForCoin = function(symbol, cfg, callback){
var daemon = new Stratum.daemon.interface([cfg]);
daemon.once('online', function(){
daemon.cmd('getdifficulty', null, function(result){
if (result[0].error != null){
callback(result[0].error);
return;
}
profitStatus[profitSymbols[symbol]][symbol].difficulty = result[0].response;
daemon.cmd('getblocktemplate',
[{"capabilities": [ "coinbasetxn", "workid", "coinbase/append" ]}],
function(result){
if (result[0].error != null){
callback(result[0].error);
return;
}
profitStatus[profitSymbols[symbol]][symbol].reward = new Number(result[0].response.coinbasevalue / 100000000);
});
callback(null)
});
}).once('connectionFailed', function(error){
callback(error);
}).on('error', function(error){
callback(error);
}).init();
};
var checkProfitability = function(){ var checkProfitability = function(){
logger.debug(logSystem, 'Check', 'Running profitability checks.'); logger.debug(logSystem, 'Check', 'Running mining profitability check.');
async.parallel([ async.parallel([
_this.getProfitDataPoloniex, _this.getProfitDataPoloniex,
_this.getProfitDataCryptsy _this.getProfitDataCryptsy,
_this.getCoindDaemonInfo
], function(err){ ], function(err){
if (err){ if (err){
logger.error(logSystem, 'Check', 'Error while checking profitability: ' + err); logger.error(logSystem, 'Check', 'Error while checking profitability: ' + err);