From 585baf7b929c7ad04b4ca0fe40caaa6b7bb05a16 Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 9 Mar 2014 20:32:24 -0600 Subject: [PATCH] Added tx to share emit --- README.md | 5 +++++ lib/pool.js | 13 +++++++++---- lib/stratum.js | 9 ++++++--- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index d26f14c..3aa0f83 100644 --- a/README.md +++ b/README.md @@ -188,8 +188,13 @@ Listen to pool events difficulty: 64, //stratum client difficulty height: 443795, //block height networkDifficulty: 3349 //network difficulty for this block + //solution is set if block was found solution: '110c0447171ad819dd181216d5d80f41e9218e25d833a2789cb8ba289a52eee4', + + //tx is the coinbase transaction hash from the block + tx: '41bb22d6cc409f9c0bae2c39cecd2b3e3e1be213754f23d12c5d6d2003d59b1d, + error: 'low share difficulty' //set if share is rejected for some reason */ pool.on('share', function(isValidShare, isValidBlock, data){ diff --git a/lib/pool.js b/lib/pool.js index dbedcb8..70792e8 100644 --- a/lib/pool.js +++ b/lib/pool.js @@ -163,8 +163,9 @@ var pool = module.exports = function pool(options, authorizeFn){ emitShare(); else{ SubmitBlock(blockHex, function(){ - CheckBlockAccepted(shareData.solution, function(isAccepted){ + CheckBlockAccepted(shareData.solution, function(isAccepted, tx){ isValidBlock = isAccepted; + shareData.tx = tx; emitShare(); }); }); @@ -421,9 +422,13 @@ var pool = module.exports = function pool(options, authorizeFn){ _this.daemon.cmd('getblock', [blockHash], function(results){ - if (results.filter(function(result){return result.response && - (result.response.hash === blockHash)}).length >= 1){ - callback(true); + + var validResults = results.filter(function(result){ + return result.response && (result.response.hash === blockHash) + }); + + if (validResults.length >= 1){ + callback(true, validResults[0].response.tx[0]); } else{ callback(false); diff --git a/lib/stratum.js b/lib/stratum.js index 77755ca..cfec141 100644 --- a/lib/stratum.js +++ b/lib/stratum.js @@ -337,8 +337,10 @@ var StratumServer = exports.Server = function StratumServer(ports, connectionTim (function init(){ + var serversStarted = 0; + Object.keys(ports).forEach(function(port){ - net.createServer({allowHalfOpen: true}, function(socket){ + net.createServer({allowHalfOpen: false}, function(socket){ if (banning.enabled && socket.remoteAddress in bannedIPs){ var bannedTime = bannedIPs[socket.remoteAddress]; @@ -353,7 +355,9 @@ var StratumServer = exports.Server = function StratumServer(ports, connectionTim handleNewClient(socket); }).listen(parseInt(port), function(){ - _this.emit('started'); + serversStarted++; + if (serversStarted === Object.keys(ports).length) + _this.emit('started'); }); }); @@ -380,7 +384,6 @@ var StratumServer = exports.Server = function StratumServer(ports, connectionTim So every time broadcast jobs, we set a timeout to rebroadcast in 30 seconds unless cleared. */ clearTimeout(rebroadcastTimeout); rebroadcastTimeout = setTimeout(function(){ - console.log('resent jobs'); var resendParams = jobParams; resendParams[8] = false; _this.broadcastMiningJobs(resendParams);