added blocknotify functionality

This commit is contained in:
Matthew Little 2014-01-11 14:25:57 -05:00
parent f6b512168b
commit 43517a8824
4 changed files with 43 additions and 17 deletions

View File

@ -88,12 +88,12 @@ Installation
[path to blockNotify.js]
[pool host]:[pool blockNotifyListener port]
[blockNotifyListener password]
[coin symbole set in coin's json config]
[coin symbol set in coin's json config]
%s"
```
* Example: `dogecoind -blocknotify="blockNotify.js localhost:8117 mySuperSecurePassword doge %s"`
* If your daemon is on a different host you will have to copy the `blockNotify.js` to it
* If your daemon is on a different host you will have to copy over `blockNotify.js`
* To start the poolserver run:

View File

@ -14,6 +14,7 @@ var client = net.connect(port, host, function() {
console.log('client connected');
client.write(JSON.stringify({
password: password,
coin: coin,
blockHash: blockHash
}) + '\n');
});

11
init.js
View File

@ -54,6 +54,17 @@ if (config.blockNotifyListener.enabled){
});
c.on('end', function() {
console.log(data);
var message = JSON.parse(data);
if (message.password === config.blockNotifyListener.password){
coins.forEach(function(coin){
if (coin.options.symbol === message.coin){
coin.pool.processBlockNotify(message.blockHash);
return false;
}
});
}
console.log('server disconnected');
});
});

44
pool.js
View File

@ -44,21 +44,7 @@ var pool = module.exports = function pool(coin){
this.daemon = new daemon.interface(coin.options.daemon);
this.daemon.on('online', function(){
async.parallel({
rpcTemplate: function(callback){
_this.daemon.cmd('getblocktemplate',
[{"capabilities": [ "coinbasetxn", "workid", "coinbase/append" ]}],
function(error, result){
if (error){
console.log('getblocktemplate rpc error for ' + coin.options.name);
callback(error);
}
else{
//result = JSON.parse(fs.readFileSync('example.json'));
callback(null, result);
}
}
);
},
rpcTemplate: GetBlockTemplate,
addressInfo: function(callback){
_this.daemon.cmd('validateaddress',
[coin.options.address],
@ -144,5 +130,33 @@ var pool = module.exports = function pool(coin){
});
});
}
function GetBlockTemplate(callback){
_this.daemon.cmd('getblocktemplate',
[{"capabilities": [ "coinbasetxn", "workid", "coinbase/append" ]}],
function(error, result){
if (error){
console.log('getblocktemplate rpc error for ' + coin.options.name);
callback(error);
}
else{
callback(null, result);
}
}
);
}
this.processBlockNotify = function(blockHash){
if (blockHash !== _this.jobManager.currentJob.rpcData.previousblockhash){
GetBlockTemplate(function(error, result){
if (error){
console.log('Error getting block template for ' + coin.options.name);
return;
}
_this.jobManager.newTemplate(result, publicKeyBuffer);
})
}
}
};
pool.prototype.__proto__ = events.EventEmitter.prototype;