Added random or configurable instance ID

This commit is contained in:
Matt 2014-02-19 15:53:36 -07:00
parent 90bdc9a250
commit 96cfc412a8

View File

@ -1,4 +1,5 @@
var events = require('events');
var crypto = require('crypto');
var bignum = require('bignum');
@ -14,18 +15,17 @@ var blockTemplate = require('./blockTemplate.js');
//Unique extranonce per subscriber
var ExtraNonceCounter = function(){
var instanceId = 31;
var ExtraNonceCounter = function(configInstanceId){
var instanceId = configInstanceId || crypto.randomBytes(4).readUInt32LE(0);
var counter = instanceId << 27;
var size = util.packUInt32BE(counter).length;
this.next = function(){
var extraNonce = util.packUInt32BE(counter++);
var extraNonce = util.packUInt32BE(Math.abs(counter++));
return extraNonce.toString('hex');
};
this.size = function(){
return size;
};
this.size = 4; //bytes
};
//Unique job per new block template
@ -126,7 +126,7 @@ var JobManager = module.exports = function JobManager(options){
//public members
this.extraNonceCounter = new ExtraNonceCounter();
this.extraNonceCounter = new ExtraNonceCounter(options.instanceId);
this.extraNoncePlaceholder = new Buffer('f000000ff111111f', 'hex');
this.extraNonce2Size = this.extraNoncePlaceholder.length - this.extraNonceCounter.size();